[ { "inputs": [ { "internalType": "address", "name": "_stake", "type": "address" }, { "internalType": "address", "name": "_external_bribe", "type": "address" }, { "internalType": "address", "name": "__ve", "type": "address" }, { "internalType": "address", "name": "_voter", "type": "address" }, { "internalType": "address", "name": "_oFlow", "type": "address" }, { "internalType": "address", "name": "_gaugeFactory", "type": "address" }, { "internalType": "bool", "name": "_forPair", "type": "bool" }, { "internalType": "address[]", "name": "_allowedRewardTokens", "type": "address[]" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "reward", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ClaimRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "reward", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "NotifyReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_oFlow", "type": "address" } ], "name": "OFlowSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_oToken", "type": "address" } ], "name": "OTokenAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_oToken", "type": "address" } ], "name": "OTokenRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "_ve", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_oToken", "type": "address" } ], "name": "addOToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceWithLock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "maxRuns", "type": "uint256" } ], "name": "batchRewardPerToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "maxRuns", "type": "uint256" } ], "name": "batchUpdateRewardPerToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "checkpoints", "outputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "balanceOf", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "depositAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "_lockDuration", "type": "uint256" } ], "name": "depositWithLock", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "derivedBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "derivedBalances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "derivedSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "earned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "external_bribe", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fees0", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fees1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "flow", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gaugeFactory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "getPriorBalanceIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "getPriorRewardPerToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "getPriorSupplyIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address[]", "name": "tokens", "type": "address[]" } ], "name": "getReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isForPair", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isOToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isReward", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "lastEarn", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "lastTimeRewardApplicable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lastUpdateTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "left", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lockEnd", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "notifyRewardAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oFlow", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "periodFinish", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_oToken", "type": "address" } ], "name": "removeOToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "rewardPerToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "rewardPerTokenCheckpoints", "outputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "rewardPerToken", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewardPerTokenNumCheckpoints", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewardPerTokenStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewardRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "rewards", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardsListLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_oFlow", "type": "address" } ], "name": "setOFlow", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stake", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "supplyCheckpoints", "outputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "supply", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "supplyNumCheckpoints", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "i", "type": "uint256" }, { "internalType": "address", "name": "oldToken", "type": "address" }, { "internalType": "address", "name": "newToken", "type": "address" } ], "name": "swapOutRewardToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "tokenIds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "userRewardPerTokenStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "voter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101406040526001601a553480156200001757600080fd5b5060405162003f2838038062003f288339810160408190526200003a916200037d565b6001600160a01b0388811660805287811660c05286811660a081905286821660e052600080546001600160a01b031916878416179055908416610120526003805460ff191684151517905560408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa158015620000c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e79190620004d5565b6001600160a01b039081166101008190526000546200010a921660001962000240565b6001600160a01b0384166000908152601160205260408120805460ff191660011790555b8151811015620002315760006001600160a01b0316828281518110620001585762000158620004fa565b60200260200101516001600160a01b0316146200021c576001601060008484815181106200018a576200018a620004fa565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600f828281518110620001e057620001e0620004fa565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b80620002288162000510565b9150506200012e565b50505050505050505062000594565b6000836001600160a01b03163b116200025857600080fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1790529151600092839290871691620002b6919062000538565b6000604051808303816000865af19150503d8060008114620002f5576040519150601f19603f3d011682016040523d82523d6000602084013e620002fa565b606091505b5091509150818015620003285750805115806200032857508080602001905181019062000328919062000576565b6200033257600080fd5b5050505050565b80516001600160a01b03811681146200035157600080fd5b919050565b805180151581146200035157600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600080600080610100898b0312156200039b57600080fd5b620003a68962000339565b97506020620003b7818b0162000339565b9750620003c760408b0162000339565b9650620003d760608b0162000339565b9550620003e760808b0162000339565b9450620003f760a08b0162000339565b93506200040760c08b0162000356565b60e08b01519093506001600160401b03808211156200042557600080fd5b818c0191508c601f8301126200043a57600080fd5b8151818111156200044f576200044f62000367565b8060051b604051601f19603f8301168101818110858211171562000477576200047762000367565b60405291825284820192508381018501918f8311156200049657600080fd5b938501935b82851015620004bf57620004af8562000339565b845293850193928501926200049b565b8096505050505050509295985092959890939650565b600060208284031215620004e857600080fd5b620004f38262000339565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000600182016200053157634e487b7160e01b600052601160045260246000fd5b5060010190565b6000825160005b818110156200055b57602081860181015185830152016200053f565b818111156200056b576000828501525b509190910192915050565b6000602082840312156200058957600080fd5b620004f38262000356565b60805160a05160c05160e05161010051610120516138c6620006626000396000818161042401528181610ab40152818161166a01526120610152600081816105360152818161126901526120be0152600081816105f501528181610fdc0152818161102101528181611988015281816125ee01528181612707015281816129430152612a96015260006103b301526000818161070f015281816116f5015261284a01526000818161055d0152818161190e01528181611fb20152818161256f01526127cd01526138c66000f3fe608060405234801561001057600080fd5b506004361061035d5760003560e01c806370a08231116101d3578063d35e254411610104578063f00dc8ef116100a2578063f7412baf1161007c578063f7412baf146108cd578063fc97a303146108f4578063fd31409814610914578063fdb483c71461092757600080fd5b8063f00dc8ef14610894578063f1229777146108a7578063f301af42146108ba57600080fd5b8063e2bbb158116100de578063e2bbb15814610863578063e574821314610876578063e688639614610883578063e8111a121461088b57600080fd5b8063d35e254414610811578063d7da4bb01461083a578063da09d19d1461084357600080fd5b80639843bafa11610171578063a495e5b51161014b578063a495e5b5146107a0578063aa479652146107cb578063b66503cf146107eb578063c6f678bd146107fe57600080fd5b80639843bafa1461074d57806399bcc0521461076d5780639ce43f901461078057600080fd5b80638ac9ab37116101ad5780638ac9ab37146106f75780638dd598fb1461070a57806393f1c442146107315780639418f9391461073a57600080fd5b806370a08231146106bc57806376f4be36146106dc578063853828b6146106ef57600080fd5b806331279d3d116102ad5780634c02a21c1161024b578063638634ee11610225578063638634ee1461065657806363fb415b1461066957806368fcee1a146106895780636fcfff451461069c57600080fd5b80634c02a21c146106175780634d5ce038146106205780635a45d0521461064357600080fd5b80633ca068b6116102875780633ca068b61461057f578063439e2cfe146105aa5780634665b5c9146105dd57806346c96aac146105f057600080fd5b806331279d3d1461051e578063343aad82146105315780633a4b66f11461055857600080fd5b806318160ddd1161031a578063221ca18c116102f4578063221ca18c146104ab57806323792279146104cb5780632ce9aead146104eb5780632e1a7d4d1461050b57600080fd5b806318160ddd1461047c5780631f933c2d14610485578063211dc32d1461049857600080fd5b806301316ddf1461036257806303fbf83a146103ae5780630cdfebfa146103ed5780630d52333c1461041f578063115c6f3914610446578063164a91ec14610467575b600080fd5b6103946103703660046134f9565b60166020908152600092835260408084209091529082529020805460019091015482565b604080519283526020830191909152015b60405180910390f35b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103a5565b6103946103fb3660046134f9565b60126020908152600092835260408084209091529082529020805460019091015482565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6104596104543660046134f9565b61093a565b6040519081526020016103a5565b61047a610475366004613525565b610aa9565b005b610459600b5481565b61047a610493366004613542565b610b43565b6104596104a6366004613577565b610cf1565b6104596104b9366004613525565b60046020526000908152604090205481565b6104596104d9366004613525565b600e6020526000908152604090205481565b6104596104f9366004613525565b60066020526000908152604090205481565b61047a6105193660046135b0565b610f75565b61047a61052c3660046135df565b610fab565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b61045961058d366004613577565b600960209081526000928352604080842090915290825290205481565b6105cd6105b8366004613525565b60116020526000908152604090205460ff1681565b60405190151581526020016103a5565b6000546103d5906001600160a01b031681565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b61045960195481565b6105cd61062e366004613525565b60106020526000908152604090205460ff1681565b61047a6106513660046134f9565b6114a8565b610459610664366004613525565b6114e0565b610459610677366004613525565b60026020526000908152604090205481565b61047a6106973660046134f9565b611504565b6104596106aa366004613525565b60136020526000908152604090205481565b6104596106ca366004613525565b600c6020526000908152604090205481565b6104596106ea3660046135b0565b611510565b61047a611644565b61047a610705366004613525565b61165f565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b61045960185481565b61047a6107483660046136b9565b6116f3565b61045961075b366004613525565b600d6020526000908152604090205481565b61045961077b366004613525565b61187f565b61045961078e366004613525565b60076020526000908152604090205481565b6104596107ae366004613577565b600860209081526000928352604080842090915290825290205481565b6104596107d9366004613525565b60176020526000908152604090205481565b61047a6107f93660046134f9565b6118f0565b61047a61080c3660046135b0565b611f99565b61045961081f366004613525565b6001600160a01b03166000908152600c602052604090205490565b61045960015481565b610459610851366004613525565b60056020526000908152604090205481565b61047a6108713660046136fb565b61202e565b6003546105cd9060ff1681565b600f54610459565b61045960155481565b61047a6108a2366004613525565b612056565b6104596108b5366004613525565b612132565b6103d56108c83660046135b0565b6121f1565b6103946108db3660046135b0565b6014602052600090815260409020805460019091015482565b610459610902366004613525565b600a6020526000908152604090205481565b6103946109223660046134f9565b61221b565b61047a6109353660046136fb565b61243c565b6001600160a01b038216600090815260136020526040812054808203610964576000915050610aa3565b6001600160a01b03841660009081526012602052604081208491610989600185613733565b815260200190815260200160002060000154116109b3576109ab600182613733565b915050610aa3565b6001600160a01b03841660009081526012602090815260408083208380529091529020548310156109e8576000915050610aa3565b6000806109f6600184613733565b90505b81811115610a9e5760006002610a0f8484613733565b610a19919061374a565b610a239083613733565b6001600160a01b0388166000908152601260209081526040808320848452825291829020825180840190935280548084526001909101549183019190915291925090879003610a7857509350610aa392505050565b8051871115610a8957819350610a97565b610a94600183613733565b92505b50506109f9565b509150505b92915050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610afa5760405162461bcd60e51b8152600401610af19061376c565b60405180910390fd5b6001600160a01b038116600081815260116020526040808220805460ff19169055517faf78b9a87a238eb1aeab02992f63daef20bc47fbdbc2c80164960ff9e2a028c39190a250565b601a54600114610b5257600080fd5b6002601a55336001600160a01b0384161480610b7d57503360009081526011602052604090205460ff165b610bc95760405162461bcd60e51b815260206004820181905260248201527f4e6f7420616c6c6f77656420746f206465706f7369742077697468206c6f636b6044820152606401610af1565b610bd5838360006127b3565b6001600160a01b0383166000908152600e60205260409020544210610c1b576001600160a01b0383166000908152600e60209081526040808320839055600d9091528120555b6001600160a01b0383166000908152600d602052604081208054849290610c43908490613797565b90915550506001600160a01b0383166000908152600e602052604081205490610c6c8342613797565b905080821115610cca5760405162461bcd60e51b815260206004820152602360248201527f5468652063757272656e74206c6f636b20656e64203e206e6577206c6f636b20604482015262195b9960ea1b6064820152608401610af1565b6001600160a01b039094166000908152600e602052604090209390935550506001601a5550565b6001600160a01b038083166000818152600860209081526040808320948616835293815283822054928252601681528382208280529052918220548291610d3791612b3c565b6001600160a01b03841660009081526013602052604081205491925003610d62576000915050610aa3565b6000610d6e848361093a565b6001600160a01b03851660009081526013602052604081205491925090610d9790600190613733565b905060008115610ea957825b610dae600184613733565b8111610ea7576001600160a01b03871660008181526012602081815260408084208685528083528185208251808401909352805483526001908101548385015295855292909152928290610e03908690613797565b81526020019081526020016000206040518060400160405290816000820154815260200160018201548152505090506000610e428b846000015161221b565b5090506000610e558c846000015161221b565b509050670de0b6b3a7640000610e6b8383613733565b8560200151610e7a91906137af565b610e84919061374a565b610e8e9087613797565b9550505050508080610e9f906137ce565b915050610da3565b505b6001600160a01b0386166000908152601260209081526040808320858452825280832081518083019092528054808352600190910154928201929092529190610ef3908a9061221b565b506001600160a01b03808b166000908152600960209081526040808320938d1683529290522054909150670de0b6b3a764000090610f32908390612b3c565b610f3b8b612132565b610f459190613733565b8360200151610f5491906137af565b610f5e919061374a565b610f689084613797565b9998505050505050505050565b336000908152600c60205260408120548203610f9d5750336000908152600a60205260409020545b610fa7828261243c565b5050565b601a54600114610fba57600080fd5b6002601a55336001600160a01b0383161480610ffe5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b61100757600080fd5b6001601a556040516363453ae160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906363453ae190602401600060405180830381600087803b15801561106d57600080fd5b505af1158015611081573d6000803e3d6000fd5b50506002601a5550600090505b8151811015611401576110be8282815181106110ac576110ac6137e7565b60200260200101516000196001612b52565b600760008585815181106110d4576110d46137e7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600060066000878781518110611114576111146137e7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000849190505583919050555050600061116f838381518110611161576111616137e7565b602002602001015185610cf1565b90504260086000858581518110611188576111886137e7565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000866001600160a01b03166001600160a01b0316815260200190815260200160002081905550600760008484815181106111ed576111ed6137e7565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020546009600085858151811061122c5761122c6137e7565b6020908102919091018101516001600160a01b039081168352828201939093526040918201600090812093891681529290529020558015611388577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168383815181106112a3576112a36137e7565b60200260200101516001600160a01b03161480156112cb57506000546001600160a01b031615155b80156112e257506000546001600160a01b03163b15155b15611373576000546040516340c10f1960e01b81526001600160a01b03868116600483015260248201849052909116906340c10f1990604401600060405180830381600087803b15801561133557600080fd5b505af1925050508015611346575060015b61136e5761136e83838151811061135f5761135f6137e7565b60200260200101518583612d42565b611388565b61138883838151811061135f5761135f6137e7565b82828151811061139a5761139a6137e7565b60200260200101516001600160a01b0316336001600160a01b03167f9aa05b3d70a9e3e2f004f039648839560576334fb45c81f91b6db03ad9e2efc9836040516113e691815260200190565b60405180910390a350806113f9816137ce565b91505061108e565b506001600160a01b038216600090815260026020526040812054600180549192839261142e908490613733565b9091555050506001600160a01b0382166000908152600c602090815260408083205460029092528220819055600180549192839261146d908490613797565b90915550506001600160a01b038316600090815260026020526040902054611496908490612e42565b61149e612f4d565b50506001601a5550565b6114b28282612ff2565b6001600160a01b03909316600090815260076020908152604080832060069092529091209390935590915550565b6001600160a01b038116600090815260056020526040812054610aa3904290613155565b6114b282826000612b52565b6015546000908082036115265750600092915050565b8260146000611536600185613733565b8152602001908152602001600020600001541161155f57611558600182613733565b9392505050565b6000805260146020527f4f26c3876aa9f4b92579780beea1161a61f87ebf1ec6ee865b299e447ecba99c5483101561159a5750600092915050565b6000806115a8600184613733565b90505b8181111561163c57600060026115c18484613733565b6115cb919061374a565b6115d59083613733565b600081815260146020908152604091829020825180840190935280548084526001909101549183019190915291925090879003611616575095945050505050565b805187111561162757819350611635565b611632600183613733565b92505b50506115ab565b509392505050565b336000908152600c602052604090205461165d90610f75565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116a75760405162461bcd60e51b8152600401610af19061376c565b6001600160a01b038116600081815260116020526040808220805460ff19166001179055517fcfab46cef508d07894ef14c2e29d9ffbd6813f966b63cbe6bf686990c1d8fcc79190a250565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166385f2aef26040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611753573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177791906137fd565b6001600160a01b0316336001600160a01b0316146117c35760405162461bcd60e51b81526020600482015260096024820152686f6e6c79207465616d60b81b6044820152606401610af1565b816001600160a01b0316600f84815481106117e0576117e06137e7565b6000918252602090912001546001600160a01b0316146117ff57600080fd5b6001600160a01b03808316600090815260106020526040808220805460ff199081169091559284168252902080549091166001179055600f80548291908590811061184c5761184c6137e7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550505050565b6001600160a01b03811660009081526005602052604081205442106118a657506000919050565b6001600160a01b0382166000908152600560205260408120546118ca904290613733565b6001600160a01b03841660009081526004602052604090205490915061155890826137af565b601a546001146118ff57600080fd5b6002601a556001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169083160361193c57600080fd5b6000811161194957600080fd5b6001600160a01b03821660009081526010602052604090205460ff16611a9c57604051633af32abf60e01b81526001600160a01b0383811660048301527f00000000000000000000000000000000000000000000000000000000000000001690633af32abf90602401602060405180830381865afa1580156119cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f3919061381a565b611a4a5760405162461bcd60e51b815260206004820152602260248201527f7265776172647320746f6b656e73206d7573742062652077686974656c697374604482015261195960f21b6064820152608401610af1565b600f54600611611a9c5760405162461bcd60e51b815260206004820152601760248201527f746f6f206d616e79207265776172647320746f6b656e730000000000000000006044820152606401610af1565b6001600160a01b0382166000908152600460205260408120549003611ac757611ac782600042613164565b611ad5826000196001612b52565b6001600160a01b0384166000908152600760209081526040808320600683528184209490945593909255600590915220544210611c2c576040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611b53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b77919061383c565b9050611b8583333085613253565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf0919061383c565b9050611bfc8282613733565b9250611c0b62093a808461374a565b6001600160a01b03851660009081526004602052604090205550611dad9050565b6001600160a01b038216600090815260056020526040812054611c50904290613733565b6001600160a01b03841660009081526004602052604081205491925090611c7790836137af565b9050808311611c8557600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015611ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf0919061383c565b9050611cfe85333087613253565b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015611d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d69919061383c565b9050611d758282613733565b945062093a80611d858487613797565b611d8f919061374a565b6001600160a01b038716600090815260046020526040902055505050505b6001600160a01b038216600090815260046020526040902054611dcf57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015611e16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3a919061383c565b9050611e4962093a808261374a565b6001600160a01b0384166000908152600460205260409020541115611eb05760405162461bcd60e51b815260206004820152601860248201527f50726f76696465642072657761726420746f6f206869676800000000000000006044820152606401610af1565b611ebd62093a8042613797565b6001600160a01b03841660009081526005602090815260408083209390935560109052205460ff16611f4f576001600160a01b0383166000818152601060205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b03191690911790555b6040518281526001600160a01b0384169033907ff70d5c697de7ea828df48e5c4573cb2194c659f1901f70110c52b066dcf508269060200160405180910390a350506001601a5550565b6040516370a0823160e01b815233600482015261202b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612025919061383c565b8261202e565b50565b601a5460011461203d57600080fd5b6002601a5561204d3383836127b3565b50506001601a55565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461209e5760405162461bcd60e51b8152600401610af19061376c565b600080546001600160a01b0319166001600160a01b0383161790556120e67f00000000000000000000000000000000000000000000000000000000000000008260001961334b565b6001600160a01b038116600081815260116020526040808220805460ff19166001179055517f1da6983162fbed6342bb3a16724b0ea000cb17abdcd9d7699a13866ee978cd829190a250565b600060015460000361215a57506001600160a01b031660009081526007602052604090205490565b6001546001600160a01b03831660009081526004602090815260408083205460068352818420546005909352922054670de0b6b3a7640000929161219d91613155565b6121a6866114e0565b6121b09190613733565b6121ba91906137af565b6121c491906137af565b6121ce919061374a565b6001600160a01b038316600090815260076020526040902054610aa39190613797565b600f818154811061220157600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b038216600090815260176020526040812054819080820361224a576000809250925050612435565b6001600160a01b0385166000908152601660205260408120859161226f600185613733565b8152602001908152602001600020600001541161230c576001600160a01b0385166000908152601660205260408120906122aa600184613733565b81526020019081526020016000206001015460166000876001600160a01b03166001600160a01b0316815260200190815260200160002060006001846122f09190613733565b8152602001908152602001600020600001549250925050612435565b6001600160a01b0385166000908152601660209081526040808320838052909152902054841015612344576000809250925050612435565b600080612352600184613733565b90505b81811115612404576000600261236b8484613733565b612375919061374a565b61237f9083613733565b6001600160a01b03891660009081526016602090815260408083208484528252918290208251808401909352805480845260019091015491830191909152919250908890036123de576020810151905190965094506124359350505050565b80518811156123ef578193506123fd565b6123fa600183613733565b92505b5050612355565b506001600160a01b038616600090815260166020908152604080832093835292905220600181015490549093509150505b9250929050565b601a5460011461244b57600080fd5b6002601a55612458613395565b336000908152600c6020908152604080832054600d909252822054909161247f8284613733565b90508085111561252e57336000908152600e60205260409020544210156124e15760405162461bcd60e51b8152602060048201526016602482015275546865206c6f636b206469646e27742065787069726560501b6044820152606401610af1565b60006124ed8685613733565b90508060000361251957336000908152600e60209081526040808320839055600d90915281205561252c565b336000908152600d602052604090208190555b505b84600b60008282546125409190613733565b9091555050336000908152600c602052604081208054879290612564908490613733565b9091555061259590507f00000000000000000000000000000000000000000000000000000000000000003387612d42565b831561264f57336000908152600a602052604090205484146125b657600080fd5b336000818152600a6020526040808220919091555163411b1f7760e01b81526004810186905260248101919091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063411b1f7790604401600060405180830381600087803b15801561263257600080fd5b505af1158015612646573d6000803e3d6000fd5b50505050612662565b336000908152600a602052604090205493505b336000908152600260205260408120546001805491928392612685908490613733565b9091555050336000908152600c60209081526040808320546002909252822081905560018054919350839290916126bd908490613797565b9091555050336000818152600260205260409020546126dc9190612e42565b6126e4612f4d565b604051633aa53b9160e21b815260048101869052336024820152604481018790527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea94ee4490606401600060405180830381600087803b15801561275357600080fd5b505af1158015612767573d6000803e3d6000fd5b505060408051888152602081018a90523393507ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56892500160405180910390a250506001601a5550505050565b600082116127c057600080fd5b6127c8613395565b6127f47f0000000000000000000000000000000000000000000000000000000000000000333085613253565b81600b60008282546128069190613797565b90915550506001600160a01b0383166000908152600c602052604081208054849290612833908490613797565b909155505080156129cb57826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e836040518263ffffffff1660e01b815260040161289691815260200190565b602060405180830381865afa1580156128b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d791906137fd565b6001600160a01b0316146128ea57600080fd5b6001600160a01b0383166000908152600a602052604081205490036129a2576001600160a01b038381166000818152600a6020526040908190208490555163698473e360e01b81526004810184905260248101919091527f00000000000000000000000000000000000000000000000000000000000000009091169063698473e390604401600060405180830381600087803b15801561298957600080fd5b505af115801561299d573d6000803e3d6000fd5b505050505b6001600160a01b0383166000908152600a602052604090205481146129c657600080fd5b6129e6565b506001600160a01b0382166000908152600a60205260409020545b6001600160a01b0383166000908152600260205260408120546001805491928392612a12908490613733565b9091555050506001600160a01b0383166000908152600c6020908152604080832054600290925282208190556001805491928392612a51908490613797565b90915550612a6190508482612e42565b612a69612f4d565b60405163530e389d60e11b8152600481018390526001600160a01b038581166024830152604482018590527f0000000000000000000000000000000000000000000000000000000000000000169063a61c713a90606401600060405180830381600087803b158015612ada57600080fd5b505af1158015612aee573d6000803e3d6000fd5b505060408051858152602081018790526001600160a01b03881693507f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1592500160405180910390a250505050565b6000818311612b4b5781611558565b5090919050565b6001600160a01b0383166000908152600660209081526040808320546007909252822054601554839291908303612b8c5792509050612d3a565b6001600160a01b0387166000908152600460205260408120549003612bb7579250429150612d3a9050565b6000612bc283611510565b90506000612bde6001601554612bd89190613733565b89613155565b90508015612cb757815b612bf3600183613733565b8111612cb5576000818152601460209081526040918290208251808401909352805483526001015490820181905215612ca2576000601481612c36856001613797565b8152602001908152602001600020604051806040016040529081600082015481526020016001820154815250509050600080612c818e8460000151866000015187602001518d613419565b9092509050612c908289613797565b9750612c9d8e8983613164565b975050505b5080612cad816137ce565b915050612be8565b505b8615612d31576000818152601460209081526040918290208251808401909352805483526001015490820181905215612d2f576000612d108b612cf98d6114e0565b8451612d05908a612b3c565b85602001518a613419565b509050612d1d8186613797565b9450612d2a8b8642613164565b429550505b505b50909350909150505b935093915050565b6000836001600160a01b03163b11612d5957600080fd5b6040516001600160a01b03838116602483015260448201839052600091829186169063a9059cbb60e01b906064015b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612dc69190613855565b6000604051808303816000865af19150503d8060008114612e03576040519150601f19603f3d011682016040523d82523d6000602084013e612e08565b606091505b5091509150818015612e32575080511580612e32575080806020019051810190612e32919061381a565b612e3b57600080fd5b5050505050565b6001600160a01b03821660009081526013602052604090205442908015801590612ea057506001600160a01b03841660009081526012602052604081208391612e8c600185613733565b815260200190815260200160002060000154145b15612ee3576001600160a01b03841660009081526012602052604081208491612eca600185613733565b8152602081019190915260400160002060010155612f47565b60408051808201825283815260208082018681526001600160a01b038816600090815260128352848120868252909252929020905181559051600191820155612f2d908290613797565b6001600160a01b0385166000908152601360205260409020555b50505050565b601554428115801590612f7f57508060146000612f6b600186613733565b815260200190815260200160002060000154145b15612fb05760015460146000600185612f989190613733565b81526020810191909152604001600020600101555050565b604080518082018252828152600180546020808401918252600087815260149091529390932091518255915190820155612feb908390613797565b6015555050565b6001600160a01b038216600090815260066020908152604080832054600790925282205460155483929190830361302c5792509050612435565b6001600160a01b03861660009081526004602052604081205490036130575792504291506124359050565b600061306283611510565b9050600061307e60016015546130789190613733565b88613155565b9050815b818110156131465760008181526014602090815260409182902082518084019093528054835260010154908201819052156131335760006014816130c7856001613797565b81526020019081526020016000206040518060400160405290816000820154815260200160018201548152505090506000806131128d8460000151866000015187602001518d613419565b90925090506131218289613797565b975061312e8d8983613164565b975050505b508061313e816137ce565b915050613082565b50919792965091945050505050565b6000818310612b4b5781611558565b6001600160a01b03831660009081526017602052604090205480158015906131c057506001600160a01b038416600090815260166020526040812083916131ac600185613733565b815260200190815260200160002060000154145b156131ea576001600160a01b03841660009081526016602052604081208491612eca600185613733565b60408051808201825283815260208082018681526001600160a01b038816600090815260168352848120868252909252929020905181559051600191820155613234908290613797565b6001600160a01b03851660009081526017602052604090205550505050565b6000846001600160a01b03163b1161326a57600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916132ce9190613855565b6000604051808303816000865af19150503d806000811461330b576040519150601f19603f3d011682016040523d82523d6000602084013e613310565b606091505b509150915081801561333a57508051158061333a57508080602001905181019061333a919061381a565b61334357600080fd5b505050505050565b6000836001600160a01b03163b1161336257600080fd5b6040516001600160a01b03838116602483015260448201839052600091829186169063095ea7b360e01b90606401612d88565b600f5460005b81811015610fa7576000600f82815481106133b8576133b86137e7565b6000918252602090912001546001600160a01b031690506133dd816000196001612b52565b6001600160a01b039092166000908152600760209081526040808320600690925290912092909255905580613411816137ce565b91505061339b565b60008060006134288785612b3c565b6001600160a01b0389166000908152600460205260409020549091508590670de0b6b3a76400009061347b61345d8a89612b3c565b6001600160a01b038d16600090815260056020526040902054613155565b6001600160a01b038c1660009081526005602052604090205461349f908690613155565b6134a99190613733565b6134b391906137af565b6134bd91906137af565b6134c7919061374a565b9890975095505050505050565b6001600160a01b038116811461202b57600080fd5b80356134f4816134d4565b919050565b6000806040838503121561350c57600080fd5b8235613517816134d4565b946020939093013593505050565b60006020828403121561353757600080fd5b8135611558816134d4565b60008060006060848603121561355757600080fd5b8335613562816134d4565b95602085013595506040909401359392505050565b6000806040838503121561358a57600080fd5b8235613595816134d4565b915060208301356135a5816134d4565b809150509250929050565b6000602082840312156135c257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156135f257600080fd5b82356135fd816134d4565b915060208381013567ffffffffffffffff8082111561361b57600080fd5b818601915086601f83011261362f57600080fd5b813581811115613641576136416135c9565b8060051b604051601f19603f83011681018181108582111715613666576136666135c9565b60405291825284820192508381018501918983111561368457600080fd5b938501935b828510156136a95761369a856134e9565b84529385019392850192613689565b8096505050505050509250929050565b6000806000606084860312156136ce57600080fd5b8335925060208401356136e0816134d4565b915060408401356136f0816134d4565b809150509250925092565b6000806040838503121561370e57600080fd5b50508035926020909101359150565b634e487b7160e01b600052601160045260246000fd5b6000828210156137455761374561371d565b500390565b60008261376757634e487b7160e01b600052601260045260246000fd5b500490565b6020808252601190820152706e6f7420676175676520666163746f727960781b604082015260600190565b600082198211156137aa576137aa61371d565b500190565b60008160001904831182151516156137c9576137c961371d565b500290565b6000600182016137e0576137e061371d565b5060010190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561380f57600080fd5b8151611558816134d4565b60006020828403121561382c57600080fd5b8151801515811461155857600080fd5b60006020828403121561384e57600080fd5b5051919050565b6000825160005b81811015613876576020818601810151858301520161385c565b81811115613885576000828501525b50919091019291505056fea2646970667358221220b093d2b30a68f98de48e1890d371e8727f2af657fd230c3e4692053f0234ad3d64736f6c634300080d003300000000000000000000000006d082d70716a9d4cf83882e7ae3c1ec07a1f3c80000000000000000000000008ab55e29f34452a9c23d7405aa92fed5396b9de0000000000000000000000000a906901429f62708a587ea1fc5fef6c850aa5f9b0000000000000000000000002215ab2e64490bc8e9308d0371e708845a796a290000000000000000000000003b19b8ec75bbf85848d133f1a47710eeed57bd90000000000000000000000000f19d2e09223b6d0c2f82a84cef85e951245ce5670000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000030000000000000000000000007e51ad847cdf8729efc97cfa6e8afa4d658cb85b000000000000000000000000861a6fc736cbb12ad57477b535b829239c8347d70000000000000000000000000000000000000000000000000000000000000000