{
  "_format": "hh-sol-artifact-1",
  "contractName": "PendleLiquidityMiningBaseV2",
  "sourceName": "contracts/core/abstractV2/PendleLiquidityMiningBaseV2.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governanceManager",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_pausingManager",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_whitelist",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_pendleTokenAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_stakeToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_yieldToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_startTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_epochDuration",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_vestingEpochs",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "sendTo",
          "type": "address"
        }
      ],
      "name": "EtherWithdraw",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "rewards",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numberOfEpochs",
          "type": "uint256"
        }
      ],
      "name": "Funded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "PendleRewardsSettled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "epochIds",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "rewards",
          "type": "uint256[]"
        }
      ],
      "name": "RewardsToppedUp",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Staked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "sendTo",
          "type": "address"
        }
      ],
      "name": "TokenWithdraw",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Withdrawn",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MULTIPLIER",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "balances",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "dueInterests",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "epochDuration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "rewards",
          "type": "uint256[]"
        }
      ],
      "name": "fund",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentEpochId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governanceManager",
      "outputs": [
        {
          "internalType": "contract PendleGovernanceManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lastEpochClaimed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastNYield",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lastParamL",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "lastTimeUserStakeUpdated",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "numberOfEpochs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paramL",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pausingManager",
      "outputs": [
        {
          "internalType": "contract IPendlePausingManager",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendleTokenAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "epochId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "readEpochData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalStakeUnits",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalRewards",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastUpdated",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "stakeUnitsForUser",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "availableRewardsForUser",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "redeemDueInterests",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "redeemRewards",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "rewards",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "name": "setUpEmergencyMode",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "forAddr",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "stake",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stakeToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "epochIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "rewards",
          "type": "uint256[]"
        }
      ],
      "name": "topUpRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalStake",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "epochId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "updateAndReadEpochData",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalStakeUnits",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalRewards",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lastUpdated",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "stakeUnitsForUser",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "availableRewardsForUser",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vestingEpochs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "whitelist",
      "outputs": [
        {
          "internalType": "contract IPendleWhitelist",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "toAddr",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address payable",
          "name": "sendTo",
          "type": "address"
        }
      ],
      "name": "withdrawEther",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "sendTo",
          "type": "address"
        }
      ],
      "name": "withdrawToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "yieldToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6101a06040523480156200001257600080fd5b50604051620037113803806200371183398181016040526101208110156200003957600080fd5b508051602082015160408301516060840151608085015160a086015160c087015160e088015161010090980151969795969495939492939192909190886001600160a01b038116620000c1576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b60008054336001600160a01b031990911617905560601b6001600160601b0319166080526001805542831162000133576040805162461bcd60e51b8152602060048201526012602482015271494e56414c49445f53544152545f54494d4560701b604482015290519081900360640190fd5b62000149866200020560201b62001ea81760201c565b6200015f856200020560201b62001ea81760201c565b60008111620001b5576040805162461bcd60e51b815260206004820152601660248201527f494e56414c49445f56455354494e475f45504f43485300000000000000000000604482015290519081900360640190fd5b6001600160601b0319606098891b811660c05296881b871660a05294871b861660e05292861b851661010052941b90921661012052610140929092526101605261018052506001600b55620002b5565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024157600080fd5b505afa15801562000256573d6000803e3d6000fd5b505050506040513d60208110156200026d57600080fd5b505111620002b2576040805162461bcd60e51b815260206004820152600d60248201526c0494e56414c49445f455243323609c1b604482015290519081900360640190fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205160601c610140516101605161018051613329620003e86000398061137852806120a952806125825280612a8352508061097b52806126f05280612dbe5280612e13525080610f0e52806126b852806127155280612de4525080610b7f5280610eea5280611bb25280611bec52806122a2528061233852806123d552806124865280612b645280612ed65280612f2552508061099f5280611b8752806122645280612d515280612d8c525080610e125280611054528061131952806113ac5280611b5152806122275250806106af5280610a37528061116b5280611540528061180852806119b05280611a6a5280611c89525080611342528061145952508061196b528061219b52506133296000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806383bbfde11161010f578063a81e457c116100a2578063ce56c45411610071578063ce56c454146105ab578063d2e6d1c3146105d7578063dd254a6a146105df578063f3fef3a31461060d576101e5565b8063a81e457c14610543578063adc9772e1461054b578063b40310c914610577578063be66c60f146105a3576101e5565b806393e59dc1116100de57806393e59dc11461050557806396b973c01461050d5780639a51d2d114610533578063a29a839f1461053b576101e5565b806383bbfde11461045f5780638b0e9f3f146104cf5780638f373bf3146104d75780639262187b146104df576101e5565b80634ff0876a1161018757806370b66cd01161015657806370b66cd014610367578063738573f41461042957806376d5de851461044f57806378e9792514610457576101e5565b80634ff0876a1461030d57806351ed6a3014610315578063541a7ca6146103395780636304a6bc14610341576101e5565b806317368841116101c3578063173688411461028157806327e235e3146102895780632936ada7146102af5780633ccdbb28146102d5576101e5565b806304f917af146101ea578063059f8b1614610241578063166766321461025b575b600080fd5b6102166004803603604081101561020057600080fd5b50803590602001356001600160a01b0316610639565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610249610820565b60408051918252519081900360200190f35b6102496004803603602081101561027157600080fd5b50356001600160a01b031661082d565b61024961083f565b6102496004803603602081101561029f57600080fd5b50356001600160a01b0316610845565b610249600480360360208110156102c557600080fd5b50356001600160a01b0316610857565b61030b600480360360608110156102eb57600080fd5b506001600160a01b03813581169160208101359160409091013516610869565b005b610249610979565b61031d61099d565b604080516001600160a01b039092168252519081900360200190f35b6102496109c1565b6102496004803603602081101561035757600080fd5b50356001600160a01b03166109c7565b61030b6004803603604081101561037d57600080fd5b81019060208101813564010000000081111561039857600080fd5b8201836020820111156103aa57600080fd5b803590602001918460208302840111640100000000831117156103cc57600080fd5b9193909290916020810190356401000000008111156103ea57600080fd5b8201836020820111156103fc57600080fd5b8035906020019184602083028401116401000000008311171561041e57600080fd5b509092509050610c20565b6102496004803603602081101561043f57600080fd5b50356001600160a01b0316610ed6565b61031d610ee8565b610249610f0c565b61030b6004803603602081101561047557600080fd5b81019060208101813564010000000081111561049057600080fd5b8201836020820111156104a257600080fd5b803590602001918460208302840111640100000000831117156104c457600080fd5b509092509050610f30565b6102496110ef565b6102496110f5565b610249600480360360208110156104f557600080fd5b50356001600160a01b03166110fb565b61031d611340565b6102496004803603602081101561052357600080fd5b50356001600160a01b0316611364565b610249611376565b61024961139a565b61031d6113aa565b61030b6004803603604081101561056157600080fd5b506001600160a01b0381351690602001356113ce565b6102166004803603604081101561058d57600080fd5b50803590602001356001600160a01b03166117c0565b61031d611806565b61030b600480360360408110156105c157600080fd5b50803590602001356001600160a01b031661182a565b61031d611969565b61030b600480360360408110156105f557600080fd5b506001600160a01b038135169060200135151561198d565b61030b6004803603604081101561062357600080fd5b506001600160a01b038135169060200135611c1b565b600080600080600060026001541415610687576040805162461bcd60e51b815260206004820152601f602482015260008051602061322d833981519152604482015290519081900360640190fd5b600260015560408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b1580156106f257600080fd5b505af1158015610706573d6000803e3d6000fd5b505050506040513d604081101561071c57600080fd5b505190508015610767576040805162461bcd60e51b815260206004820152601160248201527013125457d35253925391d7d4105554d151607a1b604482015290519081900360640190fd5b6000600254116107ab576040805162461bcd60e51b815260206004820152600a6024820152691393d517d1955391115160b21b604482015290519081900360640190fd5b60006107b561139a565b116107f5576040805162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b604482015290519081900360640190fd5b6107fe87611f54565b61080888886117c0565b60018055939c929b5090995097509095509350505050565b68056bc75e2d6310000081565b60096020526000908152604090205481565b60025481565b60056020526000908152604090205481565b60076020526000908152604090205481565b610871612197565b6001600160a01b0316336001600160a01b0316146108c8576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b6108d183612223565b610916576040805162461bcd60e51b81526020600482015260116024820152701513d2d15397d393d517d0531313d5d151607a1b604482015290519081900360640190fd5b61092a6001600160a01b03841682846122dd565b604080516001600160a01b0380861682526020820185905283168183015290517f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e69181900360600190a1505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5481565b600060026001541415610a0f576040805162461bcd60e51b815260206004820152601f602482015260008051602061322d833981519152604482015290519081900360640190fd5b600260015560408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b158015610a7a57600080fd5b505af1158015610a8e573d6000803e3d6000fd5b505050506040513d6040811015610aa457600080fd5b505190508015610aef576040805162461bcd60e51b815260206004820152601160248201527013125457d35253925391d7d4105554d151607a1b604482015290519081900360640190fd5b600060025411610b33576040805162461bcd60e51b815260206004820152600a6024820152691393d517d1955391115160b21b604482015290519081900360640190fd5b6000610b3d61139a565b11610b7d576040805162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bb45760009150610c16565b6001600160a01b038316610bfe576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b610c0783612334565b9150610c1383836123cd565b91505b5060018055919050565b610c28612197565b6001600160a01b0316336001600160a01b031614610c7f576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b828114610cc4576040805162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f41525241595360901b604482015290519081900360640190fd5b6000610cce61139a565b6002549091506000805b86811015610e0457878782818110610cec57fe5b9050602002013584108015610d13575082888883818110610d0957fe5b9050602002013511155b610d57576040805162461bcd60e51b815260206004820152601060248201526f1253959053125117d15413d0d217d25160821b604482015290519081900360640190fd5b610d7c868683818110610d6657fe5b90506020020135836124ad90919063ffffffff16565b9150610dcb868683818110610d8d57fe5b90506020020135600460008b8b86818110610da457fe5b905060200201358152602001908152602001600020600101546124ad90919063ffffffff16565b600460008a8a85818110610ddb57fe5b905060200201358152602001908152602001600020600101819055508080600101915050610cd8565b50610e3a6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461250e565b7f44ee104780547f0cb2026486d8f9456b9f11497ce52f217ddac1ba7a5a951696878787876040518080602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f38612197565b6001600160a01b0316336001600160a01b031614610f8f576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b600254610f9a61139a565b1115610fdf576040805162461bcd60e51b815260206004820152600f60248201526e2620a9aa2fa2a827a1a42fa7ab22a960891b604482015290519081900360640190fd5b806000805b8281101561103657610ffb858583818110610d6657fe5b915084848281811061100957fe5b60025460019085018101600090815260046020908152604090912092029390930135908301555001610fe4565b5060025461104490836124ad565b60025561107c6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461250e565b7ff05c668e041316911f2707c63743bfaf789a193675ffe04e46d93dbc448e642e848460025460405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050565b60035481565b600a5481565b600060026001541415611143576040805162461bcd60e51b815260206004820152601f602482015260008051602061322d833981519152604482015290519081900360640190fd5b600260015560408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b1580156111ae57600080fd5b505af11580156111c2573d6000803e3d6000fd5b505050506040513d60408110156111d857600080fd5b505190508015611223576040805162461bcd60e51b815260206004820152601160248201527013125457d35253925391d7d4105554d151607a1b604482015290519081900360640190fd5b600060025411611267576040805162461bcd60e51b815260206004820152600a6024820152691393d517d1955391115160b21b604482015290519081900360640190fd5b600061127161139a565b116112b1576040805162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b604482015290519081900360640190fd5b6001600160a01b0383166112fb576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b61130483612568565b91508115610c1657610c166001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684846122dd565b7f000000000000000000000000000000000000000000000000000000000000000081565b60086020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006113a5426126b4565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60026001541415611414576040805162461bcd60e51b815260206004820152601f602482015260008051602061322d833981519152604482015290519081900360640190fd5b6002600155600061142433612745565b15801561143057503233145b905080806114cc575060408051636c9b2a3f60e11b815233600482015290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163d936547e916024808301926020929190829003018186803b15801561149f57600080fd5b505afa1580156114b3573d6000803e3d6000fd5b505050506040513d60208110156114c957600080fd5b50515b61151d576040805162461bcd60e51b815260206004820152601860248201527f434f4e54524143545f4e4f545f57484954454c49535445440000000000000000604482015290519081900360640190fd5b60408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b15801561158357600080fd5b505af1158015611597573d6000803e3d6000fd5b505050506040513d60408110156115ad57600080fd5b5051905080156115f8576040805162461bcd60e51b815260206004820152601160248201527013125457d35253925391d7d4105554d151607a1b604482015290519081900360640190fd5b60006002541161163c576040805162461bcd60e51b815260206004820152600a6024820152691393d517d1955391115160b21b604482015290519081900360640190fd5b600061164661139a565b11611686576040805162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b604482015290519081900360640190fd5b6001600160a01b0384166116d0576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b82611710576040805162461bcd60e51b815260206004820152600b60248201526a16915493d7d05353d5539560aa1b604482015290519081900360640190fd5b60025461171b61139a565b1115611767576040805162461bcd60e51b815260206004820152601660248201527524a721a2a72a24ab22a9afa822a924a7a22fa7ab22a960511b604482015290519081900360640190fd5b61177284338561274b565b604080516001600160a01b03861681526020810185905281517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d929181900390910190a15050600180555050565b60009182526004602081815260408085208054600182015460028301546001600160a01b0397909716885260038301855283882054929095019093529420549094919391565b7f000000000000000000000000000000000000000000000000000000000000000081565b611832612197565b6001600160a01b0316336001600160a01b031614611889576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b6040516000906001600160a01b0383169084908381818185875af1925050503d80600081146118d4576040519150601f19603f3d011682016040523d82523d6000602084013e6118d9565b606091505b5050905080611921576040805162461bcd60e51b815260206004820152600f60248201526e15d2551211149055d7d19052531151608a1b604482015290519081900360640190fd5b604080518481526001600160a01b038416602082015281517fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de929181900390910190a1505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b1580156119f357600080fd5b505af1158015611a07573d6000803e3d6000fd5b505050506040513d6040811015611a1d57600080fd5b5060200151905080611a66576040805162461bcd60e51b815260206004820152600d60248201526c4e4f545f454d455247454e435960981b604482015290519081900360640190fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f87c24cd6040518163ffffffff1660e01b815260040160606040518083038186803b158015611ac157600080fd5b505afa158015611ad5573d6000803e3d6000fd5b505050506040513d6060811015611aeb57600080fd5b50519050336001600160a01b03821614611b44576040805162461bcd60e51b81526020600482015260156024820152742727aa2fa2a6a2a923a2a721acafa420a7222622a960591b604482015290519081900360640190fd5b611b7a6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016856000196127b3565b611bb06001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016856000196127b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611c1557611c156001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016856000196127b3565b50505050565b60026001541415611c61576040805162461bcd60e51b815260206004820152601f602482015260008051602061322d833981519152604482015290519081900360640190fd5b600260015560408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b158015611ccc57600080fd5b505af1158015611ce0573d6000803e3d6000fd5b505050506040513d6040811015611cf657600080fd5b505190508015611d41576040805162461bcd60e51b815260206004820152601160248201527013125457d35253925391d7d4105554d151607a1b604482015290519081900360640190fd5b600060025411611d85576040805162461bcd60e51b815260206004820152600a6024820152691393d517d1955391115160b21b604482015290519081900360640190fd5b6000611d8f61139a565b11611dcf576040805162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b604482015290519081900360640190fd5b81611e0f576040805162461bcd60e51b815260206004820152600b60248201526a16915493d7d05353d5539560aa1b604482015290519081900360640190fd5b6001600160a01b038316611e59576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b611e643384846128c6565b604080513381526020810184905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a150506001805550565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ee357600080fd5b505afa158015611ef7573d6000803e3d6000fd5b505050506040513d6020811015611f0d57600080fd5b505111611f51576040805162461bcd60e51b815260206004820152600d60248201526c0494e56414c49445f455243323609c1b604482015290519081900360640190fd5b50565b611f5c61292e565b6001600160a01b038116600090815260066020526040902054611f99576001600160a01b0381166000908152600660205260409020429055611f51565b6000611fa361139a565b90506000611fb3600254836129df565b6002546001600160a01b038516600090815260056020908152604080832054600690925282205460035494955092861193909291611ff0836126b4565b9050805b8681116121715760008181526004602052604090205461201d578261201857612171565b612169565b61205761202b8686846129f5565b60008381526004602090815260408083206001600160a01b038f168452600301909152902054906124ad565b60008281526004602090815260408083206001600160a01b038e168452600301909152902055868114801561208a575085155b1561209457612171565b60006120a08a83612a47565b9050600182015b7f0000000000000000000000000000000000000000000000000000000000000000830181116121665761211c826004600084815260200190815260200160002060040160008e6001600160a01b03166001600160a01b03168152602001908152602001600020546124ad90919063ffffffff16565b6004600083815260200190815260200160002060040160008d6001600160a01b03166001600160a01b031681526020019081526020016000208190555080806001019150506120a7565b50505b600101611ff4565b5050506001600160a01b0386166000908152600660205260409020429055505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b1580156121f257600080fd5b505afa158015612206573d6000803e3d6000fd5b505050506040513d602081101561221c57600080fd5b5051905090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415801561229957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156122d757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261232f908490612ab1565b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661236c575060006123c8565b61237582612b62565b6001600160a01b038216600090815260086020526040902054600a5461239b91906129df565b6001600160a01b038316600090815260086020526040812055600a549091506123c49082612c80565b600a555b919050565b6000612471827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561244057600080fd5b505afa158015612454573d6000803e3d6000fd5b505050506040513d602081101561246a57600080fd5b50516129df565b905080156122d7576122d76001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684836122dd565b600082820183811015612507576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611c15908590612ab1565b600061257382611f54565b60006125aa61258061139a565b7f0000000000000000000000000000000000000000000000000000000000000000600254016129df565b6001600160a01b0384166000908152600760205260409020549091505b8181116126585760008181526004602081815260408084206001600160a01b03891685529092019052902054156126505760008181526004602081815260408084206001600160a01b038916855290920190529020546126289084906124ad565b60008281526004602081815260408084206001600160a01b038a168552909201905281205592505b6001016125c7565b506001600160a01b0383166000818152600760209081526040918290208490558151928352820184905280517f5891c6cf1c6ad6a35a9ba7097b8c5f9a780d2d6783bb7f9f41ac4ecbdcf4a1269281900390910190a150919050565b60007f00000000000000000000000000000000000000000000000000000000000000008210156126e6575060006123c8565b6122d7600161273f7f0000000000000000000000000000000000000000000000000000000000000000612739867f0000000000000000000000000000000000000000000000000000000000000000612c80565b90612cdd565b906124ad565b3b151590565b61275483611f54565b61275d83612b62565b6001600160a01b03831660009081526005602052604090205461278090826124ad565b6001600160a01b0384166000908152600560205260409020556003546127a690826124ad565b60035561232f8282612d44565b801580612839575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561280b57600080fd5b505afa15801561281f573d6000803e3d6000fd5b505050506040513d602081101561283557600080fd5b5051155b6128745760405162461bcd60e51b81526004018080602001828103825260368152602001806132be6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261232f908490612ab1565b6128cf83611f54565b6128d883612b62565b6001600160a01b0383166000908152600560205260409020546128fb9082612c80565b6001600160a01b0384166000908152600560205260409020556003546129219082612c80565b60035561232f8282612d79565b600061293861139a565b90506000612948826002546129df565b90505b80156129db57600061295c82612db3565b600083815260046020526040902060020154909150808214156129805750506129db565b6129a561299060035483866129f5565b600085815260046020526040902054906124ad565b6000848152600460205260409020556129be42836129df565b60008481526004602052604090206002015550506000190161294b565b5050565b60008183106129ee5781612507565b5090919050565b60004281612a0b85612a0686612e09565b612e43565b90506000612a2183612a1c87612db3565b6129df565b90506000612a2f8284612e53565b9050612a3b8882612e64565b98975050505050505050565b600081815260046020818152604080842080546001600160a01b03881686526003820184529185205486865293909252600190910154612507927f000000000000000000000000000000000000000000000000000000000000000092612739929091839190612e64565b6000612b06826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ebd9092919063ffffffff16565b80519091501561232f57808060200190516020811015612b2557600080fd5b505161232f5760405162461bcd60e51b815260040180806020018281038252602a815260200180613294602a913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612b9557611f51565b612b9d612ed4565b6001600160a01b038116600090815260096020526040902054612bdb57600b546001600160a01b038216600090815260096020526040902055611f51565b6001600160a01b0381166000908152600560209081526040808320546009909252822054600b54919291612c0e91612c80565b90506000612c2968056bc75e2d631000006127398585612e64565b6001600160a01b038516600090815260086020526040902054909150612c4f90826124ad565b6001600160a01b038516600090815260086020908152604080832093909355600b5460099091529190205550505050565b600082821115612cd7576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000808211612d33576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381612d3c57fe5b049392505050565b6129db6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683308461250e565b80156129db576129db6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683836122dd565b60006122d7612de2837f0000000000000000000000000000000000000000000000000000000000000000612e64565b7f0000000000000000000000000000000000000000000000000000000000000000906124ad565b60006122d7612de27f0000000000000000000000000000000000000000000000000000000000000000612e3d856001612c80565b90612e64565b6000818310156129ee5781612507565b600081831015612cd7576000612507565b600082612e73575060006122d7565b82820282848281612e8057fe5b04146125075760405162461bcd60e51b81526004018080602001828103825260218152602001806132736021913960400191505060405180910390fd5b6060612ecc848460008561300d565b949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580612f0f5750612f0d613168565b155b15612f195761300b565b612f2161300b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612f9057600080fd5b505afa158015612fa4573d6000803e3d6000fd5b505050506040513d6020811015612fba57600080fd5b50519050600080612fca8361316d565b915091506000600354600014612ff757600354612ff4906127398468056bc75e2d63100000612e64565b90505b61300183826124ad565b600b55505050600a555b565b60608247101561304e5760405162461bcd60e51b815260040180806020018281038252602681526020018061324d6026913960400191505060405180910390fd5b61305785612745565b6130a8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106130e65780518252601f1990920191602091820191016130c7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613148576040519150601f19603f3d011682016040523d82523d6000602084013e61314d565b606091505b509150915061315d828286613188565b979650505050505050565b600090565b600b54600a54600090613181908490612c80565b9050915091565b60608315613197575081612507565b8251156131a75782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156131f15781810151838201526020016131d9565b50505050905090810190601f16801561321e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe5265656e7472616e637947756172643a207265656e7472616e742063616c6c00416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a264697066735822122011a9861046cc544e15bc46849c87ce574ab1d02be9dcf6b7599d7841d08fba1864736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c806383bbfde11161010f578063a81e457c116100a2578063ce56c45411610071578063ce56c454146105ab578063d2e6d1c3146105d7578063dd254a6a146105df578063f3fef3a31461060d576101e5565b8063a81e457c14610543578063adc9772e1461054b578063b40310c914610577578063be66c60f146105a3576101e5565b806393e59dc1116100de57806393e59dc11461050557806396b973c01461050d5780639a51d2d114610533578063a29a839f1461053b576101e5565b806383bbfde11461045f5780638b0e9f3f146104cf5780638f373bf3146104d75780639262187b146104df576101e5565b80634ff0876a1161018757806370b66cd01161015657806370b66cd014610367578063738573f41461042957806376d5de851461044f57806378e9792514610457576101e5565b80634ff0876a1461030d57806351ed6a3014610315578063541a7ca6146103395780636304a6bc14610341576101e5565b806317368841116101c3578063173688411461028157806327e235e3146102895780632936ada7146102af5780633ccdbb28146102d5576101e5565b806304f917af146101ea578063059f8b1614610241578063166766321461025b575b600080fd5b6102166004803603604081101561020057600080fd5b50803590602001356001600160a01b0316610639565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b610249610820565b60408051918252519081900360200190f35b6102496004803603602081101561027157600080fd5b50356001600160a01b031661082d565b61024961083f565b6102496004803603602081101561029f57600080fd5b50356001600160a01b0316610845565b610249600480360360208110156102c557600080fd5b50356001600160a01b0316610857565b61030b600480360360608110156102eb57600080fd5b506001600160a01b03813581169160208101359160409091013516610869565b005b610249610979565b61031d61099d565b604080516001600160a01b039092168252519081900360200190f35b6102496109c1565b6102496004803603602081101561035757600080fd5b50356001600160a01b03166109c7565b61030b6004803603604081101561037d57600080fd5b81019060208101813564010000000081111561039857600080fd5b8201836020820111156103aa57600080fd5b803590602001918460208302840111640100000000831117156103cc57600080fd5b9193909290916020810190356401000000008111156103ea57600080fd5b8201836020820111156103fc57600080fd5b8035906020019184602083028401116401000000008311171561041e57600080fd5b509092509050610c20565b6102496004803603602081101561043f57600080fd5b50356001600160a01b0316610ed6565b61031d610ee8565b610249610f0c565b61030b6004803603602081101561047557600080fd5b81019060208101813564010000000081111561049057600080fd5b8201836020820111156104a257600080fd5b803590602001918460208302840111640100000000831117156104c457600080fd5b509092509050610f30565b6102496110ef565b6102496110f5565b610249600480360360208110156104f557600080fd5b50356001600160a01b03166110fb565b61031d611340565b6102496004803603602081101561052357600080fd5b50356001600160a01b0316611364565b610249611376565b61024961139a565b61031d6113aa565b61030b6004803603604081101561056157600080fd5b506001600160a01b0381351690602001356113ce565b6102166004803603604081101561058d57600080fd5b50803590602001356001600160a01b03166117c0565b61031d611806565b61030b600480360360408110156105c157600080fd5b50803590602001356001600160a01b031661182a565b61031d611969565b61030b600480360360408110156105f557600080fd5b506001600160a01b038135169060200135151561198d565b61030b6004803603604081101561062357600080fd5b506001600160a01b038135169060200135611c1b565b600080600080600060026001541415610687576040805162461bcd60e51b815260206004820152601f602482015260008051602061322d833981519152604482015290519081900360640190fd5b600260015560408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b1580156106f257600080fd5b505af1158015610706573d6000803e3d6000fd5b505050506040513d604081101561071c57600080fd5b505190508015610767576040805162461bcd60e51b815260206004820152601160248201527013125457d35253925391d7d4105554d151607a1b604482015290519081900360640190fd5b6000600254116107ab576040805162461bcd60e51b815260206004820152600a6024820152691393d517d1955391115160b21b604482015290519081900360640190fd5b60006107b561139a565b116107f5576040805162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b604482015290519081900360640190fd5b6107fe87611f54565b61080888886117c0565b60018055939c929b5090995097509095509350505050565b68056bc75e2d6310000081565b60096020526000908152604090205481565b60025481565b60056020526000908152604090205481565b60076020526000908152604090205481565b610871612197565b6001600160a01b0316336001600160a01b0316146108c8576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b6108d183612223565b610916576040805162461bcd60e51b81526020600482015260116024820152701513d2d15397d393d517d0531313d5d151607a1b604482015290519081900360640190fd5b61092a6001600160a01b03841682846122dd565b604080516001600160a01b0380861682526020820185905283168183015290517f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e69181900360600190a1505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5481565b600060026001541415610a0f576040805162461bcd60e51b815260206004820152601f602482015260008051602061322d833981519152604482015290519081900360640190fd5b600260015560408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b158015610a7a57600080fd5b505af1158015610a8e573d6000803e3d6000fd5b505050506040513d6040811015610aa457600080fd5b505190508015610aef576040805162461bcd60e51b815260206004820152601160248201527013125457d35253925391d7d4105554d151607a1b604482015290519081900360640190fd5b600060025411610b33576040805162461bcd60e51b815260206004820152600a6024820152691393d517d1955391115160b21b604482015290519081900360640190fd5b6000610b3d61139a565b11610b7d576040805162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610bb45760009150610c16565b6001600160a01b038316610bfe576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b610c0783612334565b9150610c1383836123cd565b91505b5060018055919050565b610c28612197565b6001600160a01b0316336001600160a01b031614610c7f576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b828114610cc4576040805162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f41525241595360901b604482015290519081900360640190fd5b6000610cce61139a565b6002549091506000805b86811015610e0457878782818110610cec57fe5b9050602002013584108015610d13575082888883818110610d0957fe5b9050602002013511155b610d57576040805162461bcd60e51b815260206004820152601060248201526f1253959053125117d15413d0d217d25160821b604482015290519081900360640190fd5b610d7c868683818110610d6657fe5b90506020020135836124ad90919063ffffffff16565b9150610dcb868683818110610d8d57fe5b90506020020135600460008b8b86818110610da457fe5b905060200201358152602001908152602001600020600101546124ad90919063ffffffff16565b600460008a8a85818110610ddb57fe5b905060200201358152602001908152602001600020600101819055508080600101915050610cd8565b50610e3a6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461250e565b7f44ee104780547f0cb2026486d8f9456b9f11497ce52f217ddac1ba7a5a951696878787876040518080602001806020018381038352878782818152602001925060200280828437600083820152601f01601f19169091018481038352858152602090810191508690860280828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b610f38612197565b6001600160a01b0316336001600160a01b031614610f8f576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b600254610f9a61139a565b1115610fdf576040805162461bcd60e51b815260206004820152600f60248201526e2620a9aa2fa2a827a1a42fa7ab22a960891b604482015290519081900360640190fd5b806000805b8281101561103657610ffb858583818110610d6657fe5b915084848281811061100957fe5b60025460019085018101600090815260046020908152604090912092029390930135908301555001610fe4565b5060025461104490836124ad565b60025561107c6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308461250e565b7ff05c668e041316911f2707c63743bfaf789a193675ffe04e46d93dbc448e642e848460025460405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a150505050565b60035481565b600a5481565b600060026001541415611143576040805162461bcd60e51b815260206004820152601f602482015260008051602061322d833981519152604482015290519081900360640190fd5b600260015560408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b1580156111ae57600080fd5b505af11580156111c2573d6000803e3d6000fd5b505050506040513d60408110156111d857600080fd5b505190508015611223576040805162461bcd60e51b815260206004820152601160248201527013125457d35253925391d7d4105554d151607a1b604482015290519081900360640190fd5b600060025411611267576040805162461bcd60e51b815260206004820152600a6024820152691393d517d1955391115160b21b604482015290519081900360640190fd5b600061127161139a565b116112b1576040805162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b604482015290519081900360640190fd5b6001600160a01b0383166112fb576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b61130483612568565b91508115610c1657610c166001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684846122dd565b7f000000000000000000000000000000000000000000000000000000000000000081565b60086020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006113a5426126b4565b905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b60026001541415611414576040805162461bcd60e51b815260206004820152601f602482015260008051602061322d833981519152604482015290519081900360640190fd5b6002600155600061142433612745565b15801561143057503233145b905080806114cc575060408051636c9b2a3f60e11b815233600482015290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163d936547e916024808301926020929190829003018186803b15801561149f57600080fd5b505afa1580156114b3573d6000803e3d6000fd5b505050506040513d60208110156114c957600080fd5b50515b61151d576040805162461bcd60e51b815260206004820152601860248201527f434f4e54524143545f4e4f545f57484954454c49535445440000000000000000604482015290519081900360640190fd5b60408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b15801561158357600080fd5b505af1158015611597573d6000803e3d6000fd5b505050506040513d60408110156115ad57600080fd5b5051905080156115f8576040805162461bcd60e51b815260206004820152601160248201527013125457d35253925391d7d4105554d151607a1b604482015290519081900360640190fd5b60006002541161163c576040805162461bcd60e51b815260206004820152600a6024820152691393d517d1955391115160b21b604482015290519081900360640190fd5b600061164661139a565b11611686576040805162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b604482015290519081900360640190fd5b6001600160a01b0384166116d0576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b82611710576040805162461bcd60e51b815260206004820152600b60248201526a16915493d7d05353d5539560aa1b604482015290519081900360640190fd5b60025461171b61139a565b1115611767576040805162461bcd60e51b815260206004820152601660248201527524a721a2a72a24ab22a9afa822a924a7a22fa7ab22a960511b604482015290519081900360640190fd5b61177284338561274b565b604080516001600160a01b03861681526020810185905281517f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d929181900390910190a15050600180555050565b60009182526004602081815260408085208054600182015460028301546001600160a01b0397909716885260038301855283882054929095019093529420549094919391565b7f000000000000000000000000000000000000000000000000000000000000000081565b611832612197565b6001600160a01b0316336001600160a01b031614611889576040805162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015290519081900360640190fd5b6040516000906001600160a01b0383169084908381818185875af1925050503d80600081146118d4576040519150601f19603f3d011682016040523d82523d6000602084013e6118d9565b606091505b5050905080611921576040805162461bcd60e51b815260206004820152600f60248201526e15d2551211149055d7d19052531151608a1b604482015290519081900360640190fd5b604080518481526001600160a01b038416602082015281517fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de929181900390910190a1505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b1580156119f357600080fd5b505af1158015611a07573d6000803e3d6000fd5b505050506040513d6040811015611a1d57600080fd5b5060200151905080611a66576040805162461bcd60e51b815260206004820152600d60248201526c4e4f545f454d455247454e435960981b604482015290519081900360640190fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f87c24cd6040518163ffffffff1660e01b815260040160606040518083038186803b158015611ac157600080fd5b505afa158015611ad5573d6000803e3d6000fd5b505050506040513d6060811015611aeb57600080fd5b50519050336001600160a01b03821614611b44576040805162461bcd60e51b81526020600482015260156024820152742727aa2fa2a6a2a923a2a721acafa420a7222622a960591b604482015290519081900360640190fd5b611b7a6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016856000196127b3565b611bb06001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016856000196127b3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615611c1557611c156001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016856000196127b3565b50505050565b60026001541415611c61576040805162461bcd60e51b815260206004820152601f602482015260008051602061322d833981519152604482015290519081900360640190fd5b600260015560408051636f11e6c160e01b815230600482015281516000926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692636f11e6c1926024808301939282900301818787803b158015611ccc57600080fd5b505af1158015611ce0573d6000803e3d6000fd5b505050506040513d6040811015611cf657600080fd5b505190508015611d41576040805162461bcd60e51b815260206004820152601160248201527013125457d35253925391d7d4105554d151607a1b604482015290519081900360640190fd5b600060025411611d85576040805162461bcd60e51b815260206004820152600a6024820152691393d517d1955391115160b21b604482015290519081900360640190fd5b6000611d8f61139a565b11611dcf576040805162461bcd60e51b815260206004820152600b60248201526a1393d517d4d5105495115160aa1b604482015290519081900360640190fd5b81611e0f576040805162461bcd60e51b815260206004820152600b60248201526a16915493d7d05353d5539560aa1b604482015290519081900360640190fd5b6001600160a01b038316611e59576040805162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015290519081900360640190fd5b611e643384846128c6565b604080513381526020810184905281517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5929181900390910190a150506001805550565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ee357600080fd5b505afa158015611ef7573d6000803e3d6000fd5b505050506040513d6020811015611f0d57600080fd5b505111611f51576040805162461bcd60e51b815260206004820152600d60248201526c0494e56414c49445f455243323609c1b604482015290519081900360640190fd5b50565b611f5c61292e565b6001600160a01b038116600090815260066020526040902054611f99576001600160a01b0381166000908152600660205260409020429055611f51565b6000611fa361139a565b90506000611fb3600254836129df565b6002546001600160a01b038516600090815260056020908152604080832054600690925282205460035494955092861193909291611ff0836126b4565b9050805b8681116121715760008181526004602052604090205461201d578261201857612171565b612169565b61205761202b8686846129f5565b60008381526004602090815260408083206001600160a01b038f168452600301909152902054906124ad565b60008281526004602090815260408083206001600160a01b038e168452600301909152902055868114801561208a575085155b1561209457612171565b60006120a08a83612a47565b9050600182015b7f0000000000000000000000000000000000000000000000000000000000000000830181116121665761211c826004600084815260200190815260200160002060040160008e6001600160a01b03166001600160a01b03168152602001908152602001600020546124ad90919063ffffffff16565b6004600083815260200190815260200160002060040160008d6001600160a01b03166001600160a01b031681526020019081526020016000208190555080806001019150506120a7565b50505b600101611ff4565b5050506001600160a01b0386166000908152600660205260409020429055505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b1580156121f257600080fd5b505afa158015612206573d6000803e3d6000fd5b505050506040513d602081101561221c57600080fd5b5051905090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415801561229957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156122d757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261232f908490612ab1565b505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661236c575060006123c8565b61237582612b62565b6001600160a01b038216600090815260086020526040902054600a5461239b91906129df565b6001600160a01b038316600090815260086020526040812055600a549091506123c49082612c80565b600a555b919050565b6000612471827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561244057600080fd5b505afa158015612454573d6000803e3d6000fd5b505050506040513d602081101561246a57600080fd5b50516129df565b905080156122d7576122d76001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684836122dd565b600082820183811015612507576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611c15908590612ab1565b600061257382611f54565b60006125aa61258061139a565b7f0000000000000000000000000000000000000000000000000000000000000000600254016129df565b6001600160a01b0384166000908152600760205260409020549091505b8181116126585760008181526004602081815260408084206001600160a01b03891685529092019052902054156126505760008181526004602081815260408084206001600160a01b038916855290920190529020546126289084906124ad565b60008281526004602081815260408084206001600160a01b038a168552909201905281205592505b6001016125c7565b506001600160a01b0383166000818152600760209081526040918290208490558151928352820184905280517f5891c6cf1c6ad6a35a9ba7097b8c5f9a780d2d6783bb7f9f41ac4ecbdcf4a1269281900390910190a150919050565b60007f00000000000000000000000000000000000000000000000000000000000000008210156126e6575060006123c8565b6122d7600161273f7f0000000000000000000000000000000000000000000000000000000000000000612739867f0000000000000000000000000000000000000000000000000000000000000000612c80565b90612cdd565b906124ad565b3b151590565b61275483611f54565b61275d83612b62565b6001600160a01b03831660009081526005602052604090205461278090826124ad565b6001600160a01b0384166000908152600560205260409020556003546127a690826124ad565b60035561232f8282612d44565b801580612839575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561280b57600080fd5b505afa15801561281f573d6000803e3d6000fd5b505050506040513d602081101561283557600080fd5b5051155b6128745760405162461bcd60e51b81526004018080602001828103825260368152602001806132be6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261232f908490612ab1565b6128cf83611f54565b6128d883612b62565b6001600160a01b0383166000908152600560205260409020546128fb9082612c80565b6001600160a01b0384166000908152600560205260409020556003546129219082612c80565b60035561232f8282612d79565b600061293861139a565b90506000612948826002546129df565b90505b80156129db57600061295c82612db3565b600083815260046020526040902060020154909150808214156129805750506129db565b6129a561299060035483866129f5565b600085815260046020526040902054906124ad565b6000848152600460205260409020556129be42836129df565b60008481526004602052604090206002015550506000190161294b565b5050565b60008183106129ee5781612507565b5090919050565b60004281612a0b85612a0686612e09565b612e43565b90506000612a2183612a1c87612db3565b6129df565b90506000612a2f8284612e53565b9050612a3b8882612e64565b98975050505050505050565b600081815260046020818152604080842080546001600160a01b03881686526003820184529185205486865293909252600190910154612507927f000000000000000000000000000000000000000000000000000000000000000092612739929091839190612e64565b6000612b06826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ebd9092919063ffffffff16565b80519091501561232f57808060200190516020811015612b2557600080fd5b505161232f5760405162461bcd60e51b815260040180806020018281038252602a815260200180613294602a913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612b9557611f51565b612b9d612ed4565b6001600160a01b038116600090815260096020526040902054612bdb57600b546001600160a01b038216600090815260096020526040902055611f51565b6001600160a01b0381166000908152600560209081526040808320546009909252822054600b54919291612c0e91612c80565b90506000612c2968056bc75e2d631000006127398585612e64565b6001600160a01b038516600090815260086020526040902054909150612c4f90826124ad565b6001600160a01b038516600090815260086020908152604080832093909355600b5460099091529190205550505050565b600082821115612cd7576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000808211612d33576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381612d3c57fe5b049392505050565b6129db6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683308461250e565b80156129db576129db6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683836122dd565b60006122d7612de2837f0000000000000000000000000000000000000000000000000000000000000000612e64565b7f0000000000000000000000000000000000000000000000000000000000000000906124ad565b60006122d7612de27f0000000000000000000000000000000000000000000000000000000000000000612e3d856001612c80565b90612e64565b6000818310156129ee5781612507565b600081831015612cd7576000612507565b600082612e73575060006122d7565b82820282848281612e8057fe5b04146125075760405162461bcd60e51b81526004018080602001828103825260218152602001806132736021913960400191505060405180910390fd5b6060612ecc848460008561300d565b949350505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580612f0f5750612f0d613168565b155b15612f195761300b565b612f2161300b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612f9057600080fd5b505afa158015612fa4573d6000803e3d6000fd5b505050506040513d6020811015612fba57600080fd5b50519050600080612fca8361316d565b915091506000600354600014612ff757600354612ff4906127398468056bc75e2d63100000612e64565b90505b61300183826124ad565b600b55505050600a555b565b60608247101561304e5760405162461bcd60e51b815260040180806020018281038252602681526020018061324d6026913960400191505060405180910390fd5b61305785612745565b6130a8576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106130e65780518252601f1990920191602091820191016130c7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613148576040519150601f19603f3d011682016040523d82523d6000602084013e61314d565b606091505b509150915061315d828286613188565b979650505050505050565b600090565b600b54600a54600090613181908490612c80565b9050915091565b60608315613197575081612507565b8251156131a75782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156131f15781810151838201526020016131d9565b50505050905090810190601f16801561321e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fdfe5265656e7472616e637947756172643a207265656e7472616e742063616c6c00416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a264697066735822122011a9861046cc544e15bc46849c87ce574ab1d02be9dcf6b7599d7841d08fba1864736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
