0 txs
550 calls
constructor
constructor(address _vault, address _gauge, (address from, address to, bool stable, address factory)[] _veloSwapRouteForToken0, (address from, address to, bool stable, address factory)[] _veloSwapRouteForToken1)
functions
apiVersion
purefunction apiVersion() pure returns (string)
balanceOfWant
viewfunction balanceOfWant() view returns (uint256)
baseFeeOracle
viewfunction baseFeeOracle() view returns (address)
claimableProfitInUsdc
viewfunction claimableProfitInUsdc() view returns (uint256)
claimableRewards
viewfunction claimableRewards() view returns (uint256)
creditThreshold
viewfunction creditThreshold() view returns (uint256)
delegatedAssets
viewfunction delegatedAssets() view returns (uint256)
doHealthCheck
viewfunction doHealthCheck() view returns (bool)
emergencyExit
viewfunction emergencyExit() view returns (bool)
estimatedTotalAssets
viewfunction estimatedTotalAssets() view returns (uint256)
ethToWant
viewfunction ethToWant(uint256 _ethAmount) view returns (uint256)
factory
viewfunction factory() view returns (address)
forceHarvestTriggerOnce
viewfunction forceHarvestTriggerOnce() view returns (bool)
gauge
viewfunction gauge() view returns (address)
harvestProfitMaxInUsdc
viewfunction harvestProfitMaxInUsdc() view returns (uint256)
harvestProfitMinInUsdc
viewfunction harvestProfitMinInUsdc() view returns (uint256)
harvestTrigger
viewfunction harvestTrigger(uint256 callCostinEth) view returns (bool)
healthCheck
viewfunction healthCheck() view returns (address)
isActive
viewfunction isActive() view returns (bool)
isBaseFeeAcceptable
viewfunction isBaseFeeAcceptable() view returns (bool)
isOriginal
viewfunction isOriginal() view returns (bool)
isStablePool
viewfunction isStablePool() view returns (bool)
keeper
viewfunction keeper() view returns (address)
localKeepVELO
viewfunction localKeepVELO() view returns (uint256)
maxReportDelay
viewfunction maxReportDelay() view returns (uint256)
metadataURI
viewfunction metadataURI() view returns (string)
minReportDelay
viewfunction minReportDelay() view returns (uint256)
name
viewfunction name() view returns (string)
poolToken0
viewfunction poolToken0() view returns (address)
poolToken1
viewfunction poolToken1() view returns (address)
rewards
viewfunction rewards() view returns (address)
router
viewfunction router() view returns (address)
stakedBalance
viewfunction stakedBalance() view returns (uint256)
strategist
viewfunction strategist() view returns (address)
swapRouteForToken0
viewfunction swapRouteForToken0(uint256) view returns (address from, address to, bool stable, address factory)
swapRouteForToken1
viewfunction swapRouteForToken1(uint256) view returns (address from, address to, bool stable, address factory)
tendTrigger
viewfunction tendTrigger(uint256 callCostInWei) view returns (bool)
vault
viewfunction vault() view returns (address)
velo
viewfunction velo() view returns (address)
veloRouteToToken0
viewfunction veloRouteToToken0() view returns (address[])
veloRouteToToken1
viewfunction veloRouteToToken1() view returns (address[])
veloVoter
viewfunction veloVoter() view returns (address)
want
viewfunction want() view returns (address)
cloneStrategyVelodrome
nonpayablefunction cloneStrategyVelodrome(address _vault, address _strategist, address _rewards, address _keeper, address _gauge, tuple[] _veloSwapRouteForToken0, tuple[] _veloSwapRouteForToken1) returns (address newStrategy)
harvest
nonpayablefunction harvest()
initialize
nonpayablefunction initialize(address _vault, address _strategist, address _rewards, address _keeper, address _gauge, tuple[] _veloSwapRouteForToken0, tuple[] _veloSwapRouteForToken1)
manualRewardClaim
nonpayablefunction manualRewardClaim()
migrate
nonpayablefunction migrate(address _newStrategy)
setBaseFeeOracle
nonpayablefunction setBaseFeeOracle(address _baseFeeOracle)
setCreditThreshold
nonpayablefunction setCreditThreshold(uint256 _creditThreshold)
setDoHealthCheck
nonpayablefunction setDoHealthCheck(bool _doHealthCheck)
setEmergencyExit
nonpayablefunction setEmergencyExit()
setForceHarvestTriggerOnce
nonpayablefunction setForceHarvestTriggerOnce(bool _forceHarvestTriggerOnce)
setHarvestTriggerParams
nonpayablefunction setHarvestTriggerParams(uint256 _harvestProfitMinInUsdc, uint256 _harvestProfitMaxInUsdc)
setHealthCheck
nonpayablefunction setHealthCheck(address _healthCheck)
setKeeper
nonpayablefunction setKeeper(address _keeper)
setLocalKeepVelo
nonpayablefunction setLocalKeepVelo(uint256 _keepVelo)
setMaxReportDelay
nonpayablefunction setMaxReportDelay(uint256 _delay)
setMetadataURI
nonpayablefunction setMetadataURI(string _metadataURI)
setMinReportDelay
nonpayablefunction setMinReportDelay(uint256 _delay)
setRewards
nonpayablefunction setRewards(address _rewards)
setStrategist
nonpayablefunction setStrategist(address _strategist)
setSwapRoutes
nonpayablefunction setSwapRoutes(tuple[] _newSwapRouteForToken0, tuple[] _newSwapRouteForToken1)
setVoter
nonpayablefunction setVoter(address _veloVoter)
sweep
nonpayablefunction sweep(address _token)
tend
nonpayablefunction tend()
withdraw
nonpayablefunction withdraw(uint256 _amountNeeded) returns (uint256 _loss)
events
Cloned
event Cloned(address indexed clone)
EmergencyExitEnabled
event EmergencyExitEnabled()
ForcedHarvestTrigger
event ForcedHarvestTrigger(bool triggerState)
Harvested
event Harvested(uint256 profit, uint256 loss, uint256 debtPayment, uint256 debtOutstanding)
SetDoHealthCheck
event SetDoHealthCheck(bool)
SetHealthCheck
event SetHealthCheck(address)
UpdatedBaseFeeOracle
event UpdatedBaseFeeOracle(address baseFeeOracle)
UpdatedCreditThreshold
event UpdatedCreditThreshold(uint256 creditThreshold)
UpdatedKeeper
event UpdatedKeeper(address newKeeper)
UpdatedMaxReportDelay
event UpdatedMaxReportDelay(uint256 delay)
UpdatedMetadataURI
event UpdatedMetadataURI(string metadataURI)
UpdatedMinReportDelay
event UpdatedMinReportDelay(uint256 delay)
UpdatedRewards
event UpdatedRewards(address rewards)
UpdatedStrategist
event UpdatedStrategist(address newStrategist)
errors
No errors.
creation bytecode
0x60806040526015805460ff191660011790553480156200001e57600080fd5b506040516200624a3803806200624a83398101604081905262000041916200118a565b83620000508133808062000068565b506200005e838383620002d3565b50505050620016b4565b6006546001600160a01b031615620000c75760405162461bcd60e51b815260206004820152601c60248201527f537472617465677920616c726561647920696e697469616c697a65640000000060448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b03861690811790915560408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa15801562000121573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014791906200121a565b600680546001600160a01b0319166001600160a01b0392909216918217905562000181908560001962000c30602090811b620021f417901c565b600380546001600160a01b038086166001600160a01b031992831617909255600480548584169083161781556005805485851693169290921790915562278d006008556002546040805163313ce56760e01b81529051919093169263313ce56792818101926020929091908290030181865afa15801562000206573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022c91906200123f565b6200023990600a6200136e565b6200024890620f42406200137c565b600a556002546004805460405163095ea7b360e01b81526001600160a01b039182169281019290925260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015620002a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cc919062001396565b5050505050565b600b5461010090046001600160a01b031615620003335760405162461bcd60e51b815260206004820152601360248201527f616c726561647920696e697469616c697a6564000000000000000000000000006044820152606401620000be565b600b8054610100600160a81b0319166101006001600160a01b0386811682029290921792839055600654604080516372f702f360e01b815290519184169492909204909216916372f702f3916004808201926020929091908290030181865afa158015620003a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cb91906200121a565b6001600160a01b031614620004235760405162461bcd60e51b815260206004820152601360248201527f676175676520706f6f6c206d69736d61746368000000000000000000000000006044820152606401620000be565b600654604080516322be3de160e01b815290516001600160a01b039092169182916322be3de19160048083019260209291908290030181865afa1580156200046f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000495919062001396565b601060146101000a81548160ff021916908315150217905550806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051391906200121a565b600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000578573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200059e91906200121a565b600f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200062991906200121a565b601080546001600160a01b0319166001600160a01b039290921691909117905560005b83518110156200070b5760118482815181106200066d576200066d620013b4565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b96151596909602959095179094556060909101516002909301805490921692169190911790556200070381620013ca565b90506200064c565b5060005b8251811015620007ce576012838281518110620007305762000730620013b4565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b9615159690960295909517909455606090910151600290930180549092169216919091179055620007c681620013ca565b90506200070f565b50600e546001600160a01b03166000805160206200622a83398151915214620008d4576000805160206200622a8339815191526001600160a01b03166011600081548110620008215762000821620013b4565b60009182526020909120600390910201546001600160a01b0316141580620008905750601160018451620008569190620013e6565b81548110620008695762000869620013b4565b6000918252602090912060016003909202010154600e546001600160a01b03908116911614155b15620008d45760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718103937baba329032b93937b960711b6044820152606401620000be565b600f546001600160a01b03166000805160206200622a83398151915214620009d9576000805160206200622a8339815191526001600160a01b03166012600081548110620009265762000926620013b4565b60009182526020909120600390910201546001600160a01b03161415806200099557506012600183516200095b9190620013e6565b815481106200096e576200096e620013b4565b6000918252602090912060016003909202010154600f546001600160a01b03908116911614155b15620009d95760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718903937baba329032b93937b960711b6044820152606401620000be565b62278d00600855690a968163f0a57b400000600a55633b9aca0060135564174876e80060145560065460405163095ea7b360e01b81526001600160a01b03868116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af115801562000a54573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a7a919062001396565b50600e5462000ab6906001600160a01b031673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4360001962000c30602090811b620021f417901c565b600f5462000af1906001600160a01b031673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4360001962000c30602090811b620021f417901c565b60405163095ea7b360e01b815273cf77a3ba9a5ca399b7c97c74d54e5b1beb874e43600482015260001960248201526000805160206200622a8339815191529063095ea7b3906044016020604051808303816000875af115801562000b5a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b80919062001396565b50600660009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000bd5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000bff919081019062001422565b60405160200162000c119190620014c0565b60405160208183030381529060405260169081620002cc919062001595565b80158062000cae5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000c86573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cac91906200123f565b155b62000d225760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401620000be565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b1790915262000d7a91859162000d7f16565b505050565b600062000ddb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662000e5d60201b62002341179092919060201c565b80519091501562000d7a578080602001905181019062000dfc919062001396565b62000d7a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620000be565b606062000e6e848460008562000e76565b949350505050565b60608247101562000ed95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401620000be565b600080866001600160a01b0316858760405162000ef7919062001661565b60006040518083038185875af1925050503d806000811462000f36576040519150601f19603f3d011682016040523d82523d6000602084013e62000f3b565b606091505b50909250905062000f4f8783838762000f5a565b979650505050505050565b6060831562000fce57825160000362000fc6576001600160a01b0385163b62000fc65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620000be565b508162000e6e565b62000e6e838381511562000fe55781518083602001fd5b8060405162461bcd60e51b8152600401620000be91906200167f565b80516001600160a01b03811681146200101957600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200105957620010596200101e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200108a576200108a6200101e565b604052919050565b805180151581146200101957600080fd5b600082601f830112620010b557600080fd5b815160206001600160401b03821115620010d357620010d36200101e565b620010e3818360051b016200105f565b82815260079290921b840181019181810190868411156200110357600080fd5b8286015b848110156200117f5760808189031215620011225760008081fd5b6200112c62001034565b620011378262001001565b81526200114685830162001001565b8582015260406200115981840162001092565b9082015260606200116c83820162001001565b9082015283529183019160800162001107565b509695505050505050565b60008060008060808587031215620011a157600080fd5b620011ac8562001001565b9350620011bc6020860162001001565b60408601519093506001600160401b0380821115620011da57600080fd5b620011e888838901620010a3565b93506060870151915080821115620011ff57600080fd5b506200120e87828801620010a3565b91505092959194509250565b6000602082840312156200122d57600080fd5b620012388262001001565b9392505050565b6000602082840312156200125257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620012b057816000190482111562001294576200129462001259565b80851615620012a257918102915b93841c939080029062001274565b509250929050565b600082620012c95750600162001368565b81620012d85750600062001368565b8160018114620012f15760028114620012fc576200131c565b600191505062001368565b60ff84111562001310576200131062001259565b50506001821b62001368565b5060208310610133831016604e8410600b841016171562001341575081810a62001368565b6200134d83836200126f565b806000190482111562001364576200136462001259565b0290505b92915050565b6000620012388383620012b8565b808202811582820484141762001368576200136862001259565b600060208284031215620013a957600080fd5b620012388262001092565b634e487b7160e01b600052603260045260246000fd5b600060018201620013df57620013df62001259565b5060010190565b8181038181111562001368576200136862001259565b60005b8381101562001419578181015183820152602001620013ff565b50506000910152565b6000602082840312156200143557600080fd5b81516001600160401b03808211156200144d57600080fd5b818401915084601f8301126200146257600080fd5b8151818111156200147757620014776200101e565b6200148c601f8201601f19166020016200105f565b9150808252856020828501011115620014a457600080fd5b620014b7816020840160208601620013fc565b50949350505050565b7f53747261746567794165726f64726f6d65466163746f72792d00000000000000815260008251620014fa816019850160208701620013fc565b9190910160190192915050565b600181811c908216806200151c57607f821691505b6020821081036200153d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000d7a57600081815260208120601f850160051c810160208610156200156c5750805b601f850160051c820191505b818110156200158d5782815560010162001578565b505050505050565b81516001600160401b03811115620015b157620015b16200101e565b620015c981620015c2845462001507565b8462001543565b602080601f831160018114620016015760008415620015e85750858301515b600019600386901b1c1916600185901b1785556200158d565b600085815260208120601f198616915b82811015620016325788860151825594840194600190910190840162001611565b5085821015620016515787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000825162001675818460208701620013fc565b9190910192915050565b6020815260008251806020840152620016a0816040850160208701620013fc565b601f01601f19169190910160400192915050565b614b6680620016c46000396000f3fe608060405234801561001057600080fd5b50600436106103f15760003560e01c80638e6350e211610215578063c45a015511610125578063ed882c2b116100b8578063f887ea4011610087578063f887ea401461084a578063fa4e2df914610865578063fbfa77cf1461086e578063fcf2d0ad14610881578063fe2508a61461088957600080fd5b8063ed882c2b14610809578063ee6497f11461081c578063efbb5cb01461082f578063f017c92f1461083757600080fd5b8063ce5494bb116100f4578063ce5494bb146107c8578063d96d862a146107db578063e81c1e79146107ee578063ec38a862146107f657600080fd5b8063c45a015514610786578063c6040a2c14610799578063c7b9d530146107ac578063c9d100da146107bf57600080fd5b8063a763cf5b116101a8578063b252720b11610177578063b252720b14610710578063b576211414610728578063b9fe5c4c14610730578063c12f643114610738578063c1a3d44c1461077e57600080fd5b8063a763cf5b146106d4578063aa5480cf146106e1578063ac00ff26146106ea578063aced1661146106fd57600080fd5b80639ec5a894116101e45780639ec5a894146106835780639f450b5a14610696578063a6f19c84146106a9578063a73bf6df146106c157600080fd5b80638e6350e21461065857806395326e2d1461065f57806395e80c50146106675780639a9b23f01461067057600080fd5b80634641257d11610310578063650d1880116102a3578063748747e611610272578063748747e6146105f7578063750521f51461060a578063780022a01461061d578063826cddf61461062b5780638c7c53ce1461064357600080fd5b8063650d1880146105c15780636718835f146105d55780636c003a9b146105e25780636f392ce7146105ea57600080fd5b80635641ec03116102df5780635641ec03146105855780635ae29a8c146105925780635b9f0016146105a65780635cf6d5ad146105ae57600080fd5b80634641257d146105445780634758af8a1461054c5780634a76cbfb1461055f5780634bc2a6571461057257600080fd5b80631fe4a686116103885780632e1a7d4d116103575780632e1a7d4d14610503578063320afc2d1461051657806339a172a814610529578063440368a31461053c57600080fd5b80631fe4a686146104ae57806322f3e2d4146104c157806325829410146104d957806328b7ccf7146104fa57600080fd5b80630ada4dab116103c45780630ada4dab1461044857806311bc82451461045b578063143f3dce1461046e5780631f1fcd511461048357600080fd5b806301681a62146103f657806303ee438c1461040b57806306fdde0314610429578063090c492214610431575b600080fd5b610409610404366004613f1d565b61089c565b005b610413610a47565b6040516104209190613f65565b60405180910390f35b610413610ad5565b61043a60135481565b604051908152602001610420565b610409610456366004613fa6565b610b67565b610409610469366004613f1d565b610bb7565b610476610c23565b6040516104209190613fc3565b600654610496906001600160a01b031681565b6040516001600160a01b039091168152602001610420565b600354610496906001600160a01b031681565b6104c9610cca565b6040519015158152602001610420565b60408051808201909152600581526418171a171b60d91b6020820152610413565b61043a60085481565b61043a610511366004614010565b610d58565b6104966105243660046141a8565b610dcc565b610409610537366004614010565b610ed3565b610409610f10565b610409610f8e565b600f54610496906001600160a01b031681565b61040961056d366004614269565b61133c565b610409610580366004613f1d565b61162e565b6009546104c99060ff1681565b6010546104c990600160a01b900460ff1681565b61043a611658565b600d54610496906001600160a01b031681565b6104c96105cf366004614010565b50600090565b6001546104c99060ff1681565b61043a6116cb565b6015546104c99060ff1681565b610409610605366004613f1d565b6116ff565b6104096106183660046142cd565b611768565b61043a6105cf366004614010565b6009546104969061010090046001600160a01b031681565b610496600080516020614b1183398151915281565b600061043a565b6104c96117bb565b61043a60075481565b61040961067e366004614010565b611850565b600454610496906001600160a01b031681565b6104096106a4366004613f1d565b61188f565b600b546104969061010090046001600160a01b031681565b600e54610496906001600160a01b031681565b600b546104c99060ff1681565b61043a600a5481565b6104096106f8366004613fa6565b6118ed565b600554610496906001600160a01b031681565b6001546104969061010090046001600160a01b031681565b61043a61193d565b6104766119f8565b61074b610746366004614010565b611a89565b604080516001600160a01b0395861681529385166020850152911515918301919091529091166060820152608001610420565b61043a611ad6565b601054610496906001600160a01b031681565b61074b6107a7366004614010565b611b07565b6104096107ba366004613f1d565b611b17565b61043a600c5481565b6104096107d6366004613f1d565b611b80565b6104096107e93660046141a8565b611cab565b610409611ccb565b610409610804366004613f1d565b611d36565b6104c9610817366004614010565b611e94565b61040961082a36600461433f565b61202c565b61043a61203f565b610409610845366004614010565b61205b565b61049673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4381565b61043a60145481565b600254610496906001600160a01b031681565b610409612098565b610409610897366004614010565b6121b7565b6108a4612358565b6006546001600160a01b03908116908216036108ef5760405162461bcd60e51b8152602060048201526005602482015264085dd85b9d60da1b60448201526064015b60405180910390fd5b6002546001600160a01b03908116908216036109375760405162461bcd60e51b81526020600482015260076024820152662173686172657360c81b60448201526064016108e6565b606060005b81518110156109be5781818151811061095757610957614361565b60200260200101516001600160a01b0316836001600160a01b0316036109ac5760405162461bcd60e51b815260206004820152600a602482015269085c1c9bdd1958dd195960b21b60448201526064016108e6565b806109b68161438d565b91505061093c565b50610a436109ca61237d565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa158015610a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3291906143a6565b6001600160a01b03851691906123eb565b5050565b60008054610a54906143bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610a80906143bf565b8015610acd5780601f10610aa257610100808354040283529160200191610acd565b820191906000526020600020905b815481529060010190602001808311610ab057829003601f168201915b505050505081565b606060168054610ae4906143bf565b80601f0160208091040260200160405190810160405280929190818152602001828054610b10906143bf565b8015610b5d5780601f10610b3257610100808354040283529160200191610b5d565b820191906000526020600020905b815481529060010190602001808311610b4057829003601f168201915b5050505050905090565b610b6f61241b565b600b805460ff19168215159081179091556040519081527f6ad28df1b554fa6cacd46ae82fa811748d53798feeb437ddf234bf3083953319906020015b60405180910390a150565b610bbf61241b565b6040516001600160a01b03821681527fc8db9c35f716b87af1fbb83f03c78646061931269301fd7ba6dcf189b4cdc2fc9060200160405180910390a1600180546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b606060006011805480602002602001604051908101604052809291908181526020016000905b82821015610cb5576000848152602090819020604080516080810182526003860290920180546001600160a01b03908116845260018083015480831686880152600160a01b900460ff161515938501939093526002909101541660608301529083529092019101610c49565b505050509050610cc4816124bd565b91505090565b6002546040516339ebf82360e01b815230600482015260009182916001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c91906143f3565b604001511180610d5357506000610d5161203f565b115b905090565b6002546000906001600160a01b03163314610d9e5760405162461bcd60e51b8152602060048201526006602482015265085d985d5b1d60d21b60448201526064016108e6565b6000610da9836125dc565b600654909350909150610dc6906001600160a01b031633836123eb565b50919050565b60155460009060ff16610dde57600080fd5b604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b81523060601b601482018190526e5af43d82803e903d91602b57fd5bf360881b6028830152906037816000f0604051636cb6c31560e11b81529093506001600160a01b038416915063d96d862a90610e61908c908c908c908c908c908c908c906004016144d9565b600060405180830381600087803b158015610e7b57600080fd5b505af1158015610e8f573d6000803e3d6000fd5b50506040516001600160a01b03851692507f783540fb4221a3238720dc7038937d0d79982bcf895274aa6ad179f82cf0d53c9150600090a250979650505050505050565b610edb6126b0565b60078190556040518181527fbb2c369a0355a34b02ab5fce0643150c87e1c8dfe7c918d465591879f57948b190602001610bac565b610f186126cc565b6002546040805163bf3759b560e01b81529051610f8c926001600160a01b03169163bf3759b59160048083019260209291908290030181865afa158015610f63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8791906143a6565b612821565b565b610f966126cc565b6000806000600260009054906101000a90046001600160a01b03166001600160a01b031663bf3759b56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101291906143a6565b60095490915060009060ff161561106f57600061102d6128a7565b90508281101561104857611041818461453d565b935061105d565b8281111561105d5761105a838261453d565b94505b611067848461453d565b915050611080565b61107882612925565b919550935090505b600b805460ff19169055604051600081527f6ad28df1b554fa6cacd46ae82fa811748d53798feeb437ddf234bf30839533199060200160405180910390a16002546040516339ebf82360e01b81523060048201526000916001600160a01b0316906339ebf8239060240161012060405180830381865afa158015611108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112c91906143f3565b60c001516002546040516328766ebf60e21b81526004810188905260248101879052604481018590529192506001600160a01b03169063a1d9bafc906064016020604051808303816000875af115801561118a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ae91906143a6565b92506111b983612821565b60015460ff1680156111da575060015461010090046001600160a01b031615155b156112ac5760015460405163c70fa00b60e01b815260048101879052602481018690526044810184905260648101859052608481018390526101009091046001600160a01b03169063c70fa00b9060a401602060405180830381865afa158015611248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126c9190614550565b6112a75760405162461bcd60e51b815260206004820152600c60248201526b216865616c7468636865636b60a01b60448201526064016108e6565b6112ed565b604051600181527ff769f6bf659bbbdabf212d830720ce893eedc57f25ebb8e44edf5b300618a35b9060200160405180910390a16001805460ff1916811790555b6040805186815260208101869052908101839052606081018490527f4c0f499ffe6befa0ca7c826b0916cf87bea98de658013e76938489368d60d5099060800160405180910390a15050505050565b61134461241b565b61135060116000613eaa565b61135c60126000613eaa565b60005b825181101561141757601183828151811061137c5761137c614361565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b96151596909602959095179094556060909101516002909301805490921692169190911790556114108161438d565b905061135f565b5060005b81518110156114d357601282828151811061143857611438614361565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b96151596909602959095179094556060909101516002909301805490921692169190911790556114cc8161438d565b905061141b565b50600e546001600160a01b0316600080516020614b118339815191521480159061153f5750601160018351611508919061453d565b8154811061151857611518614361565b6000918252602090912060016003909202010154600e546001600160a01b03908116911614155b156115815760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718103937baba329032b93937b960711b60448201526064016108e6565b600f546001600160a01b0316600080516020614b11833981519152148015906115ec57506012600182516115b5919061453d565b815481106115c5576115c5614361565b6000918252602090912060016003909202010154600f546001600160a01b03908116911614155b15610a435760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718903937baba329032b93937b960711b60448201526064016108e6565b611636612358565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546040516370a0823160e01b815230600482015260009161010090046001600160a01b0316906370a08231906024015b602060405180830381865afa1580156116a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5391906143a6565b600b546040516246613160e11b815230600482015260009161010090046001600160a01b031690628cc2629060240161168a565b6117076126b0565b6001600160a01b03811661171a57600080fd5b600580546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f202ddb4a2e345f6323ed90f8fc8559d770a7abbbeee84dde8aca3351fe715490602001610bac565b6117706126b0565b600061177d8284836145b3565b507f300e67d5a415b6d015a471d9c7b95dd58f3e8290af965e84e0f845de2996dda682826040516117af929190614673565b60405180910390a15050565b60095460009061010090046001600160a01b03166117d95750600190565b600960019054906101000a90046001600160a01b03166001600160a01b03166334a9e75c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561182c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d539190614550565b611858612358565b61271081111561186757600080fd5b6000811180156118805750600d546001600160a01b0316155b1561188a57600080fd5b600c55565b61189761241b565b60098054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f711be97287cb9ec921887b9be36e148e1a27c6b158547b22b9704ffc54447a0f90602001610bac565b6118f561241b565b60405181151581527ff769f6bf659bbbdabf212d830720ce893eedc57f25ebb8e44edf5b300618a35b9060200160405180910390a16001805460ff1916911515919091179055565b6040516378a051ad60e11b8152670de0b6b3a76400006004820152600080516020614b1183398151915260248201526000908190732223f9fe624f69da4d8256a7bcc9104fba7f8f759063f140a35a90604401602060405180830381865afa1580156119ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d191906143a6565b9050670de0b6b3a76400006119e46116cb565b6119ee90836146a2565b610cc491906146b9565b6060600060128054806020026020016040519081016040528092919081815260200160009082821015610cb5576000848152602090819020604080516080810182526003860290920180546001600160a01b03908116845260018083015480831686880152600160a01b900460ff161515938501939093526002909101541660608301529083529092019101610c49565b60128181548110611a9957600080fd5b60009182526020909120600390910201805460018201546002909201546001600160a01b03918216935081831692600160a01b900460ff16911684565b6006546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240161168a565b60118181548110611a9957600080fd5b611b1f6126b0565b6001600160a01b038116611b3257600080fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527f352ececae6d7d1e6d26bcf2c549dfd55be1637e9b22dc0cf3b71ddb36097a6b490602001610bac565b6002546001600160a01b03163314611b9757600080fd5b6002546040805163fbfa77cf60e01b815290516001600160a01b039283169284169163fbfa77cf9160048083019260209291908290030181865afa158015611be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0791906146db565b6001600160a01b031614611c1a57600080fd5b611c2381612fbe565b6006546040516370a0823160e01b8152306004820152611ca89183916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9591906143a6565b6006546001600160a01b031691906123eb565b50565b611cb7878787876130c4565b611cc283838361330e565b50505050505050565b611cd361241b565b600b54604051630c00007b60e41b81523060048201526101009091046001600160a01b03169063c00007b090602401600060405180830381600087803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b50505050565b611d3e613bf0565b6001600160a01b038116611d5157600080fd5b6002546004805460405163095ea7b360e01b81526001600160a01b0391821692810192909252600060248301529091169063095ea7b3906044016020604051808303816000875af1158015611daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dce9190614550565b50600480546001600160a01b0319166001600160a01b03838116918217835560025460405163095ea7b360e01b8152938401929092526000196024840152169063095ea7b3906044016020604051808303816000875af1158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614550565b506040516001600160a01b03821681527fafbb66abf8f3b719799940473a4052a3717cdd8e40fb6c8a3faadab316b1a06990602001610bac565b6000611e9e610cca565b611eaa57506000919050565b6000611eb461193d565b9050601454811115611ec95750600192915050565b611ed16117bb565b611ede5750600092915050565b600b5460ff1615611ef25750600192915050565b601354811115611f055750600192915050565b6002546040516339ebf82360e01b81523060048201526000916001600160a01b0316906339ebf8239060240161012060405180830381865afa158015611f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7391906143f3565b90506008548160a0015142611f88919061453d565b1115611f98575060019392505050565b600a54600260009054906101000a90046001600160a01b03166001600160a01b031663112c1f9b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201291906143a6565b1115612022575060019392505050565b5060009392505050565b61203461241b565b601391909155601455565b6000612049611658565b612051611ad6565b610d5391906146f8565b6120636126b0565b60088190556040518181527f5430e11864ad7aa9775b07d12657fe52df9aa2ba734355bd8ef8747be2c800c590602001610bac565b6120a0613c29565b6009805460ff191660011790556002546040516339ebf82360e01b81523060048201526001600160a01b03909116906339ebf8239060240161012060405180830381865afa1580156120f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211a91906143f3565b604001511561218c57600260009054906101000a90046001600160a01b03166001600160a01b031663a0e4af9a6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561217357600080fd5b505af1158015612187573d6000803e3d6000fd5b505050505b6040517f97e963041e952738788b9d4871d854d282065b8f90a464928d6528f2e9a4fd0b90600090a1565b6121bf61241b565b600a8190556040518181527fe5ef7832c564a10cbe7b4f1e01ac33a406cb63fcf430a97a9af8616d150af5f390602001610bac565b80158061226e5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226c91906143a6565b155b6122d95760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b60648201526084016108e6565b6040516001600160a01b03831660248201526044810182905261233c90849063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613c45565b505050565b60606123508484600085613d17565b949350505050565b61236061237d565b6001600160a01b0316336001600160a01b031614610f8c57600080fd5b60025460408051635aa6e67560e01b815290516000926001600160a01b031691635aa6e6759160048083019260209291908290030181865afa1580156123c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5391906146db565b6040516001600160a01b03831660248201526044810182905261233c90849063a9059cbb60e01b90606401612305565b600260009054906101000a90046001600160a01b03166001600160a01b03166388a8d6026040518163ffffffff1660e01b8152600401602060405180830381865afa15801561246e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249291906146db565b6001600160a01b0316336001600160a01b031614806124b4575061236061237d565b610f8c57600080fd5b60606000825160016124cf91906146f8565b67ffffffffffffffff8111156124e7576124e7614029565b604051908082528060200260200182016040528015612510578160200160208202803683370190505b5090508260008151811061252657612526614361565b6020026020010151600001518160008151811061254557612545614361565b60200260200101906001600160a01b031690816001600160a01b03168152505060005b83518110156125d55783818151811061258357612583614361565b6020026020010151602001518282600161259d91906146f8565b815181106125ad576125ad614361565b6001600160a01b03909216602092830291909101909101526125ce8161438d565b9050612568565b5092915050565b60008060006125e9611ad6565b90508084111561269f5760006125fd611658565b9050801561267b57600b548286039061010090046001600160a01b0316632e1a7d4d6126298484613df2565b6040518263ffffffff1660e01b815260040161264791815260200190565b600060405180830381600087803b15801561266157600080fd5b505af1158015612675573d6000803e3d6000fd5b50505050505b6000612685611ad6565b90506126918682613df2565b9450848603935050506126aa565b509192600092509050565b50915091565b6003546001600160a01b03163314806124b4575061236061237d565b6005546001600160a01b03163314806126ef57506003546001600160a01b031633145b8061271257506126fd61237d565b6001600160a01b0316336001600160a01b0316145b806127a45750600260009054906101000a90046001600160a01b03166001600160a01b031663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa15801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f91906146db565b6001600160a01b0316336001600160a01b0316145b806124b45750600260009054906101000a90046001600160a01b03166001600160a01b03166388a8d6026040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236091906146db565b60095460ff161561282f5750565b6000612839611ad6565b90508015610a4357600b5460405163b6b55f2560e01b8152600481018390526101009091046001600160a01b03169063b6b55f2590602401600060405180830381600087803b15801561288b57600080fd5b505af115801561289f573d6000803e3d6000fd5b505050505050565b6000806128b2611658565b9050801561291d57600b54604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561290457600080fd5b505af1158015612918573d6000803e3d6000fd5b505050505b610cc4611ad6565b600b54604051630c00007b60e41b81523060048201526000918291829161010090046001600160a01b03169063c00007b090602401600060405180830381600087803b15801561297457600080fd5b505af1158015612988573d6000803e3d6000fd5b50506040516370a0823160e01b815230600482015260009250600080516020614b1183398151915291506370a0823190602401602060405180830381865afa1580156129d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fc91906143a6565b600c54600d54919250906001600160a01b03168115801590612a2657506001600160a01b03811615155b15612ac257612710828402048015612a5157612a51600080516020614b1183398151915283836123eb565b6040516370a0823160e01b8152306004820152600080516020614b11833981519152906370a0823190602401602060405180830381865afa158015612a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abe91906143a6565b9350505b678ac7230489e80000831115612ed5576000612adf6002856146b9565b90506000612aed828661453d565b601054909150600160a01b900460ff1615612bcb57600e54600f5460105460405163f5ba53c760e01b81526001600160a01b039384166004820152918316602483015291909116604482015260009073cf77a3ba9a5ca399b7c97c74d54e5b1beb874e439063f5ba53c790606401602060405180830381865afa158015612b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9c91906143a6565b9050670de0b6b3a7640000612bb182886146a2565b612bbb91906146b9565b9150612bc7828761453d565b9250505b600e546001600160a01b0316600080516020614b1183398151915214612c755760405163cac88ea960e01b815273cf77a3ba9a5ca399b7c97c74d54e5b1beb874e439063cac88ea990612c2c9085906000906011903090429060040161470b565b6000604051808303816000875af1158015612c4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612c7391908101906147b7565b505b600f546001600160a01b0316600080516020614b1183398151915214612d1f5760405163cac88ea960e01b815273cf77a3ba9a5ca399b7c97c74d54e5b1beb874e439063cac88ea990612cd69084906000906012903090429060040161470b565b6000604051808303816000875af1158015612cf5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d1d91908101906147b7565b505b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612d68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8c91906143a6565b600f546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dfe91906143a6565b600e54600f54601054604051635a47ddc360e01b81526001600160a01b039384166004820152929091166024830152600160a01b900460ff16151560448201526064810184905260848101829052600060a4820181905260c48201523060e48201524261010482015290915073cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4390635a47ddc390610124016060604051808303816000875af1158015612ea9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecd919061483d565b505050505050505b6000612edf61203f565b6002546040516339ebf82360e01b81523060048201529192506000916001600160a01b03909116906339ebf8239060240161012060405180830381865afa158015612f2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5291906143f3565b60c001519050808210612fac5780820397508895506000612f73878a6146f8565b90506000612f80826125dc565b50905080821115612fa55780881115612f9f5780975060009950612fa5565b87810399505b5050612fb2565b81810396505b50505050509193909250565b6000612fc8611658565b9050801561303357600b54604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561301a57600080fd5b505af115801561302e573d6000803e3d6000fd5b505050505b6040516370a0823160e01b8152306004820152600090600080516020614b11833981519152906370a0823190602401602060405180830381865afa15801561307f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a391906143a6565b9050801561233c5761233c600080516020614b1183398151915284836123eb565b6006546001600160a01b03161561311d5760405162461bcd60e51b815260206004820152601c60248201527f537472617465677920616c726561647920696e697469616c697a65640000000060448201526064016108e6565b600280546001600160a01b0319166001600160a01b03861690811790915560408051637e062a3560e11b8152905163fc0c546a916004808201926020929091908290030181865afa158015613176573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061319a91906146db565b600680546001600160a01b0319166001600160a01b039290921691821790556131c690856000196121f4565b600380546001600160a01b038086166001600160a01b031992831617909255600480548584169083161781556005805485851693169290921790915562278d006008556002546040805163313ce56760e01b81529051919093169263313ce56792818101926020929091908290030181865afa15801561324a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326e91906143a6565b61327990600a61494f565b61328690620f42406146a2565b600a556002546004805460405163095ea7b360e01b81526001600160a01b039182169281019290925260001960248301529091169063095ea7b3906044016020604051808303816000875af11580156132e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133079190614550565b5050505050565b600b5461010090046001600160a01b0316156133625760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064016108e6565b600b8054610100600160a81b0319166101006001600160a01b0386811682029290921792839055600654604080516372f702f360e01b815290519184169492909204909216916372f702f3916004808201926020929091908290030181865afa1580156133d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f791906146db565b6001600160a01b0316146134435760405162461bcd60e51b81526020600482015260136024820152720cec2eaceca40e0deded840dad2e6dac2e8c6d606b1b60448201526064016108e6565b600654604080516322be3de160e01b815290516001600160a01b039092169182916322be3de19160048083019260209291908290030181865afa15801561348e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b29190614550565b601060146101000a81548160ff021916908315150217905550806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061352d91906146db565b600e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135b591906146db565b600f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015613619573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363d91906146db565b601080546001600160a01b0319166001600160a01b039290921691909117905560005b835181101561371857601184828151811061367d5761367d614361565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b96151596909602959095179094556060909101516002909301805490921692169190911790556137118161438d565b9050613660565b5060005b82518110156137d457601283828151811061373957613739614361565b602090810291909101810151825460018082018555600094855293839020825160039092020180546001600160a01b03199081166001600160a01b0393841617825593830151948101805460408501519684166001600160a81b031990911617600160a01b96151596909602959095179094556060909101516002909301805490921692169190911790556137cd8161438d565b905061371c565b50600e546001600160a01b0316600080516020614b11833981519152146138cc57600080516020614b118339815191526001600160a01b0316601160008154811061382157613821614361565b60009182526020909120600390910201546001600160a01b031614158061388a5750601160018451613853919061453d565b8154811061386357613863614361565b6000918252602090912060016003909202010154600e546001600160a01b03908116911614155b156138cc5760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718103937baba329032b93937b960711b60448201526064016108e6565b600f546001600160a01b0316600080516020614b11833981519152146139c357600080516020614b118339815191526001600160a01b0316601260008154811061391857613918614361565b60009182526020909120600390910201546001600160a01b0316141580613981575060126001835161394a919061453d565b8154811061395a5761395a614361565b6000918252602090912060016003909202010154600f546001600160a01b03908116911614155b156139c35760405162461bcd60e51b81526020600482015260126024820152713a37b5b2b718903937baba329032b93937b960711b60448201526064016108e6565b62278d00600855690a968163f0a57b400000600a55633b9aca0060135564174876e80060145560065460405163095ea7b360e01b81526001600160a01b03868116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015613a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a619190614550565b50600e54613a8f906001600160a01b031673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e436000196121f4565b600f54613abc906001600160a01b031673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e436000196121f4565b60405163095ea7b360e01b815273cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4360048201526000196024820152600080516020614b118339815191529063095ea7b3906044016020604051808303816000875af1158015613b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b479190614550565b50600660009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015613b9b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bc3919081019061495b565b604051602001613bd391906149ef565b604051602081830303815290604052601690816133079190614a34565b613bf861237d565b6001600160a01b0316336001600160a01b031614806124b457506003546001600160a01b03163314610f8c57600080fd5b6003546001600160a01b031633148061271257506126fd61237d565b6000613c9a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166123419092919063ffffffff16565b80519091501561233c5780806020019051810190613cb89190614550565b61233c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016108e6565b606082471015613d785760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016108e6565b600080866001600160a01b03168587604051613d949190614af4565b60006040518083038185875af1925050503d8060008114613dd1576040519150601f19603f3d011682016040523d82523d6000602084013e613dd6565b606091505b5091509150613de787838387613e0c565b979650505050505050565b6000818310613e015781613e03565b825b90505b92915050565b60608315613e7b578251600003613e74576001600160a01b0385163b613e745760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108e6565b5081612350565b6123508383815115613e905781518083602001fd5b8060405162461bcd60e51b81526004016108e69190613f65565b5080546000825560030290600052602060002090810190611ca891905b80821115613f045780546001600160a01b031990811682556001820180546001600160a81b03191690556002820180549091169055600301613ec7565b5090565b6001600160a01b0381168114611ca857600080fd5b600060208284031215613f2f57600080fd5b8135613f3a81613f08565b9392505050565b60005b83811015613f5c578181015183820152602001613f44565b50506000910152565b6020815260008251806020840152613f84816040850160208701613f41565b601f01601f19169190910160400192915050565b8015158114611ca857600080fd5b600060208284031215613fb857600080fd5b8135613f3a81613f98565b6020808252825182820181905260009190848201906040850190845b818110156140045783516001600160a01b031683529284019291840191600101613fdf565b50909695505050505050565b60006020828403121561402257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561406257614062614029565b60405290565b604051610120810167ffffffffffffffff8111828210171561406257614062614029565b604051601f8201601f1916810167ffffffffffffffff811182821017156140b5576140b5614029565b604052919050565b600067ffffffffffffffff8211156140d7576140d7614029565b5060051b60200190565b600082601f8301126140f257600080fd5b81356020614107614102836140bd565b61408c565b82815260079290921b8401810191818101908684111561412657600080fd5b8286015b8481101561419d57608081890312156141435760008081fd5b61414b61403f565b813561415681613f08565b81528185013561416581613f08565b8186015260408281013561417881613f98565b9082015260608281013561418b81613f08565b9082015283529183019160800161412a565b509695505050505050565b600080600080600080600060e0888a0312156141c357600080fd5b87356141ce81613f08565b965060208801356141de81613f08565b955060408801356141ee81613f08565b945060608801356141fe81613f08565b9350608088013561420e81613f08565b925060a088013567ffffffffffffffff8082111561422b57600080fd5b6142378b838c016140e1565b935060c08a013591508082111561424d57600080fd5b5061425a8a828b016140e1565b91505092959891949750929550565b6000806040838503121561427c57600080fd5b823567ffffffffffffffff8082111561429457600080fd5b6142a0868387016140e1565b935060208501359150808211156142b657600080fd5b506142c3858286016140e1565b9150509250929050565b600080602083850312156142e057600080fd5b823567ffffffffffffffff808211156142f857600080fd5b818501915085601f83011261430c57600080fd5b81358181111561431b57600080fd5b86602082850101111561432d57600080fd5b60209290920196919550909350505050565b6000806040838503121561435257600080fd5b50508035926020909101359150565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161439f5761439f614377565b5060010190565b6000602082840312156143b857600080fd5b5051919050565b600181811c908216806143d357607f821691505b602082108103610dc657634e487b7160e01b600052602260045260246000fd5b6000610120828403121561440657600080fd5b61440e614068565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b600081518084526020808501945080840160005b838110156144ce57815180516001600160a01b039081168952848201518116858a01526040808301511515908a0152606091820151169088015260809096019590820190600101614482565b509495945050505050565b6001600160a01b0388811682528781166020830152868116604083015285811660608301528416608082015260e060a0820181905260009061451d9083018561446e565b82810360c084015261452f818561446e565b9a9950505050505050505050565b81810381811115613e0657613e06614377565b60006020828403121561456257600080fd5b8151613f3a81613f98565b601f82111561233c57600081815260208120601f850160051c810160208610156145945750805b601f850160051c820191505b8181101561289f578281556001016145a0565b67ffffffffffffffff8311156145cb576145cb614029565b6145df836145d983546143bf565b8361456d565b6000601f84116001811461461357600085156145fb5750838201355b600019600387901b1c1916600186901b178355613307565b600083815260209020601f19861690835b828110156146445786850135825560209485019460019092019101614624565b50868210156146615760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b8082028115828204841417613e0657613e06614377565b6000826146d657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156146ed57600080fd5b8151613f3a81613f08565b80820180821115613e0657613e06614377565b600060a0808301888452602088818601526040838187015282895480855260c0880191508a60005283600020945060005b8181101561478a5785546001600160a01b03908116845260018781015480831688870152891c60ff16151586860152600288015490911660608501526003909601956080909301920161473c565b50506001600160a01b038916606088015294506147a79350505050565b8260808301529695505050505050565b600060208083850312156147ca57600080fd5b825167ffffffffffffffff8111156147e157600080fd5b8301601f810185136147f257600080fd5b8051614800614102826140bd565b81815260059190911b8201830190838101908783111561481f57600080fd5b928401925b82841015613de757835182529284019290840190614824565b60008060006060848603121561485257600080fd5b8351925060208401519150604084015190509250925092565b600181815b808511156148a657816000190482111561488c5761488c614377565b8085161561489957918102915b93841c9390800290614870565b509250929050565b6000826148bd57506001613e06565b816148ca57506000613e06565b81600181146148e057600281146148ea57614906565b6001915050613e06565b60ff8411156148fb576148fb614377565b50506001821b613e06565b5060208310610133831016604e8410600b8410161715614929575081810a613e06565b614933838361486b565b806000190482111561494757614947614377565b029392505050565b6000613e0383836148ae565b60006020828403121561496d57600080fd5b815167ffffffffffffffff8082111561498557600080fd5b818401915084601f83011261499957600080fd5b8151818111156149ab576149ab614029565b6149be601f8201601f191660200161408c565b91508082528560208285010111156149d557600080fd5b6149e6816020840160208601613f41565b50949350505050565b7f53747261746567794165726f64726f6d65466163746f72792d00000000000000815260008251614a27816019850160208701613f41565b9190910160190192915050565b815167ffffffffffffffff811115614a4e57614a4e614029565b614a6281614a5c84546143bf565b8461456d565b602080601f831160018114614a975760008415614a7f5750858301515b600019600386901b1c1916600185901b17855561289f565b600085815260208120601f198616915b82811015614ac657888601518255948401946001909101908401614aa7565b5085821015614ae45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251614b06818460208701613f41565b919091019291505056fe000000000000000000000000940181a94a35a4569e4529a3cdfb74e38fd98631a264697066735822122049460a5128522ed000d9b7ac1ba800481650aaa1baea2a2a0ba33c650f5ce95464736f6c63430008110033000000000000000000000000940181a94a35a4569e4529a3cdfb74e38fd98631000000000000000000000000c52229c6d30b1b2317f2838f7e0d9c65efedc9af0000000000000000000000009a202c932453fb3d04003979b121e80e5a14ee7b000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000940181a94a35a4569e4529a3cdfb74e38fd98631000000000000000000000000d9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000420dd381b31aef6683db6b902084cb0ffece40da