{
  "_format": "hh-sol-artifact-1",
  "contractName": "JCapableErc20",
  "sourceName": "contracts/JCapableErc20.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "cashPrior",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "interestAccumulated",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowIndex",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalBorrows",
          "type": "uint256"
        }
      ],
      "name": "AccrueInterest",
      "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": "amount",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accountBorrows",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalBorrows",
          "type": "uint256"
        }
      ],
      "name": "Borrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "error",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "info",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "detail",
          "type": "uint256"
        }
      ],
      "name": "Failure",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reservesFee",
          "type": "uint256"
        }
      ],
      "name": "Flashloan",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "jTokenCollateral",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "seizeTokens",
          "type": "uint256"
        }
      ],
      "name": "LiquidateBorrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "minter",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "mintAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "mintTokens",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "NewAdmin",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract JoetrollerInterface",
          "name": "oldJoetroller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract JoetrollerInterface",
          "name": "newJoetroller",
          "type": "address"
        }
      ],
      "name": "NewJoetroller",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract InterestRateModel",
          "name": "oldInterestRateModel",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract InterestRateModel",
          "name": "newInterestRateModel",
          "type": "address"
        }
      ],
      "name": "NewMarketInterestRateModel",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldPendingAdmin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newPendingAdmin",
          "type": "address"
        }
      ],
      "name": "NewPendingAdmin",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldProtocolSeizeShareMantissa",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newProtocolSeizeShareMantissa",
          "type": "uint256"
        }
      ],
      "name": "NewProtocolSeizeShare",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oldReserveFactorMantissa",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newReserveFactorMantissa",
          "type": "uint256"
        }
      ],
      "name": "NewReserveFactor",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "redeemer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "redeemTokens",
          "type": "uint256"
        }
      ],
      "name": "Redeem",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "payer",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "accountBorrows",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "totalBorrows",
          "type": "uint256"
        }
      ],
      "name": "RepayBorrow",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "benefactor",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "addAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalReserves",
          "type": "uint256"
        }
      ],
      "name": "ReservesAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "admin",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "reduceAmount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newTotalReserves",
          "type": "uint256"
        }
      ],
      "name": "ReservesReduced",
      "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": "amount",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "_acceptAdmin",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "addAmount",
          "type": "uint256"
        }
      ],
      "name": "_addReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reduceAmount",
          "type": "uint256"
        }
      ],
      "name": "_reduceReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract InterestRateModel",
          "name": "newInterestRateModel",
          "type": "address"
        }
      ],
      "name": "_setInterestRateModel",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract JoetrollerInterface",
          "name": "newJoetroller",
          "type": "address"
        }
      ],
      "name": "_setJoetroller",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "newPendingAdmin",
          "type": "address"
        }
      ],
      "name": "_setPendingAdmin",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newReserveFactorMantissa",
          "type": "uint256"
        }
      ],
      "name": "_setReserveFactor",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "accrualBlockTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "accrueInterest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "admin",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOfUnderlying",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowAmount",
          "type": "uint256"
        }
      ],
      "name": "borrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "borrowBalanceCurrent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "borrowBalanceStored",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "borrowIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "borrowRatePerSecond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "change",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "repay",
          "type": "bool"
        }
      ],
      "name": "estimateBorrowRatePerSecondAfterChange",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "change",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "repay",
          "type": "bool"
        }
      ],
      "name": "estimateSupplyRatePerSecondAfterChange",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "exchangeRateCurrent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "exchangeRateStored",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "flashFeeBips",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "params",
          "type": "bytes"
        }
      ],
      "name": "flashLoan",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getAccountSnapshot",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getCash",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "gulp",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "implementation",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "underlying_",
          "type": "address"
        },
        {
          "internalType": "contract JoetrollerInterface",
          "name": "joetroller_",
          "type": "address"
        },
        {
          "internalType": "contract InterestRateModel",
          "name": "interestRateModel_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "initialExchangeRateMantissa_",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "decimals_",
          "type": "uint8"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "contract JoetrollerInterface",
          "name": "joetroller_",
          "type": "address"
        },
        {
          "internalType": "contract InterestRateModel",
          "name": "interestRateModel_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "initialExchangeRateMantissa_",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "uint8",
          "name": "decimals_",
          "type": "uint8"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "interestRateModel",
      "outputs": [
        {
          "internalType": "contract InterestRateModel",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "internalCash",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isJToken",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "joetroller",
      "outputs": [
        {
          "internalType": "contract JoetrollerInterface",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        },
        {
          "internalType": "contract JTokenInterface",
          "name": "jTokenCollateral",
          "type": "address"
        }
      ],
      "name": "liquidateBorrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "mintAmount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "pendingAdmin",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "protocolSeizeShareMantissa",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "redeemTokens",
          "type": "uint256"
        }
      ],
      "name": "redeem",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "redeemAmount",
          "type": "uint256"
        }
      ],
      "name": "redeemUnderlying",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        }
      ],
      "name": "repayBorrow",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "repayAmount",
          "type": "uint256"
        }
      ],
      "name": "repayBorrowBehalf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "reserveFactorMantissa",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "liquidator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "borrower",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "seizeTokens",
          "type": "uint256"
        }
      ],
      "name": "seize",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "supplyRatePerSecond",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalBorrows",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "totalBorrowsCurrent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "src",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "dst",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "underlying",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50614a74806100206000396000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c806373acee98116101d3578063bd6d894d11610104578063e9c714f2116100a2578063f3fdb15a1161007c578063f3fdb15a14610bcc578063f5e3c46214610bd4578063f851a44014610c0a578063fca7820b14610c1257610378565b8063e9c714f214610b96578063ea11eea414610b9e578063f2b3abbd14610ba657610378565b8063cfa99201116100de578063cfa9920114610ac0578063db006a7514610ac8578063dd62ed3e14610ae5578063e0232b4214610b1357610378565b8063bd6d894d14610a4f578063c37f68e214610a57578063c5ebeaec14610aa357610378565b8063a0712d6811610171578063aa5af0fd1161014b578063aa5af0fd146109e3578063b1d38974146109eb578063b2a02ff1146109f3578063b71d1a0c14610a2957610378565b8063a0712d6814610992578063a6afed95146109af578063a9059cbb146109b757610378565b806394909e62116101ad57806394909e621461080e57806395d89b411461081657806395dd91931461081e57806399d8c1b41461084457610378565b806373acee98146107e1578063852a12e3146107e95780638f840ddd1461080657610378565b80633af9e669116102ad578063526097501161024b5780636330533c116102255780636330533c146107a35780636752e702146107ab5780636f307dc3146107b357806370a08231146107bb57610378565b806352609750146107765780635c60da1b1461077e578063601a0bf11461078657610378565b8063406de0b611610287578063406de0b61461071b578063432f4b2d1461072357806347bd37181461074957806350f6e0821461075157610378565b80633af9e669146106d05780633b1d21a2146106f65780633e941010146106fe57610378565b8063182df0f51161031a57806323b872dd116102f457806323b872dd1461062c5780632608f81814610662578063267822471461068e578063313ce567146106b257610378565b8063182df0f5146104c45780631a31d465146104cc57806322abdbf51461062457610378565b80630f3e4e11116103565780630f3e4e1114610469578063173b99041461048e57806317bfdfbc1461049657806318160ddd146104bc57610378565b806306fdde031461037d578063095ea7b3146103fa5780630e7527021461043a575b600080fd5b610385610c2f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bf5781810151838201526020016103a7565b50505050905090810190601f1680156103ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104266004803603604081101561041057600080fd5b506001600160a01b038135169060200135610cbc565b604080519115158252519081900360200190f35b6104576004803603602081101561045057600080fd5b5035610d27565b60408051918252519081900360200190f35b6104576004803603604081101561047f57600080fd5b50803590602001351515610d3f565b610457610e24565b610457600480360360208110156104ac57600080fd5b50356001600160a01b0316610e2a565b610457610eea565b610457610ef0565b610622600480360360e08110156104e257600080fd5b6001600160a01b03823581169260208101358216926040820135909216916060820135919081019060a081016080820135600160201b81111561052457600080fd5b82018360208201111561053657600080fd5b803590602001918460018302840111600160201b8311171561055757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156105a957600080fd5b8201836020820111156105bb57600080fd5b803590602001918460018302840111600160201b831117156105dc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff169150610f009050565b005b610457610f9f565b6104266004803603606081101561064257600080fd5b506001600160a01b03813581169160208101359091169060400135610fa5565b6104576004803603604081101561067857600080fd5b506001600160a01b038135169060200135611017565b61069661102f565b604080516001600160a01b039092168252519081900360200190f35b6106ba61103e565b6040805160ff9092168252519081900360200190f35b610457600480360360208110156106e657600080fd5b50356001600160a01b0316611047565b610457611094565b6104576004803603602081101561071457600080fd5b503561109e565b6104266110b1565b6104576004803603602081101561073957600080fd5b50356001600160a01b03166110b6565b61045761120a565b6104576004803603604081101561076757600080fd5b50803590602001351515611210565b6104576112bf565b610696611354565b6104576004803603602081101561079c57600080fd5b5035611363565b6106966113fe565b61045761140d565b610696611413565b610457600480360360208110156107d157600080fd5b50356001600160a01b0316611422565b61045761143d565b610457600480360360208110156107ff57600080fd5b50356114f3565b610457611500565b610622611506565b61038561159b565b6104576004803603602081101561083457600080fd5b50356001600160a01b03166115f3565b610622600480360360c081101561085a57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561089457600080fd5b8201836020820111156108a657600080fd5b803590602001918460018302840111600160201b831117156108c757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460018302840111600160201b8311171561094c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff1691506115fe9050565b610457600480360360208110156109a857600080fd5b50356117e5565b6104576117f3565b610426600480360360408110156109cd57600080fd5b506001600160a01b038135169060200135611a03565b610457611a75565b610457611a7b565b61045760048036036060811015610a0957600080fd5b506001600160a01b03813581169160208101359091169060400135611ae9565b61045760048036036020811015610a3f57600080fd5b50356001600160a01b0316611b5a565b610457611be6565b610a7d60048036036020811015610a6d57600080fd5b50356001600160a01b0316611ca2565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61045760048036036020811015610ab957600080fd5b5035611cde565b610457611ceb565b61045760048036036020811015610ade57600080fd5b5035611cf1565b61045760048036036040811015610afb57600080fd5b506001600160a01b0381358116916020013516611cfe565b61062260048036036060811015610b2957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610b5857600080fd5b820183602082011115610b6a57600080fd5b803590602001918460018302840111600160201b83111715610b8b57600080fd5b509092509050611d29565b61045761206b565b61045761216e565b61045760048036036020811015610bbc57600080fd5b50356001600160a01b0316612173565b6106966121ad565b61045760048036036060811015610bea57600080fd5b506001600160a01b038135811691602081013591604090910135166121bc565b6106966121d6565b61045760048036036020811015610c2857600080fd5b50356121ea565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cb45780601f10610c8957610100808354040283529160200191610cb4565b820191906000526020600020905b815481529060010190602001808311610c9757829003601f168201915b505050505081565b336000818152600f602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a35060019392505050565b600080610d35836000612268565b509150505b919050565b60008060008315610d7057610d5b610d55612314565b8661231a565b9150610d69600b5486612350565b9050610d92565b610d81610d7b612314565b86612350565b9150610d8f600b548661231a565b90505b600654600c54604080516315f2405360e01b815260048101869052602481018590526044810192909252516001600160a01b03909216916315f2405391606480820192602092909190829003018186803b158015610def57600080fd5b505afa158015610e03573d6000803e3d6000fd5b505050506040513d6020811015610e1957600080fd5b505195945050505050565b60085481565b6000805460ff16610e6f576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155610e816117f3565b14610ecc576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b610ed5826115f3565b90505b6000805460ff19166001179055919050565b600d5481565b6000610efa61238a565b90505b90565b610f0e8686868686866115fe565b601180546001600160a01b0319166001600160a01b038981169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015610f6a57600080fd5b505afa158015610f7e573d6000803e3d6000fd5b505050506040513d6020811015610f9457600080fd5b505050505050505050565b60135481565b6000805460ff16610fea576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155611000338686866123f0565b1490506000805460ff191660011790559392505050565b600080611026848460006125f9565b50949350505050565b6004546001600160a01b031681565b60035460ff1681565b600061105161478e565b6040518060200160405280611064611be6565b90526001600160a01b0384166000908152600e602052604090205490915061108d9082906126a6565b9392505050565b6000610efa612314565b60006110ab8260006126c5565b92915050565b600181565b60035460009061010090046001600160a01b031633146110e3576110dc60016029612763565b9050610d3a565b600554604080516340e6dcc560e01b815290516001600160a01b03928316928516916340e6dcc5916004808301926020929190829003018186803b15801561112a57600080fd5b505afa15801561113e573d6000803e3d6000fd5b505050506040513d602081101561115457600080fd5b50516111a7576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f17d6db5ffe5a3d1c3d7a98194dca4f7d808d621e6ff9077ed574513d553a2a859281900390910190a1600061108d565b600b5481565b6000806000831561123b57611226610d55612314565b9150611234600b5486612350565b9050611257565b611246610d7b612314565b9150611254600b548661231a565b90505b600654600c5460085460408051635c0b440b60e11b8152600481018790526024810186905260448101939093526064830191909152516001600160a01b039092169163b816881691608480820192602092909190829003018186803b158015610def57600080fd5b6006546000906001600160a01b03166315f240536112db612314565b600b54600c546040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561132357600080fd5b505afa158015611337573d6000803e3d6000fd5b505050506040513d602081101561134d57600080fd5b5051905090565b6012546001600160a01b031681565b6000805460ff166113a8576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556113ba6117f3565b905080156113e0576113d88160108111156113d157fe5b601d612763565b915050610ed8565b6113e9836127c9565b9150506000805460ff19166001179055919050565b6005546001600160a01b031681565b60145481565b6011546001600160a01b031681565b6001600160a01b03166000908152600e602052604090205490565b6000805460ff16611482576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556114946117f3565b146114df576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b50600b546000805460ff1916600117905590565b60006110ab8260006128c7565b600c5481565b60005460ff1661154a576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff1916815561155c61295f565b90506000611568612314565b905060006115768383612350565b9050611584600c548261231a565b600c5550506013556000805460ff19166001179055565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610cb45780601f10610c8957610100808354040283529160200191610cb4565b60006110ab826129df565b60035461010090046001600160a01b0316331461164c5760405162461bcd60e51b81526004018080602001828103825260248152602001806148f56024913960400191505060405180910390fd5b60095415801561165c5750600a54155b6116975760405162461bcd60e51b815260040180806020018281038252602381526020018061494b6023913960400191505060405180910390fd5b6007849055836116d85760405162461bcd60e51b815260040180806020018281038252603081526020018061496e6030913960400191505060405180910390fd5b60006116e3876110b6565b90508015611738576040805162461bcd60e51b815260206004820152601960248201527f73657474696e67206a6f6574726f6c6c6572206661696c656400000000000000604482015290519081900360640190fd5b611740612a34565b600955670de0b6b3a7640000600a5561175886612a38565b905080156117975760405162461bcd60e51b815260040180806020018281038252602281526020018061499e6022913960400191505060405180910390fd5b83516117aa9060019060208701906147a1565b5082516117be9060029060208601906147a1565b50506003805460ff90921660ff199283161790556000805490911660011790555050505050565b600080610d35836000612bad565b6000806117fe612a34565b6009549091508082141561181757600092505050610efd565b6000611821612314565b600b54600c54600a54600654604080516315f2405360e01b815260048101879052602481018690526044810185905290519596509394929391926000926001600160a01b03909216916315f24053916064808301926020929190829003018186803b15801561188f57600080fd5b505afa1580156118a3573d6000803e3d6000fd5b505050506040513d60208110156118b957600080fd5b5051905065048c27395000811115611918576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b60006119248888612350565b905061192e61478e565b61194660405180602001604052808581525083612c2f565b9050600061195482886126a6565b90506000611962828961231a565b905060006119816040518060200160405280600854815250848a612c59565b9050600061199085898a612c59565b60098e9055600a819055600b849055600c839055604080518d8152602081018790528082018390526060810186905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a160009d505050505050505050505050505090565b6000805460ff16611a48576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155611a5e333386866123f0565b1490505b6000805460ff1916600117905592915050565b600a5481565b6006546000906001600160a01b031663b8168816611a97612314565b600b54600c546008546040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b15801561132357600080fd5b6000805460ff16611b2e576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19169055611b4433858585612c81565b90506000805460ff191660011790559392505050565b60035460009061010090046001600160a01b03163314611b80576110dc6001602f612763565b600480546001600160a01b038481166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a1600061108d565b6000805460ff16611c2b576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155611c3d6117f3565b14611c88576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611c90610ef0565b90506000805460ff1916600117905590565b6000806000806000611cb386611422565b90506000611cc0876129df565b90506000611ccc61238a565b90506000989297509095509350915050565b60006110ab826000612ec5565b60095481565b60006110ab826000612f45565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b60005460ff16611d6d576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff1916905582611db35760405162461bcd60e51b815260040180806020018281038252602c815260200180614a14602c913960400191505060405180910390fd5b6000611dbd6117f3565b14611e08576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b6000611e1261295f565b90506000611e1e612314565b905084811015611e6e576040805162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f4c495155494449545960501b604482015290519081900360640190fd5b6000611e86611e7e876008612fc0565b612710613002565b9050611e9487876000613035565b611ea0600b548761231a565b600b5560115460405163405b019d60e01b815233600482018181526001600160a01b0393841660248401819052604484018b90526064840186905260a06084850190815260a485018a9052948c169463405b019d9491928c9288928d928d9290919060c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611f4557600080fd5b505af1158015611f59573d6000803e3d6000fd5b505050506000611f6761295f565b9050611f73848361231a565b8114611fbd576040805162461bcd60e51b8152602060048201526014602482015273109053105390d157d25390d3d394d254d511539560621b604482015290519081900360640190fd5b6000611fd96040518060200160405280600854815250846126a6565b9050611fe7600c548261231a565b600c55611ff4848461231a565b601355600b546120049089612350565b600b55604080518981526020810185905280820183905290516001600160a01b038b16917f33c8e097c526683cbdb29adf782fac95e9d0fbe0ed635c13d8c75fdf726557d9919081900360600190a250506000805460ff1916600117905550505050505050565b6004546000906001600160a01b031633141580612086575033155b1561209e5761209760016000612763565b9050610efd565b60038054600480546001600160a01b03818116610100818102610100600160a81b0319871617968790556001600160a01b031990931690935560408051948390048216808652929095041660208401528351909391927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1600454604080516001600160a01b038085168252909216602083015280517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99281900390910190a160009250505090565b600881565b60008061217e6117f3565b905080156121a45761219c81601081111561219557fe5b602a612763565b915050610d3a565b61108d83612a38565b6006546001600160a01b031681565b6000806121cc858585600061313c565b5095945050505050565b60035461010090046001600160a01b031681565b6000805460ff1661222f576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556122416117f3565b9050801561225f576113d881601081111561225857fe5b6030612763565b6113e983613270565b60008054819060ff166122af576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556122c16117f3565b905080156122ec576122df8160108111156122d857fe5b6023612763565b9250600091506122fe9050565b6122f833338787613318565b92509250505b6000805460ff1916600117905590939092509050565b60135490565b600061108d8383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b8152506135c8565b600061108d8383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b81525061365a565b600d546000908061239f575050600754610efd565b60006123a9612314565b905060006123c46123bc83600b5461231a565b600c54612350565b905060006123e0826040518060200160405280878152506136b4565b9450610efd9350505050565b5090565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b15801561245557600080fd5b505af1158015612469573d6000803e3d6000fd5b505050506040513d602081101561247f57600080fd5b50519050801561249e5761249660036034836136d2565b9150506125f1565b836001600160a01b0316856001600160a01b031614156124c45761249660026035612763565b60006001600160a01b0387811690871614156124e3575060001961250b565b506001600160a01b038086166000908152600f60209081526040808320938a16835292905220545b6001600160a01b0386166000908152600e602052604090205461252e9085612350565b6001600160a01b038088166000908152600e6020526040808220939093559087168152205461255d908561231a565b6001600160a01b0386166000908152600e602052604090205560001981146125b0576125898185612350565b6001600160a01b038088166000908152600f60209081526040808320938c16835292905220555b846001600160a01b0316866001600160a01b03166000805160206149c0833981519152866040518082815260200191505060405180910390a360005b925050505b949350505050565b60008054819060ff16612640576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556126526117f3565b9050801561267d5761267081601081111561266957fe5b6022612763565b92506000915061268f9050565b61268933878787613318565b92509250505b6000805460ff191660011790559094909350915050565b60006126b061478e565b6126ba8484612c2f565b90506125f181613738565b6000805460ff1661270a576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff1916815561271c6117f3565b905080156127425761273a81601081111561273357fe5b6036612763565b915050611a62565b61274c8484613747565b509150506000805460ff1916600117905592915050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601081111561279257fe5b83603c81111561279e57fe5b604080519283526020830191909152600082820152519081900360600190a182601081111561108d57fe5b600354600090819061010090046001600160a01b031633146127f15761219c6001601e612763565b6127f9612a34565b6009541461280d5761219c600a6020612763565b82612816612314565b10156128285761219c600e601f612763565b600c5483111561283e5761219c60026021612763565b61284a600c5484612350565b600c81905560035490915061286f9061010090046001600160a01b0316846001613035565b600354604080516101009092046001600160a01b0316825260208201859052818101839052517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e916060908290030190a1600061108d565b6000805460ff1661290c576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff1916815561291e6117f3565b9050801561293c5761273a81601081111561293557fe5b6019612763565b61294933600086866137e5565b9150506000805460ff1916600117905592915050565b601154604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b1580156129ad57600080fd5b505afa1580156129c1573d6000803e3d6000fd5b505050506040513d60208110156129d757600080fd5b505191505090565b6001600160a01b03811660009081526010602052604081208054612a07576000915050610d3a565b6000612a198260000154600a54612fc0565b90506000612a2b828460010154613002565b95945050505050565b4290565b600354600090819061010090046001600160a01b03163314612a605761219c6001602c612763565b612a68612a34565b60095414612a7c5761219c600a602b612763565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612acd57600080fd5b505afa158015612ae1573d6000803e3d6000fd5b505050506040513d6020811015612af757600080fd5b5051612b4a576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a1600061108d565b60008054819060ff16612bf4576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155612c066117f3565b90508015612c24576122df816010811115612c1d57fe5b6014612763565b6122f8338686613b18565b612c3761478e565b6040518060200160405280612c50856000015185612fc0565b90529392505050565b6000612c6361478e565b612c6d8585612c2f565b9050612a2b612c7b82613738565b8461231a565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b158015612cee57600080fd5b505af1158015612d02573d6000803e3d6000fd5b505050506040513d6020811015612d1857600080fd5b505190508015612d2f5761249660036011836136d2565b82612d3b576000612496565b846001600160a01b0316846001600160a01b03161415612d615761249660066012612763565b6000612d7d846040518060200160405280601454815250613d20565b90506000612d8b8583612350565b90506000612d9761238a565b90506000612db3604051806020016040528084815250856126a6565b6001600160a01b0389166000908152600e6020526040902054909150612dd99088612350565b6001600160a01b03808a166000908152600e602052604080822093909355908b1681522054612e08908461231a565b6001600160a01b038a166000908152600e6020526040902055600c54612e2e908261231a565b600c55600d54612e3e9085612350565b600d556040805188815290516001600160a01b03808c1692908b16916000805160206149c08339815191529181900360200190a3600c54604080513081526020810184905280820192909252517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a160009a9950505050505050505050565b6000805460ff16612f0a576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155612f1c6117f3565b90508015612f3a5761273a816010811115612f3357fe5b6002612763565b612949338585613d48565b6000805460ff16612f8a576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155612f9c6117f3565b90508015612fb35761273a81601081111561293557fe5b61294933856000866137e5565b600061108d83836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000815250613f31565b600061108d83836040518060400160405280600e81526020016d646976696465206279207a65726f60901b815250613fa7565b6011546040805163a9059cbb60e01b81526001600160a01b0386811660048301526024820186905291519190921691829163a9059cbb9160448082019260009290919082900301818387803b15801561308d57600080fd5b505af11580156130a1573d6000803e3d6000fd5b5050505060003d600081146130bd57602081146130c757600080fd5b60001991506130d3565b60206000803e60005191505b5080613126576040805162461bcd60e51b815260206004820152601960248201527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000604482015290519081900360640190fd5b61313260135485612350565b6013555050505050565b60008054819060ff16613183576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556131956117f3565b905080156131c0576131b38160108111156131ac57fe5b6007612763565b9250600091506132589050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156131fb57600080fd5b505af115801561320f573d6000803e3d6000fd5b505050506040513d602081101561322557600080fd5b505190508015613245576131b381601081111561323e57fe5b6008612763565b6132523388888888614009565b92509250505b6000805460ff19166001179055909590945092505050565b60035460009061010090046001600160a01b03163314613296576110dc60016031612763565b61329e612a34565b600954146132b2576110dc600a6032612763565b670de0b6b3a76400008211156132ce576110dc60026033612763565b6008805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a1600061108d565b60055460408051631200453160e11b81523060048201526001600160a01b0387811660248301528681166044830152606482018690529151600093849384939116916324008a629160848082019260209290919082900301818787803b15801561338157600080fd5b505af1158015613395573d6000803e3d6000fd5b505050506040513d60208110156133ab57600080fd5b5051905080156133cf576133c260036024836136d2565b9250600091506135bf9050565b84613409576133dd866129df565b6001600160a01b0387166000908152601060205260408120918255600a546001909201919091556133c2565b613411612a34565b60095414613425576133c2600a6025612763565b61342d61481b565b6001600160a01b0387166000908152601060205260409020600101546060820152613457876129df565b6080820152600019861415613475576080810151604082015261347d565b604081018690525b61348c88826040015187614531565b60e0820181905260808201516134a191612350565b60a0820152600b5460e08201516134b89190612350565b8160c00181815250508060a0015160106000896001600160a01b03166001600160a01b0316815260200190815260200160002060000181905550600a5460106000896001600160a01b03166001600160a01b03168152602001908152602001600020600101819055508060c00151600b819055507f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a188888360e001518460a001518560c0015160405180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b031681526020018481526020018381526020018281526020019550505050505060405180910390a160e00151600093509150505b94509492505050565b600083830182858210156110265760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561361f578181015183820152602001613607565b50505050905090810190601f16801561364c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b600081848411156136ac5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561361f578181015183820152602001613607565b505050900390565b600061108d6136cb84670de0b6b3a7640000612fc0565b8351613002565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601081111561370157fe5b84603c81111561370d57fe5b604080519283526020830191909152818101859052519081900360600190a18360108111156125f157fe5b51670de0b6b3a7640000900490565b600080600080613755612a34565b6009541461377457613769600a6037612763565b935091506137de9050565b61377f338787614531565b905061378d600c548261231a565b600c819055604080513381526020810184905280820183905290519193507fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5919081900360600190a1600093509150505b9250929050565b60008315806137f2575082155b61382d5760405162461bcd60e51b81526004018080602001828103825260348152602001806149e06034913960400191505060405180910390fd5b613835614861565b61383d61238a565b8152841561386e5760208082018690526040805191820190528151815261386490866126a6565b6040820152613897565b61388a8460405180602001604052808460000151815250614742565b6020820152604081018490525b6005546020808301516040805163eabe7d9160e01b81523060048201526001600160a01b038b8116602483015260448201939093529051600094929092169263eabe7d919260648084019382900301818787803b1580156138f757600080fd5b505af115801561390b573d6000803e3d6000fd5b505050506040513d602081101561392157600080fd5b505190508015613941576139386003601a836136d2565b925050506125f1565b8515801561394d575084155b15613959576000613938565b613961612a34565b6009541461397557613938600a601b612763565b613985600d548360200151612350565b60608301526001600160a01b0387166000908152600e6020908152604090912054908301516139b49190612350565b608083015260408201516139c6612314565b10156139d857613938600e601c612763565b6139e787836040015186613035565b6060820151600d5560808201516001600160a01b0388166000818152600e602090815260409182902093909355828501518151908152905130936000805160206149c0833981519152928290030190a360408083015160208085015183516001600160a01b038c168152918201929092528083019190915290517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299181900360600190a1600554604080840151602085015182516351dff98960e01b81523060048201526001600160a01b038c811660248301526044820193909352606481019190915291519216916351dff9899160848082019260009290919082900301818387803b158015613af757600080fd5b505af1158015613b0b573d6000803e3d6000fd5b50600092506125ec915050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03868116602483015260448201869052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015613b7957600080fd5b505af1158015613b8d573d6000803e3d6000fd5b505050506040513d6020811015613ba357600080fd5b505190508015613bc757613bba60036015836136d2565b925060009150613d189050565b84613bd3576000613bba565b613bdb612a34565b60095414613bef57613bba600a6016612763565b613bf7614890565b613bff61238a565b8152613c0c878787614531565b604080830182905280516020810190915282518152613c2b9190614742565b60208201819052600d54613c3e9161231a565b600d556001600160a01b0387166000908152600e602090815260409091205490820151613c6b919061231a565b6001600160a01b0388166000818152600e60209081526040918290209390935583810151848401518251938452938301528181019290925290517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f9181900360600190a1866001600160a01b0316306001600160a01b03166000805160206149c083398151915283602001516040518082815260200191505060405180910390a360400151600093509150505b935093915050565b6000670de0b6b3a7640000613d39848460000151612fc0565b81613d4057fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0386811660248301526044820186905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015613da557600080fd5b505af1158015613db9573d6000803e3d6000fd5b505050506040513d6020811015613dcf57600080fd5b505190508015613dee57613de660036006836136d2565b91505061108d565b83613e2857613dfc856129df565b6001600160a01b0386166000908152601060205260408120918255600a54600190920191909155613de6565b613e30612a34565b60095414613e4457613de6600a6004612763565b83613e4d612314565b1015613e5f57613de6600e6003612763565b613e676148b1565b613e70866129df565b60208201819052613e81908661231a565b6040820152600b54613e93908661231a565b6060820152613ea3868686613035565b604080820180516001600160a01b03891660008181526010602090815290859020928355600a54600190930192909255606080860151600b819055935185519283529282018a9052818501929092529081019190915290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b6000831580613f3e575082155b15613f4b5750600061108d565b83830283858281613f5857fe5b041483906110265760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561361f578181015183820152602001613607565b60008183613ff65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561361f578181015183820152602001613607565b5082848161400057fe5b04949350505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0385811660248301528881166044830152878116606483015260848201879052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b15801561407a57600080fd5b505af115801561408e573d6000803e3d6000fd5b505050506040513d60208110156140a457600080fd5b5051905080156140c8576140bb6003600a836136d2565b9250600091506145279050565b6140d0612a34565b600954146140e4576140bb600a600e612763565b6140ec612a34565b856001600160a01b031663cfa992016040518163ffffffff1660e01b815260040160206040518083038186803b15801561412557600080fd5b505afa158015614139573d6000803e3d6000fd5b505050506040513d602081101561414f57600080fd5b505114614162576140bb600a6009612763565b876001600160a01b0316876001600160a01b03161415614188576140bb6006600f612763565b85614199576140bb6007600d612763565b6000198614156141af576140bb6007600c612763565b6000806141be8a8a8a89613318565b909250905081156141ee576141df8260108111156141d857fe5b6010612763565b94506000935061452792505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038a81166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b15801561424857600080fd5b505afa15801561425c573d6000803e3d6000fd5b505050506040513d604081101561427257600080fd5b508051602090910151909250905081156142bd5760405162461bcd60e51b81526004018080602001828103825260328152602001806149196032913960400191505060405180910390fd5b80896001600160a01b03166370a082318d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561431457600080fd5b505afa158015614328573d6000803e3d6000fd5b505050506040513d602081101561433e57600080fd5b50511015614393576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b038a163014156143b9576143b2308e8e85612c81565b9050614443565b6040805163b2a02ff160e01b81526001600160a01b038f811660048301528e81166024830152604482018590529151918c169163b2a02ff1916064808201926020929091908290030181600087803b15801561441457600080fd5b505af1158015614428573d6000803e3d6000fd5b505050506040513d602081101561443e57600080fd5b505190505b801561448d576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b7f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb528d8d868d8660405180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001848152602001836001600160a01b03166001600160a01b031681526020018281526020019550505050505060405180910390a16000975092955050505050505b9550959350505050565b601154604080516370a0823160e01b815230600482015290516000926001600160a01b031691839183916370a08231916024808301926020929190829003018186803b15801561458057600080fd5b505afa158015614594573d6000803e3d6000fd5b505050506040513d60208110156145aa57600080fd5b5051604080516323b872dd60e01b81526001600160a01b038981166004830152306024830152604482018990529151929350908416916323b872dd9160648082019260009290919082900301818387803b15801561460757600080fd5b505af115801561461b573d6000803e3d6000fd5b5050505060003d60008114614637576020811461464157600080fd5b600019915061464d565b60206000803e60005191505b50806146a0576040805162461bcd60e51b815260206004820152601860248201527f544f4b454e5f5452414e534645525f494e5f4641494c45440000000000000000604482015290519081900360640190fd5b601154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156146eb57600080fd5b505afa1580156146ff573d6000803e3d6000fd5b505050506040513d602081101561471557600080fd5b5051905060006147258285612350565b90506147336013548261231a565b60135598975050505050505050565b600061474c61478e565b6126ba848461475961478e565b600061476d670de0b6b3a764000085612fc0565b9050604051806020016040528061478483866136b4565b9052949350505050565b6040518060200160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106147e257805160ff191683800117855561480f565b8280016001018555821561480f579182015b8281111561480f5782518255916020019190600101906147f4565b506123ec9291506148da565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b610efd91905b808211156123ec57600081556001016148e056fe6f6e6c792061646d696e206d617920696e697469616c697a6520746865206d61726b65744c49515549444154455f4a4f4554524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c45446d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e73657474696e6720696e7465726573742072617465206d6f64656c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726f666c6173684c6f616e20616d6f756e742073686f756c642062652067726561746572207468616e207a65726fa265627a7a723158202afdca4b50cb6f03e1b0882c78eaa81a8f766897099157d1a3f860ee5c48331d64736f6c63430005100032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103785760003560e01c806373acee98116101d3578063bd6d894d11610104578063e9c714f2116100a2578063f3fdb15a1161007c578063f3fdb15a14610bcc578063f5e3c46214610bd4578063f851a44014610c0a578063fca7820b14610c1257610378565b8063e9c714f214610b96578063ea11eea414610b9e578063f2b3abbd14610ba657610378565b8063cfa99201116100de578063cfa9920114610ac0578063db006a7514610ac8578063dd62ed3e14610ae5578063e0232b4214610b1357610378565b8063bd6d894d14610a4f578063c37f68e214610a57578063c5ebeaec14610aa357610378565b8063a0712d6811610171578063aa5af0fd1161014b578063aa5af0fd146109e3578063b1d38974146109eb578063b2a02ff1146109f3578063b71d1a0c14610a2957610378565b8063a0712d6814610992578063a6afed95146109af578063a9059cbb146109b757610378565b806394909e62116101ad57806394909e621461080e57806395d89b411461081657806395dd91931461081e57806399d8c1b41461084457610378565b806373acee98146107e1578063852a12e3146107e95780638f840ddd1461080657610378565b80633af9e669116102ad578063526097501161024b5780636330533c116102255780636330533c146107a35780636752e702146107ab5780636f307dc3146107b357806370a08231146107bb57610378565b806352609750146107765780635c60da1b1461077e578063601a0bf11461078657610378565b8063406de0b611610287578063406de0b61461071b578063432f4b2d1461072357806347bd37181461074957806350f6e0821461075157610378565b80633af9e669146106d05780633b1d21a2146106f65780633e941010146106fe57610378565b8063182df0f51161031a57806323b872dd116102f457806323b872dd1461062c5780632608f81814610662578063267822471461068e578063313ce567146106b257610378565b8063182df0f5146104c45780631a31d465146104cc57806322abdbf51461062457610378565b80630f3e4e11116103565780630f3e4e1114610469578063173b99041461048e57806317bfdfbc1461049657806318160ddd146104bc57610378565b806306fdde031461037d578063095ea7b3146103fa5780630e7527021461043a575b600080fd5b610385610c2f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bf5781810151838201526020016103a7565b50505050905090810190601f1680156103ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104266004803603604081101561041057600080fd5b506001600160a01b038135169060200135610cbc565b604080519115158252519081900360200190f35b6104576004803603602081101561045057600080fd5b5035610d27565b60408051918252519081900360200190f35b6104576004803603604081101561047f57600080fd5b50803590602001351515610d3f565b610457610e24565b610457600480360360208110156104ac57600080fd5b50356001600160a01b0316610e2a565b610457610eea565b610457610ef0565b610622600480360360e08110156104e257600080fd5b6001600160a01b03823581169260208101358216926040820135909216916060820135919081019060a081016080820135600160201b81111561052457600080fd5b82018360208201111561053657600080fd5b803590602001918460018302840111600160201b8311171561055757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156105a957600080fd5b8201836020820111156105bb57600080fd5b803590602001918460018302840111600160201b831117156105dc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff169150610f009050565b005b610457610f9f565b6104266004803603606081101561064257600080fd5b506001600160a01b03813581169160208101359091169060400135610fa5565b6104576004803603604081101561067857600080fd5b506001600160a01b038135169060200135611017565b61069661102f565b604080516001600160a01b039092168252519081900360200190f35b6106ba61103e565b6040805160ff9092168252519081900360200190f35b610457600480360360208110156106e657600080fd5b50356001600160a01b0316611047565b610457611094565b6104576004803603602081101561071457600080fd5b503561109e565b6104266110b1565b6104576004803603602081101561073957600080fd5b50356001600160a01b03166110b6565b61045761120a565b6104576004803603604081101561076757600080fd5b50803590602001351515611210565b6104576112bf565b610696611354565b6104576004803603602081101561079c57600080fd5b5035611363565b6106966113fe565b61045761140d565b610696611413565b610457600480360360208110156107d157600080fd5b50356001600160a01b0316611422565b61045761143d565b610457600480360360208110156107ff57600080fd5b50356114f3565b610457611500565b610622611506565b61038561159b565b6104576004803603602081101561083457600080fd5b50356001600160a01b03166115f3565b610622600480360360c081101561085a57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561089457600080fd5b8201836020820111156108a657600080fd5b803590602001918460018302840111600160201b831117156108c757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561091957600080fd5b82018360208201111561092b57600080fd5b803590602001918460018302840111600160201b8311171561094c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050903560ff1691506115fe9050565b610457600480360360208110156109a857600080fd5b50356117e5565b6104576117f3565b610426600480360360408110156109cd57600080fd5b506001600160a01b038135169060200135611a03565b610457611a75565b610457611a7b565b61045760048036036060811015610a0957600080fd5b506001600160a01b03813581169160208101359091169060400135611ae9565b61045760048036036020811015610a3f57600080fd5b50356001600160a01b0316611b5a565b610457611be6565b610a7d60048036036020811015610a6d57600080fd5b50356001600160a01b0316611ca2565b604080519485526020850193909352838301919091526060830152519081900360800190f35b61045760048036036020811015610ab957600080fd5b5035611cde565b610457611ceb565b61045760048036036020811015610ade57600080fd5b5035611cf1565b61045760048036036040811015610afb57600080fd5b506001600160a01b0381358116916020013516611cfe565b61062260048036036060811015610b2957600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610b5857600080fd5b820183602082011115610b6a57600080fd5b803590602001918460018302840111600160201b83111715610b8b57600080fd5b509092509050611d29565b61045761206b565b61045761216e565b61045760048036036020811015610bbc57600080fd5b50356001600160a01b0316612173565b6106966121ad565b61045760048036036060811015610bea57600080fd5b506001600160a01b038135811691602081013591604090910135166121bc565b6106966121d6565b61045760048036036020811015610c2857600080fd5b50356121ea565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610cb45780601f10610c8957610100808354040283529160200191610cb4565b820191906000526020600020905b815481529060010190602001808311610c9757829003601f168201915b505050505081565b336000818152600f602090815260408083206001600160a01b03871680855290835281842086905581518681529151939493909284927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a35060019392505050565b600080610d35836000612268565b509150505b919050565b60008060008315610d7057610d5b610d55612314565b8661231a565b9150610d69600b5486612350565b9050610d92565b610d81610d7b612314565b86612350565b9150610d8f600b548661231a565b90505b600654600c54604080516315f2405360e01b815260048101869052602481018590526044810192909252516001600160a01b03909216916315f2405391606480820192602092909190829003018186803b158015610def57600080fd5b505afa158015610e03573d6000803e3d6000fd5b505050506040513d6020811015610e1957600080fd5b505195945050505050565b60085481565b6000805460ff16610e6f576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155610e816117f3565b14610ecc576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b610ed5826115f3565b90505b6000805460ff19166001179055919050565b600d5481565b6000610efa61238a565b90505b90565b610f0e8686868686866115fe565b601180546001600160a01b0319166001600160a01b038981169190911791829055604080516318160ddd60e01b8152905192909116916318160ddd91600480820192602092909190829003018186803b158015610f6a57600080fd5b505afa158015610f7e573d6000803e3d6000fd5b505050506040513d6020811015610f9457600080fd5b505050505050505050565b60135481565b6000805460ff16610fea576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155611000338686866123f0565b1490506000805460ff191660011790559392505050565b600080611026848460006125f9565b50949350505050565b6004546001600160a01b031681565b60035460ff1681565b600061105161478e565b6040518060200160405280611064611be6565b90526001600160a01b0384166000908152600e602052604090205490915061108d9082906126a6565b9392505050565b6000610efa612314565b60006110ab8260006126c5565b92915050565b600181565b60035460009061010090046001600160a01b031633146110e3576110dc60016029612763565b9050610d3a565b600554604080516340e6dcc560e01b815290516001600160a01b03928316928516916340e6dcc5916004808301926020929190829003018186803b15801561112a57600080fd5b505afa15801561113e573d6000803e3d6000fd5b505050506040513d602081101561115457600080fd5b50516111a7576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517f17d6db5ffe5a3d1c3d7a98194dca4f7d808d621e6ff9077ed574513d553a2a859281900390910190a1600061108d565b600b5481565b6000806000831561123b57611226610d55612314565b9150611234600b5486612350565b9050611257565b611246610d7b612314565b9150611254600b548661231a565b90505b600654600c5460085460408051635c0b440b60e11b8152600481018790526024810186905260448101939093526064830191909152516001600160a01b039092169163b816881691608480820192602092909190829003018186803b158015610def57600080fd5b6006546000906001600160a01b03166315f240536112db612314565b600b54600c546040518463ffffffff1660e01b815260040180848152602001838152602001828152602001935050505060206040518083038186803b15801561132357600080fd5b505afa158015611337573d6000803e3d6000fd5b505050506040513d602081101561134d57600080fd5b5051905090565b6012546001600160a01b031681565b6000805460ff166113a8576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556113ba6117f3565b905080156113e0576113d88160108111156113d157fe5b601d612763565b915050610ed8565b6113e9836127c9565b9150506000805460ff19166001179055919050565b6005546001600160a01b031681565b60145481565b6011546001600160a01b031681565b6001600160a01b03166000908152600e602052604090205490565b6000805460ff16611482576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556114946117f3565b146114df576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b50600b546000805460ff1916600117905590565b60006110ab8260006128c7565b600c5481565b60005460ff1661154a576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff1916815561155c61295f565b90506000611568612314565b905060006115768383612350565b9050611584600c548261231a565b600c5550506013556000805460ff19166001179055565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610cb45780601f10610c8957610100808354040283529160200191610cb4565b60006110ab826129df565b60035461010090046001600160a01b0316331461164c5760405162461bcd60e51b81526004018080602001828103825260248152602001806148f56024913960400191505060405180910390fd5b60095415801561165c5750600a54155b6116975760405162461bcd60e51b815260040180806020018281038252602381526020018061494b6023913960400191505060405180910390fd5b6007849055836116d85760405162461bcd60e51b815260040180806020018281038252603081526020018061496e6030913960400191505060405180910390fd5b60006116e3876110b6565b90508015611738576040805162461bcd60e51b815260206004820152601960248201527f73657474696e67206a6f6574726f6c6c6572206661696c656400000000000000604482015290519081900360640190fd5b611740612a34565b600955670de0b6b3a7640000600a5561175886612a38565b905080156117975760405162461bcd60e51b815260040180806020018281038252602281526020018061499e6022913960400191505060405180910390fd5b83516117aa9060019060208701906147a1565b5082516117be9060029060208601906147a1565b50506003805460ff90921660ff199283161790556000805490911660011790555050505050565b600080610d35836000612bad565b6000806117fe612a34565b6009549091508082141561181757600092505050610efd565b6000611821612314565b600b54600c54600a54600654604080516315f2405360e01b815260048101879052602481018690526044810185905290519596509394929391926000926001600160a01b03909216916315f24053916064808301926020929190829003018186803b15801561188f57600080fd5b505afa1580156118a3573d6000803e3d6000fd5b505050506040513d60208110156118b957600080fd5b5051905065048c27395000811115611918576040805162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015290519081900360640190fd5b60006119248888612350565b905061192e61478e565b61194660405180602001604052808581525083612c2f565b9050600061195482886126a6565b90506000611962828961231a565b905060006119816040518060200160405280600854815250848a612c59565b9050600061199085898a612c59565b60098e9055600a819055600b849055600c839055604080518d8152602081018790528082018390526060810186905290519192507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc04919081900360800190a160009d505050505050505050505050505090565b6000805460ff16611a48576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155611a5e333386866123f0565b1490505b6000805460ff1916600117905592915050565b600a5481565b6006546000906001600160a01b031663b8168816611a97612314565b600b54600c546008546040518563ffffffff1660e01b81526004018085815260200184815260200183815260200182815260200194505050505060206040518083038186803b15801561132357600080fd5b6000805460ff16611b2e576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19169055611b4433858585612c81565b90506000805460ff191660011790559392505050565b60035460009061010090046001600160a01b03163314611b80576110dc6001602f612763565b600480546001600160a01b038481166001600160a01b0319831681179093556040805191909216808252602082019390935281517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9929181900390910190a1600061108d565b6000805460ff16611c2b576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155611c3d6117f3565b14611c88576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b611c90610ef0565b90506000805460ff1916600117905590565b6000806000806000611cb386611422565b90506000611cc0876129df565b90506000611ccc61238a565b90506000989297509095509350915050565b60006110ab826000612ec5565b60095481565b60006110ab826000612f45565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b60005460ff16611d6d576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff1916905582611db35760405162461bcd60e51b815260040180806020018281038252602c815260200180614a14602c913960400191505060405180910390fd5b6000611dbd6117f3565b14611e08576040805162461bcd60e51b81526020600482015260166024820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604482015290519081900360640190fd5b6000611e1261295f565b90506000611e1e612314565b905084811015611e6e576040805162461bcd60e51b8152602060048201526016602482015275494e53554646494349454e545f4c495155494449545960501b604482015290519081900360640190fd5b6000611e86611e7e876008612fc0565b612710613002565b9050611e9487876000613035565b611ea0600b548761231a565b600b5560115460405163405b019d60e01b815233600482018181526001600160a01b0393841660248401819052604484018b90526064840186905260a06084850190815260a485018a9052948c169463405b019d9491928c9288928d928d9290919060c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b158015611f4557600080fd5b505af1158015611f59573d6000803e3d6000fd5b505050506000611f6761295f565b9050611f73848361231a565b8114611fbd576040805162461bcd60e51b8152602060048201526014602482015273109053105390d157d25390d3d394d254d511539560621b604482015290519081900360640190fd5b6000611fd96040518060200160405280600854815250846126a6565b9050611fe7600c548261231a565b600c55611ff4848461231a565b601355600b546120049089612350565b600b55604080518981526020810185905280820183905290516001600160a01b038b16917f33c8e097c526683cbdb29adf782fac95e9d0fbe0ed635c13d8c75fdf726557d9919081900360600190a250506000805460ff1916600117905550505050505050565b6004546000906001600160a01b031633141580612086575033155b1561209e5761209760016000612763565b9050610efd565b60038054600480546001600160a01b03818116610100818102610100600160a81b0319871617968790556001600160a01b031990931690935560408051948390048216808652929095041660208401528351909391927ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc92908290030190a1600454604080516001600160a01b038085168252909216602083015280517fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99281900390910190a160009250505090565b600881565b60008061217e6117f3565b905080156121a45761219c81601081111561219557fe5b602a612763565b915050610d3a565b61108d83612a38565b6006546001600160a01b031681565b6000806121cc858585600061313c565b5095945050505050565b60035461010090046001600160a01b031681565b6000805460ff1661222f576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556122416117f3565b9050801561225f576113d881601081111561225857fe5b6030612763565b6113e983613270565b60008054819060ff166122af576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556122c16117f3565b905080156122ec576122df8160108111156122d857fe5b6023612763565b9250600091506122fe9050565b6122f833338787613318565b92509250505b6000805460ff1916600117905590939092509050565b60135490565b600061108d8383604051806040016040528060118152602001706164646974696f6e206f766572666c6f7760781b8152506135c8565b600061108d8383604051806040016040528060158152602001747375627472616374696f6e20756e646572666c6f7760581b81525061365a565b600d546000908061239f575050600754610efd565b60006123a9612314565b905060006123c46123bc83600b5461231a565b600c54612350565b905060006123e0826040518060200160405280878152506136b4565b9450610efd9350505050565b5090565b600554604080516317b9b84b60e31b81523060048201526001600160a01b03868116602483015285811660448301526064820185905291516000938493169163bdcdc25891608480830192602092919082900301818787803b15801561245557600080fd5b505af1158015612469573d6000803e3d6000fd5b505050506040513d602081101561247f57600080fd5b50519050801561249e5761249660036034836136d2565b9150506125f1565b836001600160a01b0316856001600160a01b031614156124c45761249660026035612763565b60006001600160a01b0387811690871614156124e3575060001961250b565b506001600160a01b038086166000908152600f60209081526040808320938a16835292905220545b6001600160a01b0386166000908152600e602052604090205461252e9085612350565b6001600160a01b038088166000908152600e6020526040808220939093559087168152205461255d908561231a565b6001600160a01b0386166000908152600e602052604090205560001981146125b0576125898185612350565b6001600160a01b038088166000908152600f60209081526040808320938c16835292905220555b846001600160a01b0316866001600160a01b03166000805160206149c0833981519152866040518082815260200191505060405180910390a360005b925050505b949350505050565b60008054819060ff16612640576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556126526117f3565b9050801561267d5761267081601081111561266957fe5b6022612763565b92506000915061268f9050565b61268933878787613318565b92509250505b6000805460ff191660011790559094909350915050565b60006126b061478e565b6126ba8484612c2f565b90506125f181613738565b6000805460ff1661270a576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff1916815561271c6117f3565b905080156127425761273a81601081111561273357fe5b6036612763565b915050611a62565b61274c8484613747565b509150506000805460ff1916600117905592915050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601081111561279257fe5b83603c81111561279e57fe5b604080519283526020830191909152600082820152519081900360600190a182601081111561108d57fe5b600354600090819061010090046001600160a01b031633146127f15761219c6001601e612763565b6127f9612a34565b6009541461280d5761219c600a6020612763565b82612816612314565b10156128285761219c600e601f612763565b600c5483111561283e5761219c60026021612763565b61284a600c5484612350565b600c81905560035490915061286f9061010090046001600160a01b0316846001613035565b600354604080516101009092046001600160a01b0316825260208201859052818101839052517f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e916060908290030190a1600061108d565b6000805460ff1661290c576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff1916815561291e6117f3565b9050801561293c5761273a81601081111561293557fe5b6019612763565b61294933600086866137e5565b9150506000805460ff1916600117905592915050565b601154604080516370a0823160e01b815230600482015290516000926001600160a01b03169182916370a0823191602480820192602092909190829003018186803b1580156129ad57600080fd5b505afa1580156129c1573d6000803e3d6000fd5b505050506040513d60208110156129d757600080fd5b505191505090565b6001600160a01b03811660009081526010602052604081208054612a07576000915050610d3a565b6000612a198260000154600a54612fc0565b90506000612a2b828460010154613002565b95945050505050565b4290565b600354600090819061010090046001600160a01b03163314612a605761219c6001602c612763565b612a68612a34565b60095414612a7c5761219c600a602b612763565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612acd57600080fd5b505afa158015612ae1573d6000803e3d6000fd5b505050506040513d6020811015612af757600080fd5b5051612b4a576040805162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b03858116918217909255604080519284168352602083019190915280517fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269281900390910190a1600061108d565b60008054819060ff16612bf4576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155612c066117f3565b90508015612c24576122df816010811115612c1d57fe5b6014612763565b6122f8338686613b18565b612c3761478e565b6040518060200160405280612c50856000015185612fc0565b90529392505050565b6000612c6361478e565b612c6d8585612c2f565b9050612a2b612c7b82613738565b8461231a565b6005546040805163d02f735160e01b81523060048201526001600160a01b038781166024830152868116604483015285811660648301526084820185905291516000938493169163d02f73519160a480830192602092919082900301818787803b158015612cee57600080fd5b505af1158015612d02573d6000803e3d6000fd5b505050506040513d6020811015612d1857600080fd5b505190508015612d2f5761249660036011836136d2565b82612d3b576000612496565b846001600160a01b0316846001600160a01b03161415612d615761249660066012612763565b6000612d7d846040518060200160405280601454815250613d20565b90506000612d8b8583612350565b90506000612d9761238a565b90506000612db3604051806020016040528084815250856126a6565b6001600160a01b0389166000908152600e6020526040902054909150612dd99088612350565b6001600160a01b03808a166000908152600e602052604080822093909355908b1681522054612e08908461231a565b6001600160a01b038a166000908152600e6020526040902055600c54612e2e908261231a565b600c55600d54612e3e9085612350565b600d556040805188815290516001600160a01b03808c1692908b16916000805160206149c08339815191529181900360200190a3600c54604080513081526020810184905280820192909252517fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59181900360600190a160009a9950505050505050505050565b6000805460ff16612f0a576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155612f1c6117f3565b90508015612f3a5761273a816010811115612f3357fe5b6002612763565b612949338585613d48565b6000805460ff16612f8a576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff19168155612f9c6117f3565b90508015612fb35761273a81601081111561293557fe5b61294933856000866137e5565b600061108d83836040518060400160405280601781526020017f6d756c7469706c69636174696f6e206f766572666c6f77000000000000000000815250613f31565b600061108d83836040518060400160405280600e81526020016d646976696465206279207a65726f60901b815250613fa7565b6011546040805163a9059cbb60e01b81526001600160a01b0386811660048301526024820186905291519190921691829163a9059cbb9160448082019260009290919082900301818387803b15801561308d57600080fd5b505af11580156130a1573d6000803e3d6000fd5b5050505060003d600081146130bd57602081146130c757600080fd5b60001991506130d3565b60206000803e60005191505b5080613126576040805162461bcd60e51b815260206004820152601960248201527f544f4b454e5f5452414e534645525f4f55545f4641494c454400000000000000604482015290519081900360640190fd5b61313260135485612350565b6013555050505050565b60008054819060ff16613183576040805162461bcd60e51b815260206004820152600a6024820152691c994b595b9d195c995960b21b604482015290519081900360640190fd5b6000805460ff191681556131956117f3565b905080156131c0576131b38160108111156131ac57fe5b6007612763565b9250600091506132589050565b846001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156131fb57600080fd5b505af115801561320f573d6000803e3d6000fd5b505050506040513d602081101561322557600080fd5b505190508015613245576131b381601081111561323e57fe5b6008612763565b6132523388888888614009565b92509250505b6000805460ff19166001179055909590945092505050565b60035460009061010090046001600160a01b03163314613296576110dc60016031612763565b61329e612a34565b600954146132b2576110dc600a6032612763565b670de0b6b3a76400008211156132ce576110dc60026033612763565b6008805490839055604080518281526020810185905281517faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f821460929181900390910190a1600061108d565b60055460408051631200453160e11b81523060048201526001600160a01b0387811660248301528681166044830152606482018690529151600093849384939116916324008a629160848082019260209290919082900301818787803b15801561338157600080fd5b505af1158015613395573d6000803e3d6000fd5b505050506040513d60208110156133ab57600080fd5b5051905080156133cf576133c260036024836136d2565b9250600091506135bf9050565b84613409576133dd866129df565b6001600160a01b0387166000908152601060205260408120918255600a546001909201919091556133c2565b613411612a34565b60095414613425576133c2600a6025612763565b61342d61481b565b6001600160a01b0387166000908152601060205260409020600101546060820152613457876129df565b6080820152600019861415613475576080810151604082015261347d565b604081018690525b61348c88826040015187614531565b60e0820181905260808201516134a191612350565b60a0820152600b5460e08201516134b89190612350565b8160c00181815250508060a0015160106000896001600160a01b03166001600160a01b0316815260200190815260200160002060000181905550600a5460106000896001600160a01b03166001600160a01b03168152602001908152602001600020600101819055508060c00151600b819055507f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a188888360e001518460a001518560c0015160405180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b031681526020018481526020018381526020018281526020019550505050505060405180910390a160e00151600093509150505b94509492505050565b600083830182858210156110265760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561361f578181015183820152602001613607565b50505050905090810190601f16801561364c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b600081848411156136ac5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561361f578181015183820152602001613607565b505050900390565b600061108d6136cb84670de0b6b3a7640000612fc0565b8351613002565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa084601081111561370157fe5b84603c81111561370d57fe5b604080519283526020830191909152818101859052519081900360600190a18360108111156125f157fe5b51670de0b6b3a7640000900490565b600080600080613755612a34565b6009541461377457613769600a6037612763565b935091506137de9050565b61377f338787614531565b905061378d600c548261231a565b600c819055604080513381526020810184905280820183905290519193507fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5919081900360600190a1600093509150505b9250929050565b60008315806137f2575082155b61382d5760405162461bcd60e51b81526004018080602001828103825260348152602001806149e06034913960400191505060405180910390fd5b613835614861565b61383d61238a565b8152841561386e5760208082018690526040805191820190528151815261386490866126a6565b6040820152613897565b61388a8460405180602001604052808460000151815250614742565b6020820152604081018490525b6005546020808301516040805163eabe7d9160e01b81523060048201526001600160a01b038b8116602483015260448201939093529051600094929092169263eabe7d919260648084019382900301818787803b1580156138f757600080fd5b505af115801561390b573d6000803e3d6000fd5b505050506040513d602081101561392157600080fd5b505190508015613941576139386003601a836136d2565b925050506125f1565b8515801561394d575084155b15613959576000613938565b613961612a34565b6009541461397557613938600a601b612763565b613985600d548360200151612350565b60608301526001600160a01b0387166000908152600e6020908152604090912054908301516139b49190612350565b608083015260408201516139c6612314565b10156139d857613938600e601c612763565b6139e787836040015186613035565b6060820151600d5560808201516001600160a01b0388166000818152600e602090815260409182902093909355828501518151908152905130936000805160206149c0833981519152928290030190a360408083015160208085015183516001600160a01b038c168152918201929092528083019190915290517fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a9299181900360600190a1600554604080840151602085015182516351dff98960e01b81523060048201526001600160a01b038c811660248301526044820193909352606481019190915291519216916351dff9899160848082019260009290919082900301818387803b158015613af757600080fd5b505af1158015613b0b573d6000803e3d6000fd5b50600092506125ec915050565b60055460408051634ef4c3e160e01b81523060048201526001600160a01b03868116602483015260448201869052915160009384938493911691634ef4c3e19160648082019260209290919082900301818787803b158015613b7957600080fd5b505af1158015613b8d573d6000803e3d6000fd5b505050506040513d6020811015613ba357600080fd5b505190508015613bc757613bba60036015836136d2565b925060009150613d189050565b84613bd3576000613bba565b613bdb612a34565b60095414613bef57613bba600a6016612763565b613bf7614890565b613bff61238a565b8152613c0c878787614531565b604080830182905280516020810190915282518152613c2b9190614742565b60208201819052600d54613c3e9161231a565b600d556001600160a01b0387166000908152600e602090815260409091205490820151613c6b919061231a565b6001600160a01b0388166000818152600e60209081526040918290209390935583810151848401518251938452938301528181019290925290517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f9181900360600190a1866001600160a01b0316306001600160a01b03166000805160206149c083398151915283602001516040518082815260200191505060405180910390a360400151600093509150505b935093915050565b6000670de0b6b3a7640000613d39848460000151612fc0565b81613d4057fe5b049392505050565b6005546040805163368f515360e21b81523060048201526001600160a01b0386811660248301526044820186905291516000938493169163da3d454c91606480830192602092919082900301818787803b158015613da557600080fd5b505af1158015613db9573d6000803e3d6000fd5b505050506040513d6020811015613dcf57600080fd5b505190508015613dee57613de660036006836136d2565b91505061108d565b83613e2857613dfc856129df565b6001600160a01b0386166000908152601060205260408120918255600a54600190920191909155613de6565b613e30612a34565b60095414613e4457613de6600a6004612763565b83613e4d612314565b1015613e5f57613de6600e6003612763565b613e676148b1565b613e70866129df565b60208201819052613e81908661231a565b6040820152600b54613e93908661231a565b6060820152613ea3868686613035565b604080820180516001600160a01b03891660008181526010602090815290859020928355600a54600190930192909255606080860151600b819055935185519283529282018a9052818501929092529081019190915290517f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809181900360800190a160009695505050505050565b6000831580613f3e575082155b15613f4b5750600061108d565b83830283858281613f5857fe5b041483906110265760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561361f578181015183820152602001613607565b60008183613ff65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561361f578181015183820152602001613607565b5082848161400057fe5b04949350505050565b60055460408051632fe3f38f60e11b81523060048201526001600160a01b0385811660248301528881166044830152878116606483015260848201879052915160009384938493911691635fc7e71e9160a48082019260209290919082900301818787803b15801561407a57600080fd5b505af115801561408e573d6000803e3d6000fd5b505050506040513d60208110156140a457600080fd5b5051905080156140c8576140bb6003600a836136d2565b9250600091506145279050565b6140d0612a34565b600954146140e4576140bb600a600e612763565b6140ec612a34565b856001600160a01b031663cfa992016040518163ffffffff1660e01b815260040160206040518083038186803b15801561412557600080fd5b505afa158015614139573d6000803e3d6000fd5b505050506040513d602081101561414f57600080fd5b505114614162576140bb600a6009612763565b876001600160a01b0316876001600160a01b03161415614188576140bb6006600f612763565b85614199576140bb6007600d612763565b6000198614156141af576140bb6007600c612763565b6000806141be8a8a8a89613318565b909250905081156141ee576141df8260108111156141d857fe5b6010612763565b94506000935061452792505050565b6005546040805163c488847b60e01b81523060048201526001600160a01b038a81166024830152604482018590528251600094859492169263c488847b926064808301939192829003018186803b15801561424857600080fd5b505afa15801561425c573d6000803e3d6000fd5b505050506040513d604081101561427257600080fd5b508051602090910151909250905081156142bd5760405162461bcd60e51b81526004018080602001828103825260328152602001806149196032913960400191505060405180910390fd5b80896001600160a01b03166370a082318d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561431457600080fd5b505afa158015614328573d6000803e3d6000fd5b505050506040513d602081101561433e57600080fd5b50511015614393576040805162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015290519081900360640190fd5b60006001600160a01b038a163014156143b9576143b2308e8e85612c81565b9050614443565b6040805163b2a02ff160e01b81526001600160a01b038f811660048301528e81166024830152604482018590529151918c169163b2a02ff1916064808201926020929091908290030181600087803b15801561441457600080fd5b505af1158015614428573d6000803e3d6000fd5b505050506040513d602081101561443e57600080fd5b505190505b801561448d576040805162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015290519081900360640190fd5b7f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb528d8d868d8660405180866001600160a01b03166001600160a01b03168152602001856001600160a01b03166001600160a01b03168152602001848152602001836001600160a01b03166001600160a01b031681526020018281526020019550505050505060405180910390a16000975092955050505050505b9550959350505050565b601154604080516370a0823160e01b815230600482015290516000926001600160a01b031691839183916370a08231916024808301926020929190829003018186803b15801561458057600080fd5b505afa158015614594573d6000803e3d6000fd5b505050506040513d60208110156145aa57600080fd5b5051604080516323b872dd60e01b81526001600160a01b038981166004830152306024830152604482018990529151929350908416916323b872dd9160648082019260009290919082900301818387803b15801561460757600080fd5b505af115801561461b573d6000803e3d6000fd5b5050505060003d60008114614637576020811461464157600080fd5b600019915061464d565b60206000803e60005191505b50806146a0576040805162461bcd60e51b815260206004820152601860248201527f544f4b454e5f5452414e534645525f494e5f4641494c45440000000000000000604482015290519081900360640190fd5b601154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156146eb57600080fd5b505afa1580156146ff573d6000803e3d6000fd5b505050506040513d602081101561471557600080fd5b5051905060006147258285612350565b90506147336013548261231a565b60135598975050505050505050565b600061474c61478e565b6126ba848461475961478e565b600061476d670de0b6b3a764000085612fc0565b9050604051806020016040528061478483866136b4565b9052949350505050565b6040518060200160405280600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106147e257805160ff191683800117855561480f565b8280016001018555821561480f579182015b8281111561480f5782518255916020019190600101906147f4565b506123ec9291506148da565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60405180606001604052806000815260200160008152602001600081525090565b604080516080810190915280600081526020016000815260200160008152602001600081525090565b610efd91905b808211156123ec57600081556001016148e056fe6f6e6c792061646d696e206d617920696e697469616c697a6520746865206d61726b65744c49515549444154455f4a4f4554524f4c4c45525f43414c43554c4154455f414d4f554e545f5345495a455f4641494c45446d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6e6365696e697469616c2065786368616e67652072617465206d7573742062652067726561746572207468616e207a65726f2e73657474696e6720696e7465726573742072617465206d6f64656c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416d6f756e74496e206d757374206265207a65726f666c6173684c6f616e20616d6f756e742073686f756c642062652067726561746572207468616e207a65726fa265627a7a723158202afdca4b50cb6f03e1b0882c78eaa81a8f766897099157d1a3f860ee5c48331d64736f6c63430005100032",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
