{
  "_format": "hh-sol-artifact-1",
  "contractName": "StableSwap",
  "sourceName": "contracts/core/connext/helpers/StableSwap.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "tokenAmounts",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "fees",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "invariant",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpTokenSupply",
          "type": "uint256"
        }
      ],
      "name": "AddLiquidity",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newAdminFee",
          "type": "uint256"
        }
      ],
      "name": "NewAdminFee",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newSwapFee",
          "type": "uint256"
        }
      ],
      "name": "NewSwapFee",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newWithdrawFee",
          "type": "uint256"
        }
      ],
      "name": "NewWithdrawFee",
      "type": "event"
    },
    {
      "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": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldA",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newA",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "initialTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "futureTime",
          "type": "uint256"
        }
      ],
      "name": "RampA",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "tokenAmounts",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpTokenSupply",
          "type": "uint256"
        }
      ],
      "name": "RemoveLiquidity",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "tokenAmounts",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "fees",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "invariant",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpTokenSupply",
          "type": "uint256"
        }
      ],
      "name": "RemoveLiquidityImbalance",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpTokenAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lpTokenSupply",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "boughtId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokensBought",
          "type": "uint256"
        }
      ],
      "name": "RemoveLiquidityOne",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "currentA",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "time",
          "type": "uint256"
        }
      ],
      "name": "StopRampA",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "initialA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "futureA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "initialATime",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "futureATime",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "swapFee",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "adminFee",
              "type": "uint256"
            },
            {
              "internalType": "contract LPToken",
              "name": "lpToken",
              "type": "address"
            },
            {
              "internalType": "contract IERC20[]",
              "name": "pooledTokens",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "tokenPrecisionMultipliers",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "balances",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "adminFees",
              "type": "uint256[]"
            }
          ],
          "indexed": false,
          "internalType": "struct SwapUtilsExternal.Swap",
          "name": "swap",
          "type": "tuple"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "SwapInitialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "buyer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokensSold",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokensBought",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "soldId",
          "type": "uint128"
        },
        {
          "indexed": false,
          "internalType": "uint128",
          "name": "boughtId",
          "type": "uint128"
        }
      ],
      "name": "TokenSwap",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "minToMint",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "addLiquidity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "calculateRemoveLiquidity",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "tokenIndex",
          "type": "uint8"
        }
      ],
      "name": "calculateRemoveLiquidityOneToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "availableTokenAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "tokenIndexFrom",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "tokenIndexTo",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "dx",
          "type": "uint256"
        }
      ],
      "name": "calculateSwap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "assetIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "assetOut",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "name": "calculateSwapFromAddress",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "tokenIndexFrom",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "tokenIndexTo",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "dy",
          "type": "uint256"
        }
      ],
      "name": "calculateSwapOut",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "assetIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "assetOut",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "name": "calculateSwapOutFromAddress",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bool",
          "name": "deposit",
          "type": "bool"
        }
      ],
      "name": "calculateTokenAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getA",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAPrecise",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getAdminBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "index",
          "type": "uint8"
        }
      ],
      "name": "getToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "index",
          "type": "uint8"
        }
      ],
      "name": "getTokenBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "getTokenIndex",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getVirtualPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20[]",
          "name": "_pooledTokens",
          "type": "address[]"
        },
        {
          "internalType": "uint8[]",
          "name": "decimals",
          "type": "uint8[]"
        },
        {
          "internalType": "string",
          "name": "lpTokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "lpTokenSymbol",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "_a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_fee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_adminFee",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "lpTokenTargetAddress",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "futureA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "futureTime",
          "type": "uint256"
        }
      ],
      "name": "rampA",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256[]",
          "name": "minAmounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "removeLiquidity",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "maxBurnAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "removeLiquidityImbalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "tokenIndex",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "minAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "removeLiquidityOneToken",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newAdminFee",
          "type": "uint256"
        }
      ],
      "name": "setAdminFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newSwapFee",
          "type": "uint256"
        }
      ],
      "name": "setSwapFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stopRampA",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "tokenIndexFrom",
          "type": "uint8"
        },
        {
          "internalType": "uint8",
          "name": "tokenIndexTo",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "dx",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "minDy",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swap",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "assetIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "assetOut",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "minAmountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapExact",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "assetIn",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "assetOut",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "maxAmountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        }
      ],
      "name": "swapExactOut",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "swapStorage",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "initialA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "futureA",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "initialATime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "futureATime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "swapFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "adminFee",
          "type": "uint256"
        },
        {
          "internalType": "contract LPToken",
          "name": "lpToken",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdrawAdminFees",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50612ce5806100206000396000f3fe6080604052600436106101f95760003560e01c80638456cb591161010d578063c4db7fa0116100a0578063e6ab28061161006f578063e6ab2806146105d1578063ef0a712f146105f1578063f2fad2b614610611578063f2fde38b14610631578063f9a15fb91461065157600080fd5b8063c4db7fa01461057f578063d460f0a214610594578063d46300fd146105a7578063e25aa5fa146105bc57600080fd5b806391695586116100dc57806391695586146104ff57806391ceb3eb1461051f578063a95b089f1461053f578063b28cb6dc1461055f57600080fd5b80638456cb591461048c57806384cdd9bc146104a15780638beb60b6146104c15780638da5cb5b146104e157600080fd5b80635428c1171161019057806366c0bd241161015f57806366c0bd24146103cd5780636b1dc08b146103ff578063715018a61461041f5780637f41e7ef1461043457806382b866001461045457600080fd5b80635428c117146102ff578063593d132c146103125780635c975abb146103325780635fd65f0f1461035557600080fd5b806334e19907116101cc57806334e199071461028a5780633e3a1560146102aa5780633f4ba83a146102ca5780634d49e87d146102df57600080fd5b80630419b45a146101fe5780630ba819591461021557806331cd52b01461023d578063342a87a11461026a575b600080fd5b34801561020a57600080fd5b50610213610671565b005b34801561022157600080fd5b5061022a610718565b6040519081526020015b60405180910390f35b34801561024957600080fd5b5061025d610258366004612170565b610795565b60405161023491906121c3565b34801561027657600080fd5b5061022a610285366004612218565b610869565b34801561029657600080fd5b506102136102a5366004612244565b6108f9565b3480156102b657600080fd5b5061022a6102c536600461225d565b61096f565b3480156102d657600080fd5b50610213610a2e565b3480156102eb57600080fd5b5061022a6102fa366004612298565b610a3e565b61022a61030d366004612309565b610aaf565b34801561031e57600080fd5b5061021361032d36600461235b565b610ba9565b34801561033e57600080fd5b5060655460ff166040519015158152602001610234565b34801561036157600080fd5b5060fb5460fc5460fd5460fe5460ff54610100546101015461038f969594939291906001600160a01b031687565b604080519788526020880196909652948601939093526060850191909152608084015260a08301526001600160a01b031660c082015260e001610234565b3480156103d957600080fd5b506103ed6103e836600461237d565b610c26565b60405160ff9091168152602001610234565b34801561040b57600080fd5b5061022a61041a36600461239a565b610c9e565b34801561042b57600080fd5b50610213610d38565b34801561044057600080fd5b5061022a61044f3660046123d6565b610d4a565b34801561046057600080fd5b5061047461046f366004612417565b610dfd565b6040516001600160a01b039091168152602001610234565b34801561049857600080fd5b50610213610e77565b3480156104ad57600080fd5b5061022a6104bc366004612298565b610e87565b3480156104cd57600080fd5b506102136104dc366004612244565b610ef8565b3480156104ed57600080fd5b506033546001600160a01b0316610474565b34801561050b57600080fd5b5061022a61051a366004612432565b610f3f565b34801561052b57600080fd5b5061022a61053a366004612417565b611012565b34801561054b57600080fd5b5061022a61055a36600461239a565b611089565b34801561056b57600080fd5b5061021361057a366004612630565b6110dc565b34801561058b57600080fd5b506102136118de565b61022a6105a2366004612309565b61194b565b3480156105b357600080fd5b5061022a6119f0565b3480156105c857600080fd5b5061022a611a2b565b3480156105dd57600080fd5b5061022a6105ec366004612719565b611a66565b3480156105fd57600080fd5b5061022a61060c366004612244565b611aa7565b34801561061d57600080fd5b5061025d61062c366004612244565b611b25565b34801561063d57600080fd5b5061021361064c36600461237d565b611ba7565b34801561065d57600080fd5b5061022a61066c3660046123d6565b611c20565b610679611c8c565b610681611ce5565b73__$0399e8fdab399fb8f200f3895472e3787c$__639cbd240660fb6106af6033546001600160a01b031690565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156106f457600080fd5b505af4158015610708573d6000803e3d6000fd5b50505050610716600160c955565b565b60405163f43dee5360e01b815260fb600482015260009073__$0399e8fdab399fb8f200f3895472e3787c$__9063f43dee53906024015b602060405180830381865af415801561076c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107909190612770565b905090565b606061079f611c8c565b6107a7611d46565b81804211156107d15760405162461bcd60e51b81526004016107c890612789565b60405180910390fd5b604051631beec94360e21b815273__$0399e8fdab399fb8f200f3895472e3787c$__90636fbb250c9061080f9060fb908a908a908a906004016127e5565b600060405180830381865af415801561082c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108549190810190612805565b915050610861600160c955565b949350505050565b6040516384eeef2760e01b815260fb60048201526024810183905260ff8216604482015260009073__$0399e8fdab399fb8f200f3895472e3787c$__906384eeef2790606401602060405180830381865af41580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f09190612770565b90505b92915050565b610901611ce5565b604051632cecccb560e11b815260fb60048201526024810182905273__$0399e8fdab399fb8f200f3895472e3787c$__906359d9996a906044015b60006040518083038186803b15801561095457600080fd5b505af4158015610968573d6000803e3d6000fd5b5050505050565b6000610979611c8c565b610981611d46565b81804211156109a25760405162461bcd60e51b81526004016107c890612789565b604051632b8ffbb760e21b815260fb60048201526024810187905260ff861660448201526064810185905273__$0399e8fdab399fb8f200f3895472e3787c$__9063ae3feedc906084015b602060405180830381865af4158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108549190612770565b610a36611ce5565b610716611d8c565b6000610a48611c8c565b610a50611d46565b8180421115610a715760405162461bcd60e51b81526004016107c890612789565b6040516333a43f9560e11b815273__$0399e8fdab399fb8f200f3895472e3787c$__906367487f2a906109ed9060fb908a908a908a90600401612896565b6000610ab9611c8c565b610ac1611d46565b8180421115610ae25760405162461bcd60e51b81526004016107c890612789565b6000610aed87610c26565b90506000610afa87610c26565b60405163703c02d560e11b815260fb600482015260ff808516602483015282166044820152606481018b90526084810188905290915073__$0399e8fdab399fb8f200f3895472e3787c$__9063e07805aa9060a4015b602060405180830381865af4158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190612770565b9350505050610ba0600160c955565b95945050505050565b610bb1611ce5565b604051633f1e106160e21b815260fb6004820152602481018390526044810182905273__$0399e8fdab399fb8f200f3895472e3787c$__9063fc7841849060640160006040518083038186803b158015610c0a57600080fd5b505af4158015610c1e573d6000803e3d6000fd5b505050505050565b6001600160a01b03811660008181526101066020526040812054909160ff90911690610c5182610dfd565b6001600160a01b0316146108f35760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b60448201526064016107c8565b604051632e4be8d760e21b815260fb600482015260ff8085166024830152831660448201526064810182905260009073__$0399e8fdab399fb8f200f3895472e3787c$__9063b92fa35c906084015b602060405180830381865af4158015610d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2e9190612770565b90505b9392505050565b610d40611ce5565b6107166000611dde565b600080610d5685610c26565b90506000610d6385610c26565b604051632f4998ad60e01b815260fb600482015260ff8085166024830152821660448201526064810186905290915073__$0399e8fdab399fb8f200f3895472e3787c$__90632f4998ad906084015b602060405180830381865af4158015610dcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df39190612770565b9695505050505050565b6101025460009060ff831610610e445760405162461bcd60e51b815260206004820152600c60248201526b4f7574206f662072616e676560a01b60448201526064016107c8565b610102805460ff8416908110610e5c57610e5c6128c1565b6000918252602090912001546001600160a01b031692915050565b610e7f611ce5565b610716611e30565b6000610e91611c8c565b610e99611d46565b8180421115610eba5760405162461bcd60e51b81526004016107c890612789565b60405163077b83d360e41b815273__$0399e8fdab399fb8f200f3895472e3787c$__906377b83d30906109ed9060fb908a908a908a90600401612896565b610f00611ce5565b6040516308bbaa2360e01b815260fb60048201526024810182905273__$0399e8fdab399fb8f200f3895472e3787c$__906308bbaa239060440161093c565b6000610f49611c8c565b610f51611d46565b8180421115610f725760405162461bcd60e51b81526004016107c890612789565b60405163f204293960e01b815260fb600482015260ff808916602483015287166044820152606481018690526084810185905273__$0399e8fdab399fb8f200f3895472e3787c$__9063f20429399060a401602060405180830381865af4158015610fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110059190612770565b915050610ba0600160c955565b6101025460009060ff83161061105f5760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b60448201526064016107c8565b610104805460ff8416908110611077576110776128c1565b90600052602060002001549050919050565b604051632f4998ad60e01b815260fb600482015260ff8085166024830152831660448201526064810182905260009073__$0399e8fdab399fb8f200f3895472e3787c$__90632f4998ad90608401610ced565b600054610100900460ff16158080156110fc5750600054600160ff909116105b806111165750303b158015611116575060005460ff166001145b6111795760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107c8565b6000805460ff19166001179055801561119c576000805461ff0019166101001790555b6111a4611e6d565b6111ac611eac565b88516111ba600160026128ed565b81116112125760405162461bcd60e51b815260206004820152602160248201527f5f706f6f6c6564546f6b656e732e6c656e67746820696e73756666696369656e6044820152601d60fa1b60648201526084016107c8565b61121e60106001612900565b811061126c5760405162461bcd60e51b815260206004820152601e60248201527f5f706f6f6c6564546f6b656e732e6c656e67746820746f6f206c61726765000060448201526064016107c8565b885181146112bc5760405162461bcd60e51b815260206004820152601f60248201527f5f706f6f6c6564546f6b656e7320646563696d616c73206d69736d617463680060448201526064016107c8565b6000895167ffffffffffffffff8111156112d8576112d861247f565b604051908082528060200260200182016040528015611301578160200160208202803683370190505b50905060005b8281101561157f5780156113e45761010660008d838151811061132c5761132c6128c1565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161580156113a557508b818151811061136d5761136d6128c1565b60200260200101516001600160a01b03168c600081518110611391576113916128c1565b60200260200101516001600160a01b031614155b6113e45760405162461bcd60e51b815260206004820152601060248201526f4475706c696361746520746f6b656e7360801b60448201526064016107c8565b60006001600160a01b03168c8281518110611401576114016128c1565b60200260200101516001600160a01b03160361145f5760405162461bcd60e51b815260206004820152601d60248201527f546865203020616464726573732069736e277420616e204552432d323000000060448201526064016107c8565b61146b60126001612913565b60ff168b8281518110611480576114806128c1565b602002602001015160ff16106114d85760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e20646563696d616c732065786365656473206d617800000000000060448201526064016107c8565b8a81815181106114ea576114ea6128c1565b602002602001015160126114fe919061292c565b61150c9060ff16600a612a29565b82828151811061151e5761151e6128c1565b6020026020010181815250508061010660008e8481518110611542576115426128c1565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191660ff92909216919091179055600101611307565b50620f424087106115c75760405162461bcd60e51b81526020600482015260126024820152715f612065786365656473206d6178696d756d60701b60448201526064016107c8565b6305f5e10086106116115760405162461bcd60e51b81526020600482015260146024820152735f6665652065786365656473206d6178696d756d60601b60448201526064016107c8565b6402540be40085106116655760405162461bcd60e51b815260206004820152601960248201527f5f61646d696e4665652065786365656473206d6178696d756d0000000000000060448201526064016107c8565b600061167085611edb565b60405163266c45bb60e11b81529091506001600160a01b03821690634cd88b76906116a1908d908d90600401612a7b565b6020604051808303816000875af11580156116c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e49190612aa0565b6117305760405162461bcd60e51b815260206004820152601c60248201527f636f756c64206e6f7420696e6974206c70546f6b656e20636c6f6e650000000060448201526064016107c8565b61010180546001600160a01b0319166001600160a01b0383161790558b51611760906101029060208f019061206f565b508151611775906101039060208501906120d4565b508267ffffffffffffffff81111561178f5761178f61247f565b6040519080825280602002602001820160405280156117b8578160200160208202803683370190505b5080516117ce91610104916020909101906120d4565b508267ffffffffffffffff8111156117e8576117e861247f565b604051908082528060200260200182016040528015611811578160200160208202803683370190505b50805161182791610105916020909101906120d4565b50611833606489612abd565b60fb55611841606489612abd565b60fc5560ff8790556101008690556040517f8ba0c15f86c46b5773beb451b4d8d5744f7642ab1004c0a7e59e215710fb3aba906118829060fb903390612b52565b60405180910390a150505080156118d3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6118e6611ce5565b60405163e5b994c560e01b815260fb600482015273__$0399e8fdab399fb8f200f3895472e3787c$__9063e5b994c59060240160006040518083038186803b15801561193157600080fd5b505af4158015611945573d6000803e3d6000fd5b50505050565b6000611955611c8c565b61195d611d46565b818042111561197e5760405162461bcd60e51b81526004016107c890612789565b600061198987610c26565b9050600061199687610c26565b60405163f204293960e01b815260fb600482015260ff808516602483015282166044820152606481018b90526084810188905290915073__$0399e8fdab399fb8f200f3895472e3787c$__9063f20429399060a401610b50565b604051631158dafb60e11b815260fb600482015260009073__$0399e8fdab399fb8f200f3895472e3787c$__906322b1b5f69060240161074f565b604051638be1e52360e01b815260fb600482015260009073__$0399e8fdab399fb8f200f3895472e3787c$__90638be1e5239060240161074f565b6040516322b2b60760e01b815260009073__$0399e8fdab399fb8f200f3895472e3787c$__906322b2b60790610ced9060fb90889088908890600401612c37565b604051631ce9046f60e01b815260fb60048201526024810182905260009073__$0399e8fdab399fb8f200f3895472e3787c$__90631ce9046f90604401602060405180830381865af4158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f39190612770565b604051638cc122bb60e01b815260fb60048201526024810182905260609073__$0399e8fdab399fb8f200f3895472e3787c$__90638cc122bb90604401600060405180830381865af4158015611b7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108f39190810190612805565b611baf611ce5565b6001600160a01b038116611c145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107c8565b611c1d81611dde565b50565b600080611c2c85610c26565b90506000611c3985610c26565b604051632e4be8d760e21b815260fb600482015260ff8085166024830152821660448201526064810186905290915073__$0399e8fdab399fb8f200f3895472e3787c$__9063b92fa35c90608401610db2565b600260c95403611cde5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107c8565b600260c955565b6033546001600160a01b031633146107165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c8565b600160c955565b60655460ff16156107165760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107c8565b611d94611f75565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611e38611d46565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611dc13390565b600054610100900460ff16611e945760405162461bcd60e51b81526004016107c890612c64565b611e9c611fbe565b611ea4611fe5565b610716612015565b600054610100900460ff16611ed35760405162461bcd60e51b81526004016107c890612c64565b610716612048565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116611f705760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b60448201526064016107c8565b919050565b60655460ff166107165760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107c8565b600054610100900460ff166107165760405162461bcd60e51b81526004016107c890612c64565b600054610100900460ff1661200c5760405162461bcd60e51b81526004016107c890612c64565b61071633611dde565b600054610100900460ff1661203c5760405162461bcd60e51b81526004016107c890612c64565b6065805460ff19169055565b600054610100900460ff16611d3f5760405162461bcd60e51b81526004016107c890612c64565b8280548282559060005260206000209081019282156120c4579160200282015b828111156120c457825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061208f565b506120d092915061210f565b5090565b8280548282559060005260206000209081019282156120c4579160200282015b828111156120c45782518255916020019190600101906120f4565b5b808211156120d05760008155600101612110565b60008083601f84011261213657600080fd5b50813567ffffffffffffffff81111561214e57600080fd5b6020830191508360208260051b850101111561216957600080fd5b9250929050565b6000806000806060858703121561218657600080fd5b84359350602085013567ffffffffffffffff8111156121a457600080fd5b6121b087828801612124565b9598909750949560400135949350505050565b6020808252825182820181905260009190848201906040850190845b818110156121fb578351835292840192918401916001016121df565b50909695505050505050565b803560ff81168114611f7057600080fd5b6000806040838503121561222b57600080fd5b8235915061223b60208401612207565b90509250929050565b60006020828403121561225657600080fd5b5035919050565b6000806000806080858703121561227357600080fd5b8435935061228360208601612207565b93969395505050506040820135916060013590565b600080600080606085870312156122ae57600080fd5b843567ffffffffffffffff8111156122c557600080fd5b6122d187828801612124565b90989097506020870135966040013595509350505050565b6001600160a01b0381168114611c1d57600080fd5b8035611f70816122e9565b600080600080600060a0868803121561232157600080fd5b853594506020860135612333816122e9565b93506040860135612343816122e9565b94979396509394606081013594506080013592915050565b6000806040838503121561236e57600080fd5b50508035926020909101359150565b60006020828403121561238f57600080fd5b8135610d31816122e9565b6000806000606084860312156123af57600080fd5b6123b884612207565b92506123c660208501612207565b9150604084013590509250925092565b6000806000606084860312156123eb57600080fd5b83356123f6816122e9565b92506020840135612406816122e9565b929592945050506040919091013590565b60006020828403121561242957600080fd5b6108f082612207565b600080600080600060a0868803121561244a57600080fd5b61245386612207565b945061246160208701612207565b94979496505050506040830135926060810135926080909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124be576124be61247f565b604052919050565b600067ffffffffffffffff8211156124e0576124e061247f565b5060051b60200190565b600082601f8301126124fb57600080fd5b8135602061251061250b836124c6565b612495565b82815260059290921b8401810191818101908684111561252f57600080fd5b8286015b84811015612553578035612546816122e9565b8352918301918301612533565b509695505050505050565b600082601f83011261256f57600080fd5b8135602061257f61250b836124c6565b82815260059290921b8401810191818101908684111561259e57600080fd5b8286015b84811015612553576125b381612207565b83529183019183016125a2565b600082601f8301126125d157600080fd5b813567ffffffffffffffff8111156125eb576125eb61247f565b6125fe601f8201601f1916602001612495565b81815284602083860101111561261357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b03121561264d57600080fd5b883567ffffffffffffffff8082111561266557600080fd5b6126718c838d016124ea565b995060208b013591508082111561268757600080fd5b6126938c838d0161255e565b985060408b01359150808211156126a957600080fd5b6126b58c838d016125c0565b975060608b01359150808211156126cb57600080fd5b506126d88b828c016125c0565b9550506080890135935060a0890135925060c089013591506126fc60e08a016122fe565b90509295985092959890939650565b8015158114611c1d57600080fd5b60008060006040848603121561272e57600080fd5b833567ffffffffffffffff81111561274557600080fd5b61275186828701612124565b90945092505060208401356127658161270b565b809150509250925092565b60006020828403121561278257600080fd5b5051919050565b60208082526010908201526f111958591b1a5b99481b9bdd081b595d60821b604082015260600190565b81835260006001600160fb1b038311156127cc57600080fd5b8260051b80836020870137939093016020019392505050565b848152836020820152606060408201526000610df36060830184866127b3565b6000602080838503121561281857600080fd5b825167ffffffffffffffff81111561282f57600080fd5b8301601f8101851361284057600080fd5b805161284e61250b826124c6565b81815260059190911b8201830190838101908783111561286d57600080fd5b928401925b8284101561288b57835182529284019290840190612872565b979650505050505050565b8481526060602082015260006128b06060830185876127b3565b905082604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108f3576108f36128d7565b808201808211156108f3576108f36128d7565b60ff81811683821601908111156108f3576108f36128d7565b60ff82811682821603908111156108f3576108f36128d7565b600181815b80851115612980578160001904821115612966576129666128d7565b8085161561297357918102915b93841c939080029061294a565b509250929050565b600082612997575060016108f3565b816129a4575060006108f3565b81600181146129ba57600281146129c4576129e0565b60019150506108f3565b60ff8411156129d5576129d56128d7565b50506001821b6108f3565b5060208310610133831016604e8410600b8410161715612a03575081810a6108f3565b612a0d8383612945565b8060001904821115612a2157612a216128d7565b029392505050565b60006108f08383612988565b6000815180845260005b81811015612a5b57602081850181015186830182015201612a3f565b506000602082860101526020601f19601f83011685010191505092915050565b604081526000612a8e6040830185612a35565b8281036020840152610ba08185612a35565b600060208284031215612ab257600080fd5b8151610d318161270b565b80820281158282048414176108f3576108f36128d7565b6000815480845260208085019450836000528060002060005b83811015612b125781546001600160a01b031687529582019560019182019101612aed565b509495945050505050565b6000815480845260208085019450836000528060002060005b83811015612b1257815487529582019560019182019101612b36565b60408152825460408201526001830154606082015260028301546080820152600383015460a0820152600483015460c0820152600583015460e08201526000612ba560068501546001600160a01b031690565b6001600160a01b03166101008301526101606101208301819052612bd06101a0840160078701612ad4565b603f198085830301610140860152612beb8260088901612b1d565b9150808583030183860152612c038260098901612b1d565b925080858403016101808601525050612c1f81600a8701612b1d565b915050610d3160208301846001600160a01b03169052565b848152606060208201526000612c516060830185876127b3565b9050821515604083015295945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220bc494f753dff61ed97f2aa1ef656c8389762531ff5e49618a4f52097d147716064736f6c63430008110033",
  "deployedBytecode": "0x6080604052600436106101f95760003560e01c80638456cb591161010d578063c4db7fa0116100a0578063e6ab28061161006f578063e6ab2806146105d1578063ef0a712f146105f1578063f2fad2b614610611578063f2fde38b14610631578063f9a15fb91461065157600080fd5b8063c4db7fa01461057f578063d460f0a214610594578063d46300fd146105a7578063e25aa5fa146105bc57600080fd5b806391695586116100dc57806391695586146104ff57806391ceb3eb1461051f578063a95b089f1461053f578063b28cb6dc1461055f57600080fd5b80638456cb591461048c57806384cdd9bc146104a15780638beb60b6146104c15780638da5cb5b146104e157600080fd5b80635428c1171161019057806366c0bd241161015f57806366c0bd24146103cd5780636b1dc08b146103ff578063715018a61461041f5780637f41e7ef1461043457806382b866001461045457600080fd5b80635428c117146102ff578063593d132c146103125780635c975abb146103325780635fd65f0f1461035557600080fd5b806334e19907116101cc57806334e199071461028a5780633e3a1560146102aa5780633f4ba83a146102ca5780634d49e87d146102df57600080fd5b80630419b45a146101fe5780630ba819591461021557806331cd52b01461023d578063342a87a11461026a575b600080fd5b34801561020a57600080fd5b50610213610671565b005b34801561022157600080fd5b5061022a610718565b6040519081526020015b60405180910390f35b34801561024957600080fd5b5061025d610258366004612170565b610795565b60405161023491906121c3565b34801561027657600080fd5b5061022a610285366004612218565b610869565b34801561029657600080fd5b506102136102a5366004612244565b6108f9565b3480156102b657600080fd5b5061022a6102c536600461225d565b61096f565b3480156102d657600080fd5b50610213610a2e565b3480156102eb57600080fd5b5061022a6102fa366004612298565b610a3e565b61022a61030d366004612309565b610aaf565b34801561031e57600080fd5b5061021361032d36600461235b565b610ba9565b34801561033e57600080fd5b5060655460ff166040519015158152602001610234565b34801561036157600080fd5b5060fb5460fc5460fd5460fe5460ff54610100546101015461038f969594939291906001600160a01b031687565b604080519788526020880196909652948601939093526060850191909152608084015260a08301526001600160a01b031660c082015260e001610234565b3480156103d957600080fd5b506103ed6103e836600461237d565b610c26565b60405160ff9091168152602001610234565b34801561040b57600080fd5b5061022a61041a36600461239a565b610c9e565b34801561042b57600080fd5b50610213610d38565b34801561044057600080fd5b5061022a61044f3660046123d6565b610d4a565b34801561046057600080fd5b5061047461046f366004612417565b610dfd565b6040516001600160a01b039091168152602001610234565b34801561049857600080fd5b50610213610e77565b3480156104ad57600080fd5b5061022a6104bc366004612298565b610e87565b3480156104cd57600080fd5b506102136104dc366004612244565b610ef8565b3480156104ed57600080fd5b506033546001600160a01b0316610474565b34801561050b57600080fd5b5061022a61051a366004612432565b610f3f565b34801561052b57600080fd5b5061022a61053a366004612417565b611012565b34801561054b57600080fd5b5061022a61055a36600461239a565b611089565b34801561056b57600080fd5b5061021361057a366004612630565b6110dc565b34801561058b57600080fd5b506102136118de565b61022a6105a2366004612309565b61194b565b3480156105b357600080fd5b5061022a6119f0565b3480156105c857600080fd5b5061022a611a2b565b3480156105dd57600080fd5b5061022a6105ec366004612719565b611a66565b3480156105fd57600080fd5b5061022a61060c366004612244565b611aa7565b34801561061d57600080fd5b5061025d61062c366004612244565b611b25565b34801561063d57600080fd5b5061021361064c36600461237d565b611ba7565b34801561065d57600080fd5b5061022a61066c3660046123d6565b611c20565b610679611c8c565b610681611ce5565b73__$0399e8fdab399fb8f200f3895472e3787c$__639cbd240660fb6106af6033546001600160a01b031690565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b0316602482015260440160006040518083038186803b1580156106f457600080fd5b505af4158015610708573d6000803e3d6000fd5b50505050610716600160c955565b565b60405163f43dee5360e01b815260fb600482015260009073__$0399e8fdab399fb8f200f3895472e3787c$__9063f43dee53906024015b602060405180830381865af415801561076c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107909190612770565b905090565b606061079f611c8c565b6107a7611d46565b81804211156107d15760405162461bcd60e51b81526004016107c890612789565b60405180910390fd5b604051631beec94360e21b815273__$0399e8fdab399fb8f200f3895472e3787c$__90636fbb250c9061080f9060fb908a908a908a906004016127e5565b600060405180830381865af415801561082c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108549190810190612805565b915050610861600160c955565b949350505050565b6040516384eeef2760e01b815260fb60048201526024810183905260ff8216604482015260009073__$0399e8fdab399fb8f200f3895472e3787c$__906384eeef2790606401602060405180830381865af41580156108cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f09190612770565b90505b92915050565b610901611ce5565b604051632cecccb560e11b815260fb60048201526024810182905273__$0399e8fdab399fb8f200f3895472e3787c$__906359d9996a906044015b60006040518083038186803b15801561095457600080fd5b505af4158015610968573d6000803e3d6000fd5b5050505050565b6000610979611c8c565b610981611d46565b81804211156109a25760405162461bcd60e51b81526004016107c890612789565b604051632b8ffbb760e21b815260fb60048201526024810187905260ff861660448201526064810185905273__$0399e8fdab399fb8f200f3895472e3787c$__9063ae3feedc906084015b602060405180830381865af4158015610a0a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108549190612770565b610a36611ce5565b610716611d8c565b6000610a48611c8c565b610a50611d46565b8180421115610a715760405162461bcd60e51b81526004016107c890612789565b6040516333a43f9560e11b815273__$0399e8fdab399fb8f200f3895472e3787c$__906367487f2a906109ed9060fb908a908a908a90600401612896565b6000610ab9611c8c565b610ac1611d46565b8180421115610ae25760405162461bcd60e51b81526004016107c890612789565b6000610aed87610c26565b90506000610afa87610c26565b60405163703c02d560e11b815260fb600482015260ff808516602483015282166044820152606481018b90526084810188905290915073__$0399e8fdab399fb8f200f3895472e3787c$__9063e07805aa9060a4015b602060405180830381865af4158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b919190612770565b9350505050610ba0600160c955565b95945050505050565b610bb1611ce5565b604051633f1e106160e21b815260fb6004820152602481018390526044810182905273__$0399e8fdab399fb8f200f3895472e3787c$__9063fc7841849060640160006040518083038186803b158015610c0a57600080fd5b505af4158015610c1e573d6000803e3d6000fd5b505050505050565b6001600160a01b03811660008181526101066020526040812054909160ff90911690610c5182610dfd565b6001600160a01b0316146108f35760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b60448201526064016107c8565b604051632e4be8d760e21b815260fb600482015260ff8085166024830152831660448201526064810182905260009073__$0399e8fdab399fb8f200f3895472e3787c$__9063b92fa35c906084015b602060405180830381865af4158015610d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2e9190612770565b90505b9392505050565b610d40611ce5565b6107166000611dde565b600080610d5685610c26565b90506000610d6385610c26565b604051632f4998ad60e01b815260fb600482015260ff8085166024830152821660448201526064810186905290915073__$0399e8fdab399fb8f200f3895472e3787c$__90632f4998ad906084015b602060405180830381865af4158015610dcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df39190612770565b9695505050505050565b6101025460009060ff831610610e445760405162461bcd60e51b815260206004820152600c60248201526b4f7574206f662072616e676560a01b60448201526064016107c8565b610102805460ff8416908110610e5c57610e5c6128c1565b6000918252602090912001546001600160a01b031692915050565b610e7f611ce5565b610716611e30565b6000610e91611c8c565b610e99611d46565b8180421115610eba5760405162461bcd60e51b81526004016107c890612789565b60405163077b83d360e41b815273__$0399e8fdab399fb8f200f3895472e3787c$__906377b83d30906109ed9060fb908a908a908a90600401612896565b610f00611ce5565b6040516308bbaa2360e01b815260fb60048201526024810182905273__$0399e8fdab399fb8f200f3895472e3787c$__906308bbaa239060440161093c565b6000610f49611c8c565b610f51611d46565b8180421115610f725760405162461bcd60e51b81526004016107c890612789565b60405163f204293960e01b815260fb600482015260ff808916602483015287166044820152606481018690526084810185905273__$0399e8fdab399fb8f200f3895472e3787c$__9063f20429399060a401602060405180830381865af4158015610fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110059190612770565b915050610ba0600160c955565b6101025460009060ff83161061105f5760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b60448201526064016107c8565b610104805460ff8416908110611077576110776128c1565b90600052602060002001549050919050565b604051632f4998ad60e01b815260fb600482015260ff8085166024830152831660448201526064810182905260009073__$0399e8fdab399fb8f200f3895472e3787c$__90632f4998ad90608401610ced565b600054610100900460ff16158080156110fc5750600054600160ff909116105b806111165750303b158015611116575060005460ff166001145b6111795760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107c8565b6000805460ff19166001179055801561119c576000805461ff0019166101001790555b6111a4611e6d565b6111ac611eac565b88516111ba600160026128ed565b81116112125760405162461bcd60e51b815260206004820152602160248201527f5f706f6f6c6564546f6b656e732e6c656e67746820696e73756666696369656e6044820152601d60fa1b60648201526084016107c8565b61121e60106001612900565b811061126c5760405162461bcd60e51b815260206004820152601e60248201527f5f706f6f6c6564546f6b656e732e6c656e67746820746f6f206c61726765000060448201526064016107c8565b885181146112bc5760405162461bcd60e51b815260206004820152601f60248201527f5f706f6f6c6564546f6b656e7320646563696d616c73206d69736d617463680060448201526064016107c8565b6000895167ffffffffffffffff8111156112d8576112d861247f565b604051908082528060200260200182016040528015611301578160200160208202803683370190505b50905060005b8281101561157f5780156113e45761010660008d838151811061132c5761132c6128c1565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161580156113a557508b818151811061136d5761136d6128c1565b60200260200101516001600160a01b03168c600081518110611391576113916128c1565b60200260200101516001600160a01b031614155b6113e45760405162461bcd60e51b815260206004820152601060248201526f4475706c696361746520746f6b656e7360801b60448201526064016107c8565b60006001600160a01b03168c8281518110611401576114016128c1565b60200260200101516001600160a01b03160361145f5760405162461bcd60e51b815260206004820152601d60248201527f546865203020616464726573732069736e277420616e204552432d323000000060448201526064016107c8565b61146b60126001612913565b60ff168b8281518110611480576114806128c1565b602002602001015160ff16106114d85760405162461bcd60e51b815260206004820152601a60248201527f546f6b656e20646563696d616c732065786365656473206d617800000000000060448201526064016107c8565b8a81815181106114ea576114ea6128c1565b602002602001015160126114fe919061292c565b61150c9060ff16600a612a29565b82828151811061151e5761151e6128c1565b6020026020010181815250508061010660008e8481518110611542576115426128c1565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191660ff92909216919091179055600101611307565b50620f424087106115c75760405162461bcd60e51b81526020600482015260126024820152715f612065786365656473206d6178696d756d60701b60448201526064016107c8565b6305f5e10086106116115760405162461bcd60e51b81526020600482015260146024820152735f6665652065786365656473206d6178696d756d60601b60448201526064016107c8565b6402540be40085106116655760405162461bcd60e51b815260206004820152601960248201527f5f61646d696e4665652065786365656473206d6178696d756d0000000000000060448201526064016107c8565b600061167085611edb565b60405163266c45bb60e11b81529091506001600160a01b03821690634cd88b76906116a1908d908d90600401612a7b565b6020604051808303816000875af11580156116c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e49190612aa0565b6117305760405162461bcd60e51b815260206004820152601c60248201527f636f756c64206e6f7420696e6974206c70546f6b656e20636c6f6e650000000060448201526064016107c8565b61010180546001600160a01b0319166001600160a01b0383161790558b51611760906101029060208f019061206f565b508151611775906101039060208501906120d4565b508267ffffffffffffffff81111561178f5761178f61247f565b6040519080825280602002602001820160405280156117b8578160200160208202803683370190505b5080516117ce91610104916020909101906120d4565b508267ffffffffffffffff8111156117e8576117e861247f565b604051908082528060200260200182016040528015611811578160200160208202803683370190505b50805161182791610105916020909101906120d4565b50611833606489612abd565b60fb55611841606489612abd565b60fc5560ff8790556101008690556040517f8ba0c15f86c46b5773beb451b4d8d5744f7642ab1004c0a7e59e215710fb3aba906118829060fb903390612b52565b60405180910390a150505080156118d3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6118e6611ce5565b60405163e5b994c560e01b815260fb600482015273__$0399e8fdab399fb8f200f3895472e3787c$__9063e5b994c59060240160006040518083038186803b15801561193157600080fd5b505af4158015611945573d6000803e3d6000fd5b50505050565b6000611955611c8c565b61195d611d46565b818042111561197e5760405162461bcd60e51b81526004016107c890612789565b600061198987610c26565b9050600061199687610c26565b60405163f204293960e01b815260fb600482015260ff808516602483015282166044820152606481018b90526084810188905290915073__$0399e8fdab399fb8f200f3895472e3787c$__9063f20429399060a401610b50565b604051631158dafb60e11b815260fb600482015260009073__$0399e8fdab399fb8f200f3895472e3787c$__906322b1b5f69060240161074f565b604051638be1e52360e01b815260fb600482015260009073__$0399e8fdab399fb8f200f3895472e3787c$__90638be1e5239060240161074f565b6040516322b2b60760e01b815260009073__$0399e8fdab399fb8f200f3895472e3787c$__906322b2b60790610ced9060fb90889088908890600401612c37565b604051631ce9046f60e01b815260fb60048201526024810182905260009073__$0399e8fdab399fb8f200f3895472e3787c$__90631ce9046f90604401602060405180830381865af4158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f39190612770565b604051638cc122bb60e01b815260fb60048201526024810182905260609073__$0399e8fdab399fb8f200f3895472e3787c$__90638cc122bb90604401600060405180830381865af4158015611b7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108f39190810190612805565b611baf611ce5565b6001600160a01b038116611c145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107c8565b611c1d81611dde565b50565b600080611c2c85610c26565b90506000611c3985610c26565b604051632e4be8d760e21b815260fb600482015260ff8085166024830152821660448201526064810186905290915073__$0399e8fdab399fb8f200f3895472e3787c$__9063b92fa35c90608401610db2565b600260c95403611cde5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107c8565b600260c955565b6033546001600160a01b031633146107165760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c8565b600160c955565b60655460ff16156107165760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107c8565b611d94611f75565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611e38611d46565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611dc13390565b600054610100900460ff16611e945760405162461bcd60e51b81526004016107c890612c64565b611e9c611fbe565b611ea4611fe5565b610716612015565b600054610100900460ff16611ed35760405162461bcd60e51b81526004016107c890612c64565b610716612048565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b038116611f705760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b60448201526064016107c8565b919050565b60655460ff166107165760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107c8565b600054610100900460ff166107165760405162461bcd60e51b81526004016107c890612c64565b600054610100900460ff1661200c5760405162461bcd60e51b81526004016107c890612c64565b61071633611dde565b600054610100900460ff1661203c5760405162461bcd60e51b81526004016107c890612c64565b6065805460ff19169055565b600054610100900460ff16611d3f5760405162461bcd60e51b81526004016107c890612c64565b8280548282559060005260206000209081019282156120c4579160200282015b828111156120c457825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061208f565b506120d092915061210f565b5090565b8280548282559060005260206000209081019282156120c4579160200282015b828111156120c45782518255916020019190600101906120f4565b5b808211156120d05760008155600101612110565b60008083601f84011261213657600080fd5b50813567ffffffffffffffff81111561214e57600080fd5b6020830191508360208260051b850101111561216957600080fd5b9250929050565b6000806000806060858703121561218657600080fd5b84359350602085013567ffffffffffffffff8111156121a457600080fd5b6121b087828801612124565b9598909750949560400135949350505050565b6020808252825182820181905260009190848201906040850190845b818110156121fb578351835292840192918401916001016121df565b50909695505050505050565b803560ff81168114611f7057600080fd5b6000806040838503121561222b57600080fd5b8235915061223b60208401612207565b90509250929050565b60006020828403121561225657600080fd5b5035919050565b6000806000806080858703121561227357600080fd5b8435935061228360208601612207565b93969395505050506040820135916060013590565b600080600080606085870312156122ae57600080fd5b843567ffffffffffffffff8111156122c557600080fd5b6122d187828801612124565b90989097506020870135966040013595509350505050565b6001600160a01b0381168114611c1d57600080fd5b8035611f70816122e9565b600080600080600060a0868803121561232157600080fd5b853594506020860135612333816122e9565b93506040860135612343816122e9565b94979396509394606081013594506080013592915050565b6000806040838503121561236e57600080fd5b50508035926020909101359150565b60006020828403121561238f57600080fd5b8135610d31816122e9565b6000806000606084860312156123af57600080fd5b6123b884612207565b92506123c660208501612207565b9150604084013590509250925092565b6000806000606084860312156123eb57600080fd5b83356123f6816122e9565b92506020840135612406816122e9565b929592945050506040919091013590565b60006020828403121561242957600080fd5b6108f082612207565b600080600080600060a0868803121561244a57600080fd5b61245386612207565b945061246160208701612207565b94979496505050506040830135926060810135926080909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156124be576124be61247f565b604052919050565b600067ffffffffffffffff8211156124e0576124e061247f565b5060051b60200190565b600082601f8301126124fb57600080fd5b8135602061251061250b836124c6565b612495565b82815260059290921b8401810191818101908684111561252f57600080fd5b8286015b84811015612553578035612546816122e9565b8352918301918301612533565b509695505050505050565b600082601f83011261256f57600080fd5b8135602061257f61250b836124c6565b82815260059290921b8401810191818101908684111561259e57600080fd5b8286015b84811015612553576125b381612207565b83529183019183016125a2565b600082601f8301126125d157600080fd5b813567ffffffffffffffff8111156125eb576125eb61247f565b6125fe601f8201601f1916602001612495565b81815284602083860101111561261357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600080600080610100898b03121561264d57600080fd5b883567ffffffffffffffff8082111561266557600080fd5b6126718c838d016124ea565b995060208b013591508082111561268757600080fd5b6126938c838d0161255e565b985060408b01359150808211156126a957600080fd5b6126b58c838d016125c0565b975060608b01359150808211156126cb57600080fd5b506126d88b828c016125c0565b9550506080890135935060a0890135925060c089013591506126fc60e08a016122fe565b90509295985092959890939650565b8015158114611c1d57600080fd5b60008060006040848603121561272e57600080fd5b833567ffffffffffffffff81111561274557600080fd5b61275186828701612124565b90945092505060208401356127658161270b565b809150509250925092565b60006020828403121561278257600080fd5b5051919050565b60208082526010908201526f111958591b1a5b99481b9bdd081b595d60821b604082015260600190565b81835260006001600160fb1b038311156127cc57600080fd5b8260051b80836020870137939093016020019392505050565b848152836020820152606060408201526000610df36060830184866127b3565b6000602080838503121561281857600080fd5b825167ffffffffffffffff81111561282f57600080fd5b8301601f8101851361284057600080fd5b805161284e61250b826124c6565b81815260059190911b8201830190838101908783111561286d57600080fd5b928401925b8284101561288b57835182529284019290840190612872565b979650505050505050565b8481526060602082015260006128b06060830185876127b3565b905082604083015295945050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156108f3576108f36128d7565b808201808211156108f3576108f36128d7565b60ff81811683821601908111156108f3576108f36128d7565b60ff82811682821603908111156108f3576108f36128d7565b600181815b80851115612980578160001904821115612966576129666128d7565b8085161561297357918102915b93841c939080029061294a565b509250929050565b600082612997575060016108f3565b816129a4575060006108f3565b81600181146129ba57600281146129c4576129e0565b60019150506108f3565b60ff8411156129d5576129d56128d7565b50506001821b6108f3565b5060208310610133831016604e8410600b8410161715612a03575081810a6108f3565b612a0d8383612945565b8060001904821115612a2157612a216128d7565b029392505050565b60006108f08383612988565b6000815180845260005b81811015612a5b57602081850181015186830182015201612a3f565b506000602082860101526020601f19601f83011685010191505092915050565b604081526000612a8e6040830185612a35565b8281036020840152610ba08185612a35565b600060208284031215612ab257600080fd5b8151610d318161270b565b80820281158282048414176108f3576108f36128d7565b6000815480845260208085019450836000528060002060005b83811015612b125781546001600160a01b031687529582019560019182019101612aed565b509495945050505050565b6000815480845260208085019450836000528060002060005b83811015612b1257815487529582019560019182019101612b36565b60408152825460408201526001830154606082015260028301546080820152600383015460a0820152600483015460c0820152600583015460e08201526000612ba560068501546001600160a01b031690565b6001600160a01b03166101008301526101606101208301819052612bd06101a0840160078701612ad4565b603f198085830301610140860152612beb8260088901612b1d565b9150808583030183860152612c038260098901612b1d565b925080858403016101808601525050612c1f81600a8701612b1d565b915050610d3160208301846001600160a01b03169052565b848152606060208201526000612c516060830185876127b3565b9050821515604083015295945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220bc494f753dff61ed97f2aa1ef656c8389762531ff5e49618a4f52097d147716064736f6c63430008110033",
  "linkReferences": {
    "contracts/core/connext/libraries/SwapUtilsExternal.sol": {
      "SwapUtilsExternal": [
        {
          "length": 20,
          "start": 1699
        },
        {
          "length": 20,
          "start": 1873
        },
        {
          "length": 20,
          "start": 2048
        },
        {
          "length": 20,
          "start": 2226
        },
        {
          "length": 20,
          "start": 2366
        },
        {
          "length": 20,
          "start": 2543
        },
        {
          "length": 20,
          "start": 2720
        },
        {
          "length": 20,
          "start": 2898
        },
        {
          "length": 20,
          "start": 3061
        },
        {
          "length": 20,
          "start": 3311
        },
        {
          "length": 20,
          "start": 3508
        },
        {
          "length": 20,
          "start": 3817
        },
        {
          "length": 20,
          "start": 3901
        },
        {
          "length": 20,
          "start": 4039
        },
        {
          "length": 20,
          "start": 4314
        },
        {
          "length": 20,
          "start": 6428
        },
        {
          "length": 20,
          "start": 6638
        },
        {
          "length": 20,
          "start": 6697
        },
        {
          "length": 20,
          "start": 6756
        },
        {
          "length": 20,
          "start": 6808
        },
        {
          "length": 20,
          "start": 6887
        },
        {
          "length": 20,
          "start": 7013
        },
        {
          "length": 20,
          "start": 7306
        }
      ]
    }
  },
  "deployedLinkReferences": {
    "contracts/core/connext/libraries/SwapUtilsExternal.sol": {
      "SwapUtilsExternal": [
        {
          "length": 20,
          "start": 1667
        },
        {
          "length": 20,
          "start": 1841
        },
        {
          "length": 20,
          "start": 2016
        },
        {
          "length": 20,
          "start": 2194
        },
        {
          "length": 20,
          "start": 2334
        },
        {
          "length": 20,
          "start": 2511
        },
        {
          "length": 20,
          "start": 2688
        },
        {
          "length": 20,
          "start": 2866
        },
        {
          "length": 20,
          "start": 3029
        },
        {
          "length": 20,
          "start": 3279
        },
        {
          "length": 20,
          "start": 3476
        },
        {
          "length": 20,
          "start": 3785
        },
        {
          "length": 20,
          "start": 3869
        },
        {
          "length": 20,
          "start": 4007
        },
        {
          "length": 20,
          "start": 4282
        },
        {
          "length": 20,
          "start": 6396
        },
        {
          "length": 20,
          "start": 6606
        },
        {
          "length": 20,
          "start": 6665
        },
        {
          "length": 20,
          "start": 6724
        },
        {
          "length": 20,
          "start": 6776
        },
        {
          "length": 20,
          "start": 6855
        },
        {
          "length": 20,
          "start": 6981
        },
        {
          "length": 20,
          "start": 7274
        }
      ]
    }
  }
}
