0 txs
1k calls
constructor
constructor()
functions
aeroRouter
viewfunction aeroRouter() view returns (address)
controller
viewfunction controller() view returns (address)
depositArbCheck
purefunction depositArbCheck() pure returns (bool)
feeDenominator
viewfunction feeDenominator() view returns (uint256)
governance
viewfunction governance() view returns (address)
harvestMSIG
viewfunction harvestMSIG() view returns (address)
investedUnderlyingBalance
viewfunction investedUnderlyingBalance() view returns (uint256)
isRewardToken
viewfunction isRewardToken(address _token) view returns (bool)
nextImplementation
viewfunction nextImplementation() view returns (address)
nextImplementationDelay
viewfunction nextImplementationDelay() view returns (uint256)
nextImplementationTimestamp
viewfunction nextImplementationTimestamp() view returns (uint256)
pausedInvesting
viewfunction pausedInvesting() view returns (bool)
platformFeeNumerator
viewfunction platformFeeNumerator() view returns (uint256)
profitSharingNumerator
viewfunction profitSharingNumerator() view returns (uint256)
rewardPool
viewfunction rewardPool() view returns (address)
rewardToken
viewfunction rewardToken() view returns (address)
rewardTokens
viewfunction rewardTokens() view returns (address[])
rewardTokens
viewfunction rewardTokens(uint256) view returns (address)
sell
viewfunction sell() view returns (bool)
sellFloor
viewfunction sellFloor() view returns (uint256)
shouldUpgrade
viewfunction shouldUpgrade() view returns (bool, address)
strategist
viewfunction strategist() view returns (address)
strategistFeeNumerator
viewfunction strategistFeeNumerator() view returns (uint256)
underlying
viewfunction underlying() view returns (address)
universalLiquidator
viewfunction universalLiquidator() view returns (address)
unsalvagableTokens
viewfunction unsalvagableTokens(address token) view returns (bool)
vault
viewfunction vault() view returns (address)
addRewardToken
nonpayablefunction addRewardToken(address _token)
continueInvesting
nonpayablefunction continueInvesting()
doHardWork
nonpayablefunction doHardWork()
emergencyExit
nonpayablefunction emergencyExit()
finalizeUpgrade
nonpayablefunction finalizeUpgrade()
initialize
nonpayablefunction initialize()
initialize
nonpayablefunction initialize(address _storage, address _underlying, address _vault, address _rewardPool, address _rewardToken, address _strategist)
initialize
nonpayablefunction initialize(address _storage)
initializeBaseStrategy
nonpayablefunction initializeBaseStrategy(address _storage, address _underlying, address _vault, address _gauge, address _rewardToken)
initializeStrategy
nonpayablefunction initializeStrategy(address _storage, address _vault)
salvage
nonpayablefunction salvage(address recipient, address token, uint256 amount)
scheduleUpgrade
nonpayablefunction scheduleUpgrade(address impl)
setGauge
nonpayablefunction setGauge(address _newGauge)
setSell
nonpayablefunction setSell(bool s)
setStorage
nonpayablefunction setStorage(address _store)
toggleMerklOperator
nonpayablefunction toggleMerklOperator(address merklClaim, address operator)
withdrawAllToVault
nonpayablefunction withdrawAllToVault()
withdrawToVault
nonpayablefunction withdrawToVault(uint256 _amount)
events
PlatformFeeLogInReward
event PlatformFeeLogInReward(address indexed treasury, address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitAndBuybackLog
event ProfitAndBuybackLog(address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitAndBuybackLog
event ProfitAndBuybackLog(uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitLogInReward
event ProfitLogInReward(address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitLogInReward
event ProfitLogInReward(uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
ProfitsNotCollected
event ProfitsNotCollected(address indexed rewardToken, bool sell, bool floor)
ProfitsNotCollected
event ProfitsNotCollected(bool sell, bool floor)
StrategistFeeLogInReward
event StrategistFeeLogInReward(address indexed strategist, address indexed rewardToken, uint256 profitAmount, uint256 feeAmount, uint256 timestamp)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50613c25806100206000396000f3fe608060405234801561001057600080fd5b506004361061020f5760003560e01c806303140ff41461021457806306974e8d1461022e57806309ff18f0146102525780630c80447a1461025a5780631113ef5214610282578063180b0d7e146102b85780631909c2a8146102c05780631c03e6cc146102c85780631fe4a686146102ee57806320d1ceaf146102f657806345710074146102fe57806345d01e4a1461031a5780634d352ab2146103225780634fa5d85414610350578063501859461461035857806355a68ed31461037e5780635641ec03146103a45780635aa6e675146103ac57806366666aa9146103b45780636f307dc3146103bc5780637bb7bed1146103c45780638129fc1c146103e157806382de9c1b146103e95780639137c1a7146103f15780639a138d6d146104175780639a508c8e146104455780639d16acfd1461044d578063a1dab23e14610478578063a836569314610480578063b076a53a14610488578063b5fd73f8146104a7578063b60f151a146104cd578063bfd131f1146104d5578063c2a2a07b146104dd578063c2b18aa0146104e5578063c4d66de81461053d578063cc2a9a5b14610563578063ce8c42e8146105b1578063d3df8aa4146105ce578063db620485146105d6578063e5e78325146105de578063ec09560614610626578063f77c47911461062e578063f7c618c114610636578063fbfa77cf1461063e575b600080fd5b61021c610646565b60408051918252519081900360200190f35b6102366106ba565b604080516001600160a01b039092168252519081900360200190f35b6102366106fc565b6102806004803603602081101561027057600080fd5b50356001600160a01b031661071a565b005b6102806004803603606081101561029857600080fd5b506001600160a01b03813581169160208101359091169060400135610802565b61021c6109a2565b6102366109e4565b610280600480360360208110156102de57600080fd5b50356001600160a01b03166109fc565b610236610b0f565b61021c610b28565b610306610b6a565b604080519115158252519081900360200190f35b61021c610b83565b6102806004803603604081101561033857600080fd5b506001600160a01b0381358116916020013516610cb5565b610280610dcc565b6103066004803603602081101561036e57600080fd5b50356001600160a01b0316610ec7565b6102806004803603602081101561039457600080fd5b50356001600160a01b0316610f0e565b6102806110d1565b6102366111a5565b6102366111e7565b610236611200565b610236600480360360208110156103da57600080fd5b5035611219565b610280611240565b61021c61130c565b6102806004803603602081101561040757600080fd5b50356001600160a01b0316611325565b6102806004803603604081101561042d57600080fd5b506001600160a01b038135811691602001351661144b565b61028061157a565b610455611644565b6040805192151583526001600160a01b0390911660208301528051918290030190f35b61021c611690565b61021c6116a9565b6102806004803603602081101561049e57600080fd5b503515156116eb565b610306600480360360208110156104bd57600080fd5b50356001600160a01b03166117b6565b61021c6117c9565b61028061180b565b61030661195d565b6104ed611962565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610529578181015183820152602001610511565b505050509050019250505060405180910390f35b6102806004803603602081101561055357600080fd5b50356001600160a01b031661198d565b610280600480360360c081101561057957600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608082013581169160a0013516611a38565b610280600480360360208110156105c757600080fd5b5035611b34565b610306611cad565b610280611cc6565b610280600480360360a08110156105f457600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013582169160809091013516611d92565b610236611f31565b610236611f49565b610236611f8b565b610236611fa4565b6000610650611f49565b6001600160a01b03166303140ff46040518163ffffffff1660e01b815260040160206040518083038186803b15801561068857600080fd5b505afa15801561069c573d6000803e3d6000fd5b505050506040513d60208110156106b257600080fd5b505190505b90565b60006106c4611f49565b6001600160a01b03166306974e8d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068857600080fd5b600061071560008051602061394e833981519152611fb9565b905090565b610722611fbd565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561076e57600080fd5b505afa158015610782573d6000803e3d6000fd5b505050506040513d602081101561079857600080fd5b50516107dc576040805162461bcd60e51b815260206004820152600e60248201526d4e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6107e581611fd0565b6107ff6107fa6107f36116a9565b4290611fe8565b612047565b50565b61080a611fbd565b6001600160a01b031663b429afeb336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561085657600080fd5b505afa15801561086a573d6000803e3d6000fd5b505050506040513d602081101561088057600080fd5b5051806109095750610890611fbd565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156108dc57600080fd5b505afa1580156108f0573d6000803e3d6000fd5b505050506040513d602081101561090657600080fd5b50515b6109445760405162461bcd60e51b815260040180806020018281038252602b8152602001806138a1602b913960400191505060405180910390fd5b61094d82610ec7565b156109895760405162461bcd60e51b815260040180806020018281038252602281526020018061392c6022913960400191505060405180910390fd5b61099d6001600160a01b038316848361205f565b505050565b60006109ac611f49565b6001600160a01b031663180b0d7e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068857600080fd5b73cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4381565b610a04611fbd565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610a5057600080fd5b505afa158015610a64573d6000803e3d6000fd5b505050506040513d6020811015610a7a57600080fd5b5051610abe576040805162461bcd60e51b815260206004820152600e60248201526d4e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0392909216919091179055565b600061071560008051602061396e833981519152611fb9565b6000610b32611f49565b6001600160a01b03166320d1ceaf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068857600080fd5b60006107156000805160206138ec8339815191526120b1565b600080610b8e6111e7565b6001600160a01b03161415610c2457610ba5611200565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610bf157600080fd5b505afa158015610c05573d6000803e3d6000fd5b505050506040513d6020811015610c1b57600080fd5b505190506106b7565b610715610c2f611200565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610c7b57600080fd5b505afa158015610c8f573d6000803e3d6000fd5b505050506040513d6020811015610ca557600080fd5b5051610caf6120c5565b90611fe8565b600054610100900460ff1680610cce5750610cce6120ec565b80610cdc575060005460ff16155b610d175760405162461bcd60e51b815260040180806020018281038252602e815260200180613a8d602e913960400191505060405180910390fd5b600054610100900460ff16158015610d42576000805460ff1961ff0019909116610100171660011790555b7326029ed89a19b919b5698f10cf776a4f4aea152973f2c38de50a250c0060fb45ebe4504b67f6f1be3c73940181a94a35a4569e4529a3cdfb74e38fd98631610d8e8684878585611d92565b60408051602081019091526001600160a01b0382168152610db2906001908161381c565b50505050801561099d576000805461ff0019169055505050565b610dd4611cad565b15610e105760405162461bcd60e51b8152600401808060200182810382526034815260200180613b9c6034913960400191505060405180910390fd5b610e18611fa4565b6001600160a01b0316336001600160a01b03161480610e4f5750610e3a611f49565b6001600160a01b0316336001600160a01b0316145b80610e725750610e5d6111a5565b6001600160a01b0316336001600160a01b0316145b610ead5760405162461bcd60e51b815260040180806020018281038252603981526020018061398e6039913960400191505060405180910390fd5b610eb56120fd565b610ebd6121f3565b610ec56129fb565b565b6000610ed1611f8b565b6001600160a01b0316826001600160a01b03161480610f085750610ef3611200565b6001600160a01b0316826001600160a01b0316145b92915050565b610f16611fbd565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610f6257600080fd5b505afa158015610f76573d6000803e3d6000fd5b505050506040513d6020811015610f8c57600080fd5b5051610fd0576040805162461bcd60e51b815260206004820152600e60248201526d4e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b610fe0610fdb6120c5565b612acf565b610fe86120fd565b610ff06121f3565b6000816001600160a01b03166372f702f36040518163ffffffff1660e01b815260040160206040518083038186803b15801561102b57600080fd5b505afa15801561103f573d6000803e3d6000fd5b505050506040513d602081101561105557600080fd5b50519050611061611200565b6001600160a01b0316816001600160a01b0316146110bc576040805162461bcd60e51b81526020600482015260136024820152720aadcc8cae4d8f2d2dcce40dad2e6dac2e8c6d606b1b604482015290519081900360640190fd5b6110c582612b3d565b6110cd6129fb565b5050565b6110d9611fbd565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561112557600080fd5b505afa158015611139573d6000803e3d6000fd5b505050506040513d602081101561114f57600080fd5b5051611193576040805162461bcd60e51b815260206004820152600e60248201526d4e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b61119b612b55565b610ec56001612b70565b60006111af611fbd565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b15801561068857600080fd5b60006107156000805160206139c7833981519152611fb9565b6000610715600080516020613b1c833981519152611fb9565b6001818154811061122657fe5b6000918252602090912001546001600160a01b0316905081565b600054610100900460ff168061125957506112596120ec565b80611267575060005460ff16155b6112a25760405162461bcd60e51b815260040180806020018281038252602e815260200180613a8d602e913960400191505060405180910390fd5b600054610100900460ff161580156112cd576000805460ff1961ff0019909116610100171660011790555b6112f87f62ae7bf2df4e95c187ea09c8c47c3fc3d9abc36298f5b5b6c5e2e7b4b291fe256001612b88565b80156107ff576000805461ff001916905550565b6000610715600080516020613abb833981519152611fb9565b61132d611fbd565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561137957600080fd5b505afa15801561138d573d6000803e3d6000fd5b505050506040513d60208110156113a357600080fd5b50516113e7576040805162461bcd60e51b815260206004820152600e60248201526d4e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6001600160a01b038116611442576040805162461bcd60e51b815260206004820152601e60248201527f6e65772073746f726167652073686f756c646e277420626520656d7074790000604482015290519081900360640190fd5b6107ff81612b8c565b611453611fbd565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561149f57600080fd5b505afa1580156114b3573d6000803e3d6000fd5b505050506040513d60208110156114c957600080fd5b505161150d576040805162461bcd60e51b815260206004820152600e60248201526d4e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6040805163bdac7ca360e01b81523060048201526001600160a01b03838116602483015291519184169163bdac7ca39160448082019260009290919082900301818387803b15801561155e57600080fd5b505af1158015611572573d6000803e3d6000fd5b505050505050565b611582611fbd565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115ce57600080fd5b505afa1580156115e2573d6000803e3d6000fd5b505050506040513d60208110156115f857600080fd5b505161163c576040805162461bcd60e51b815260206004820152600e60248201526d4e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b610ec5612b9e565b60008061164f61130c565b15801590611663575061166061130c565b42115b8015611680575060006116746106fc565b6001600160a01b031614155b6116886106fc565b915091509091565b6000610715600080516020613a6d833981519152611fb9565b60006116b3611f49565b6001600160a01b031663a83656936040518163ffffffff1660e01b815260040160206040518083038186803b15801561068857600080fd5b6116f3611fbd565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561173f57600080fd5b505afa158015611753573d6000803e3d6000fd5b505050506040513d602081101561176957600080fd5b50516117ad576040805162461bcd60e51b815260206004820152600e60248201526d4e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b6107ff81612bb2565b6000610f08826117c4611962565b612bca565b60006117d3611f49565b6001600160a01b031663b60f151a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561068857600080fd5b611813611fa4565b6001600160a01b0316336001600160a01b0316148061184a5750611835611f49565b6001600160a01b0316336001600160a01b0316145b8061186d57506118586111a5565b6001600160a01b0316336001600160a01b0316145b6118a85760405162461bcd60e51b815260040180806020018281038252603981526020018061398e6039913960400191505060405180910390fd5b6118b3610fdb6120c5565b6118bb6120fd565b6118c36121f3565b60006118cd611200565b90506107ff6118da611fa4565b604080516370a0823160e01b815230600482015290516001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561192057600080fd5b505afa158015611934573d6000803e3d6000fd5b505050506040513d602081101561194a57600080fd5b50516001600160a01b038416919061205f565b600190565b60606107157f45418d9b5c2787ae64acbffccad43f2b487c1a16e24385aa9d2b059f9d1d163c612c20565b600054610100900460ff16806119a657506119a66120ec565b806119b4575060005460ff16155b6119ef5760405162461bcd60e51b815260040180806020018281038252602e815260200180613a8d602e913960400191505060405180910390fd5b600054610100900460ff16158015611a1a576000805460ff1961ff0019909116610100171660011790555b611a2382612cb9565b80156110cd576000805461ff00191690555050565b600054610100900460ff1680611a515750611a516120ec565b80611a5f575060005460ff16155b611a9a5760405162461bcd60e51b815260040180806020018281038252602e815260200180613a8d602e913960400191505060405180910390fd5b600054610100900460ff16158015611ac5576000805460ff1961ff0019909116610100171660011790555b611ace8761198d565b611ad786612d57565b611ae085612d6f565b611ae984612b3d565b611af283612d87565b611afb82612d9f565b611b056001612bb2565b611b0f6000612db7565b611b196000612b70565b8015611b2b576000805461ff00191690555b50505050505050565b611b3c611fa4565b6001600160a01b0316336001600160a01b03161480611b735750611b5e611f49565b6001600160a01b0316336001600160a01b0316145b80611b965750611b816111a5565b6001600160a01b0316336001600160a01b0316145b611bd15760405162461bcd60e51b815260040180806020018281038252603981526020018061398e6039913960400191505060405180910390fd5b6000611bdb611200565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611c2c57600080fd5b505afa158015611c40573d6000803e3d6000fd5b505050506040513d6020811015611c5657600080fd5b5051905080831115611c91576000611c6e8483612dcf565b90506000611c83611c7d6120c5565b83612e2c565b9050611c8e81612acf565b50505b61099d611c9c611fa4565b6001600160a01b038416908561205f565b6000610715600080516020613afc8339815191526120b1565b611cce611fbd565b6001600160a01b031663dee1f0e4336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611d1a57600080fd5b505afa158015611d2e573d6000803e3d6000fd5b505050506040513d6020811015611d4457600080fd5b5051611d88576040805162461bcd60e51b815260206004820152600e60248201526d4e6f7420676f7665726e616e636560901b604482015290519081900360640190fd5b610ec56000612b70565b600054610100900460ff1680611dab5750611dab6120ec565b80611db9575060005460ff16155b611df45760405162461bcd60e51b815260040180806020018281038252602e815260200180613a8d602e913960400191505060405180910390fd5b600054610100900460ff16158015611e1f576000805460ff1961ff0019909116610100171660011790555b611e4186868686867397b3e5712cde7db13e939a188c8ca90db5b05131611a38565b6001600160a01b03831615611f18576000611e5a6111e7565b6001600160a01b03166372f702f36040518163ffffffff1660e01b815260040160206040518083038186803b158015611e9257600080fd5b505afa158015611ea6573d6000803e3d6000fd5b505050506040513d6020811015611ebc57600080fd5b505190506001600160a01b0380821690871614611f16576040805162461bcd60e51b81526020600482015260136024820152720aadcc8cae4d8f2d2dcce40dad2e6dac2e8c6d606b1b604482015290519081900360640190fd5b505b8015611572576000805461ff0019169055505050505050565b7397b3e5712cde7db13e939a188c8ca90db5b0513181565b6000611f53611fbd565b6001600160a01b031663f77c47916040518163ffffffff1660e01b815260040160206040518083038186803b15801561068857600080fd5b6000610715600080516020613a4d833981519152611fb9565b6000610715600080516020613a0d8339815191525b5490565b60008051602061390c8339815191525490565b6107ff60008051602061394e83398151915282612b88565b600082820183811015612040576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b6107ff600080516020613abb83398151915282612b88565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261099d908490612e42565b60006120bc82611fb9565b60011492915050565b6000806120d06111e7565b6001600160a01b0316146120e657610ba56111e7565b50600090565b60006120f730612ef3565b15905090565b612105611200565b6001600160a01b031663d294f0936040518163ffffffff1660e01b81526004016040805180830381600087803b15801561213e57600080fd5b505af1158015612152573d6000803e3d6000fd5b505050506040513d604081101561216857600080fd5b50600090506121756111e7565b6001600160a01b031614610ec55761218b6111e7565b6001600160a01b031663c00007b0306040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156121d957600080fd5b505af11580156121ed573d6000803e3d6000fd5b50505050565b6121fb610b6a565b612246577f408a4b113351e616bb41bad991f29bbad84b43c3810e7492a6bc7c6388dfe0c2612228610b6a565b604080519115158252600060208301528051918290030190a1610ec5565b6000612250611f8b565b9050600061225c6106ba565b905060005b6001548110156123e95760006001828154811061227a57fe5b6000918252602080832090910154604080516370a0823160e01b815230600482015290516001600160a01b03909216945084926370a0823192602480840193829003018186803b1580156122cd57600080fd5b505afa1580156122e1573d6000803e3d6000fd5b505050506040513d60208110156122f757600080fd5b50519050806123075750506123e1565b846001600160a01b0316826001600160a01b0316146123de576123356001600160a01b038316856000612ef9565b6123496001600160a01b0383168583612ef9565b6040805163d5bcb9b560e01b81526001600160a01b0384811660048301528781166024830152604482018490526001606483015230608483015291519186169163d5bcb9b59160a4808201926020929091908290030181600087803b1580156123b157600080fd5b505af11580156123c5573d6000803e3d6000fd5b505050506040513d60208110156123db57600080fd5b50505b50505b600101612261565b506000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561243957600080fd5b505afa15801561244d573d6000803e3d6000fd5b505050506040513d602081101561246357600080fd5b50519050655af3107a400081101561247d57505050610ec5565b612487838261300c565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156124d657600080fd5b505afa1580156124ea573d6000803e3d6000fd5b505050506040513d602081101561250057600080fd5b50519050600061250e611200565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561254b57600080fd5b505afa15801561255f573d6000803e3d6000fd5b505050506040513d602081101561257557600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b1580156125bd57600080fd5b505afa1580156125d1573d6000803e3d6000fd5b505050506040513d60208110156125e757600080fd5b5051905060006125f8856002613400565b905060006126068683612dcf565b905061261d6001600160a01b038a16896000612ef9565b6126316001600160a01b038a168988612ef9565b6000896001600160a01b0316856001600160a01b031614612759576040805163d5bcb9b560e01b81526001600160a01b038c81166004830152878116602483015260448201869052600160648301523060848301529151918b169163d5bcb9b59160a4808201926020929091908290030181600087803b1580156126b457600080fd5b505af11580156126c8573d6000803e3d6000fd5b505050506040513d60208110156126de57600080fd5b5050604080516370a0823160e01b815230600482015290516001600160a01b038716916370a08231916024808301926020929190829003018186803b15801561272657600080fd5b505afa15801561273a573d6000803e3d6000fd5b505050506040513d602081101561275057600080fd5b5051905061275c565b50815b60008a6001600160a01b0316856001600160a01b031614612884576040805163d5bcb9b560e01b81526001600160a01b038d81166004830152878116602483015260448201869052600160648301523060848301529151918c169163d5bcb9b59160a4808201926020929091908290030181600087803b1580156127df57600080fd5b505af11580156127f3573d6000803e3d6000fd5b505050506040513d602081101561280957600080fd5b5050604080516370a0823160e01b815230600482015290516001600160a01b038716916370a08231916024808301926020929190829003018186803b15801561285157600080fd5b505afa158015612865573d6000803e3d6000fd5b505050506040513d602081101561287b57600080fd5b50519050612887565b50815b6128b06001600160a01b03871673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e436000612ef9565b6128d86001600160a01b03871673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4384612ef9565b6129016001600160a01b03861673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e436000612ef9565b6129296001600160a01b03861673cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4383612ef9565b60408051635a47ddc360e01b81526001600160a01b038881166004830152871660248201526000604482018190526064820185905260848201849052600160a4830181905260c48301523060e483015242610104830152915173cf77a3ba9a5ca399b7c97c74d54e5b1beb874e4392635a47ddc39261012480820193606093909283900390910190829087803b1580156129c257600080fd5b505af11580156129d6573d6000803e3d6000fd5b505050506040513d60608110156129ec57600080fd5b50505050505050505050505050565b612a03611cad565b15612a3f5760405162461bcd60e51b8152600401808060200182810382526034815260200180613b9c6034913960400191505060405180910390fd5b6000612a49611200565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612a9557600080fd5b505afa158015612aa9573d6000803e3d6000fd5b505050506040513d6020811015612abf57600080fd5b50511115610ec557610ec5613464565b80156107ff57612add6111e7565b6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612b2257600080fd5b505af1158015612b36573d6000803e3d6000fd5b5050505050565b6107ff6000805160206139c783398151915282612b88565b6000612b5f6120c5565b905080156107ff576107ff81612acf565b6107ff600080516020613afc83398151915282613591565b9055565b60008051602061390c83398151915255565b612ba86000611fd0565b610ec56000612047565b6107ff6000805160206138ec83398151915282613591565b6000805b8251811015612c1657836001600160a01b0316838281518110612bed57fe5b60200260200101516001600160a01b03161415612c0e576001915050610f08565b600101612bce565b5060009392505050565b6060612c2b82611fb9565b6001600160401b0381118015612c4057600080fd5b50604051908082528060200260200182016040528015612c6a578160200160208202803683370190505b50905060005b8151811015612cb357612c87838201600101611fb9565b828281518110612c9357fe5b6001600160a01b0390921660209283029190910190910152600101612c70565b50919050565b600054610100900460ff1680612cd25750612cd26120ec565b80612ce0575060005460ff16155b612d1b5760405162461bcd60e51b815260040180806020018281038252602e815260200180613a8d602e913960400191505060405180910390fd5b600054610100900460ff16158015612d46576000805460ff1961ff0019909116610100171660011790555b612d4f82612b8c565b611a23611240565b6107ff600080516020613b1c83398151915282612b88565b6107ff600080516020613a0d83398151915282612b88565b6107ff600080516020613a4d83398151915282612b88565b6107ff60008051602061396e83398151915282612b88565b6107ff600080516020613a6d83398151915282612b88565b600082821115612e26576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000818310612e3b5781612040565b5090919050565b6060612e97826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166135ac9092919063ffffffff16565b80519091501561099d57808060200190516020811015612eb657600080fd5b505161099d5760405162461bcd60e51b815260040180806020018281038252602a815260200180613b3c602a913960400191505060405180910390fd5b3b151590565b801580612f7f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015612f5157600080fd5b505afa158015612f65573d6000803e3d6000fd5b505050506040513d6020811015612f7b57600080fd5b5051155b612fba5760405162461bcd60e51b8152600401808060200182810382526036815260200180613b666036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261099d908490612e42565b600a8111156132c857600061301f6109a2565b9050600061303f82613039613032610646565b86906135c3565b90613400565b9050600061305983613039613052610b28565b87906135c3565b905060006130738461303961306c6117c9565b88906135c3565b9050600061307f610b0f565b9050600061308b611f49565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b1580156130c357600080fd5b505afa1580156130d7573d6000803e3d6000fd5b505050506040513d60208110156130ed57600080fd5b50516040805189815260208101869052428183015290519192506001600160a01b038a16916000805160206138cc8339815191529181900360600190a26040805188815260208101869052428183015290516001600160a01b03808b169290841691600080516020613bd08339815191529181900360600190a36040805188815260208101879052428183015290516001600160a01b03808b169290851691600080516020613a2d8339815191529181900360600190a360006131ae611f49565b6001600160a01b031663a98e929c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156131e657600080fd5b505afa1580156131fa573d6000803e3d6000fd5b505050506040513d602081101561321057600080fd5b505190506132296001600160a01b038a16826000612ef9565b61323d6001600160a01b038a16828a612ef9565b806001600160a01b0316632225436e8a8689896040518563ffffffff1660e01b815260040180856001600160a01b03168152602001848152602001838152602001828152602001945050505050600060405180830381600087803b1580156132a457600080fd5b505af11580156132b8573d6000803e3d6000fd5b50505050505050505050506110cd565b6040805160008082526020820152428183015290516001600160a01b038416916000805160206138cc833981519152919081900360600190a2816001600160a01b0316613313611f49565b6001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b15801561334b57600080fd5b505afa15801561335f573d6000803e3d6000fd5b505050506040513d602081101561337557600080fd5b50516040805160008082526020820152428183015290516001600160a01b0390921691600080516020613bd08339815191529181900360600190a3816001600160a01b03166133c2610b0f565b6040805160008082526020820152428183015290516001600160a01b039290921691600080516020613a2d8339815191529181900360600190a35050565b6000808211613453576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b81838161345c57fe5b049392505050565b600061346e611200565b9050600061347a6111e7565b90506001600160a01b038116613491575050610ec5565b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156134e057600080fd5b505afa1580156134f4573d6000803e3d6000fd5b505050506040513d602081101561350a57600080fd5b505190506135236001600160a01b038416836000612ef9565b6135376001600160a01b0384168383612ef9565b816001600160a01b031663b6b55f25826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561357d57600080fd5b505af1158015611b2b573d6000803e3d6000fd5b6110cd82826135a15760006135a4565b60015b60ff16612b88565b60606135bb848460008561361c565b949350505050565b6000826135d257506000610f08565b828202828482816135df57fe5b04146120405760405162461bcd60e51b8152600401808060200182810382526021815260200180613adb6021913960400191505060405180910390fd5b60608247101561365d5760405162461bcd60e51b81526004018080602001828103825260268152602001806139e76026913960400191505060405180910390fd5b61366685612ef3565b6136b7576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106136f65780518252601f1990920191602091820191016136d7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613758576040519150601f19603f3d011682016040523d82523d6000602084013e61375d565b606091505b509150915061376d828286613778565b979650505050505050565b60608315613787575081612040565b8251156137975782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156137e15781810151838201526020016137c9565b50505050905090810190601f16801561380e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b828054828255906000526020600020908101928215613871579160200282015b8281111561387157825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061383c565b5061387d929150613881565b5090565b5b8082111561387d5780546001600160a01b031916815560010161388256fe5468652063616c6c6572206d75737420626520636f6e74726f6c6c6572206f7220676f7665726e616e63651072be0ffac0739a43e2bbe8b9b7dd277f79e5eed4fc2bac67005b3f09118a7d656de32df98753b07482576beb0d00a6b949ebf84c066c765f54f26725221bb6a7ec62784904ff31cbcc32d09932a58e7f1e4476e1d041995b37c917990b16dc746f6b656e20697320646566696e6564206173206e6f742073616c76616761626c6529f7fcd4fe2517c1963807a1ec27b0e45e67c60a874d5eeac7a0b1ab1bb844476a7b588c950d46e2de3db2f157e5e0e4f29054c8d60f17bf0c30352e223a458d5468652073656e6465722068617320746f2062652074686520636f6e74726f6c6c65722c20676f7665726e616e63652c206f72207661756c743d9bb16e77837e25cada0cf894835418b38e8e18fbec6cfd192eb344bebfa6b8416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6cefd7c7d9ef1040fc87e7ad11fe15f86e1d11e1df03c6d7c87f7e1f4041f08d4111b8e2ade018b082c0f17123af08137fdf13800d50b83fda08b49ba4ca2aa5cddae0aafd977983cb1e78d8f638900ff361dc3c48c43118ca1dd77d1af3f47bbfc403216a7704d160f6a3b5c3b149a1226a6080f0a5dd27b27d9ba9c022fa0afc496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564414c5263b05428f1be1bfa98e25407cc78dd031d0d3cd2a2e3d63b488804f22e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a07a20a2d463a602c2b891eb35f244624d9068572811f63d0e094072fb54591aa1709211eeccf8f4ad5b6700d52a1a9525b5f5ae1e9e5f9e5a0c2fc23c86e5305361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365416374696f6e20626c6f636b65642061732074686520737472617465677920697320696e20656d657267656e6379207374617465a9dc538e563d9581dd26a09bae7f821924cec58d0811f80e8462740f2adab4c7a2646970667358221220b7adaf9e68b62781782d83de471fbd2f33b3fc14a053a148f946bd1521e28cb764736f6c634300060c0033