0 txs
0 calls
constructor
No constructor.
functions
borrowBalanceInOf
viewfunction borrowBalanceInOf(address, address) view returns (uint256 inP2P, uint256 onPool)
cEth
viewfunction cEth() view returns (address)
comptroller
viewfunction comptroller() view returns (address)
CTOKEN_DECIMALS
viewfunction CTOKEN_DECIMALS() view returns (uint8)
defaultMaxGasForMatching
viewfunction defaultMaxGasForMatching() view returns (uint64 supply, uint64 borrow, uint64 withdraw, uint64 repay)
deltas
viewfunction deltas(address) view returns (uint256 p2pSupplyDelta, uint256 p2pBorrowDelta, uint256 p2pSupplyAmount, uint256 p2pBorrowAmount)
dustThreshold
viewfunction dustThreshold() view returns (uint256)
enteredMarkets
viewfunction enteredMarkets(address, uint256) view returns (address)
getAllMarkets
viewfunction getAllMarkets() view returns (address[] marketsCreated_)
getEnteredMarkets
viewfunction getEnteredMarkets(address _user) view returns (address[] enteredMarkets_)
getHead
viewfunction getHead(address _poolTokenAddress, uint8 _positionType) view returns (address head)
getNext
viewfunction getNext(address _poolTokenAddress, uint8 _positionType, address _user) view returns (address next)
incentivesVault
viewfunction incentivesVault() view returns (address)
interestRatesManager
viewfunction interestRatesManager() view returns (address)
isClaimRewardsPaused
viewfunction isClaimRewardsPaused() view returns (bool)
lastBorrowBlock
viewfunction lastBorrowBlock(address) view returns (uint256)
lastPoolIndexes
viewfunction lastPoolIndexes(address) view returns (uint32 lastUpdateBlockNumber, uint112 lastSupplyPoolIndex, uint112 lastBorrowPoolIndex)
marketParameters
viewfunction marketParameters(address) view returns (uint16 reserveFactor, uint16 p2pIndexCursor)
marketsCreated
viewfunction marketsCreated(uint256) view returns (address)
marketStatus
viewfunction marketStatus(address) view returns (bool isCreated, bool isPaused, bool isPartiallyPaused)
MAX_BASIS_POINTS
viewfunction MAX_BASIS_POINTS() view returns (uint16)
maxSortedUsers
viewfunction maxSortedUsers() view returns (uint256)
owner
viewfunction owner() view returns (address)
p2pBorrowIndex
viewfunction p2pBorrowIndex(address) view returns (uint256)
p2pDisabled
viewfunction p2pDisabled(address) view returns (bool)
p2pSupplyIndex
viewfunction p2pSupplyIndex(address) view returns (uint256)
positionsManager
viewfunction positionsManager() view returns (address)
rewardsManager
viewfunction rewardsManager() view returns (address)
supplyBalanceInOf
viewfunction supplyBalanceInOf(address, address) view returns (uint256 inP2P, uint256 onPool)
treasuryVault
viewfunction treasuryVault() view returns (address)
userMembership
viewfunction userMembership(address, address) view returns (bool)
WAD
viewfunction WAD() view returns (uint256)
wEth
viewfunction wEth() view returns (address)
borrowLogic
nonpayablefunction borrowLogic(address _poolTokenAddress, uint256 _amount, uint256 _maxGasForMatching)
liquidateLogic
nonpayablefunction liquidateLogic(address _poolTokenBorrowedAddress, address _poolTokenCollateralAddress, address _borrower, uint256 _amount)
renounceOwnership
nonpayablefunction renounceOwnership()
repayLogic
nonpayablefunction repayLogic(address _poolTokenAddress, address _repayer, address _onBehalf, uint256 _amount, uint256 _maxGasForMatching)
supplyLogic
nonpayablefunction supplyLogic(address _poolTokenAddress, address _supplier, address _onBehalf, uint256 _amount, uint256 _maxGasForMatching)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateP2PIndexes
nonpayablefunction updateP2PIndexes(address _poolTokenAddress)
withdrawLogic
nonpayablefunction withdrawLogic(address _poolTokenAddress, uint256 _amount, address _supplier, address _receiver, uint256 _maxGasForMatching)
events
Borrowed
event Borrowed(address indexed _borrower, address indexed _poolTokenAddress, uint256 _amount, uint256 _balanceOnPool, uint256 _balanceInP2P)
BorrowerPositionUpdated
event BorrowerPositionUpdated(address indexed _user, address indexed _poolTokenAddress, uint256 _balanceOnPool, uint256 _balanceInP2P)
Liquidated
event Liquidated(address _liquidator, address indexed _liquidated, address indexed _poolTokenBorrowedAddress, uint256 _amountRepaid, address indexed _poolTokenCollateralAddress, uint256 _amountSeized)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
P2PAmountsUpdated
event P2PAmountsUpdated(address indexed _poolTokenAddress, uint256 _p2pSupplyAmount, uint256 _p2pBorrowAmount)
P2PBorrowDeltaUpdated
event P2PBorrowDeltaUpdated(address indexed _poolTokenAddress, uint256 _p2pBorrowDelta)
P2PSupplyDeltaUpdated
event P2PSupplyDeltaUpdated(address indexed _poolTokenAddress, uint256 _p2pSupplyDelta)
Repaid
event Repaid(address indexed _repayer, address indexed _onBehalf, address indexed _poolTokenAddress, uint256 _amount, uint256 _balanceOnPool, uint256 _balanceInP2P)
Supplied
event Supplied(address indexed _supplier, address indexed _onBehalf, address indexed _poolTokenAddress, uint256 _amount, uint256 _balanceOnPool, uint256 _balanceInP2P)
SupplierPositionUpdated
event SupplierPositionUpdated(address indexed _user, address indexed _poolTokenAddress, uint256 _balanceOnPool, uint256 _balanceInP2P)
Withdrawn
event Withdrawn(address indexed _supplier, address indexed _receiver, address indexed _poolTokenAddress, uint256 _amount, uint256 _balanceOnPool, uint256 _balanceInP2P)
errors
AccountAlreadyInserted
error AccountAlreadyInserted()
AccountDoesNotExist
error AccountDoesNotExist()
AddressIsZero
error AddressIsZero()
AddressIsZero
error AddressIsZero()
AmountAboveWhatAllowedToRepay
error AmountAboveWhatAllowedToRepay()
AmountIsZero
error AmountIsZero()
BorrowOnCompoundFailed
error BorrowOnCompoundFailed()
CompoundOracleFailed
error CompoundOracleFailed()
LowLevelDelegateCallFailed
error LowLevelDelegateCallFailed()
MarketNotCreated
error MarketNotCreated()
MarketPaused
error MarketPaused()
MintOnCompoundFailed
error MintOnCompoundFailed()
RedeemOnCompoundFailed
error RedeemOnCompoundFailed()
RepayOnCompoundFailed
error RepayOnCompoundFailed()
SameBlockBorrowRepay
error SameBlockBorrowRepay()
UnauthorisedBorrow
error UnauthorisedBorrow()
UnauthorisedLiquidate
error UnauthorisedLiquidate()
UnauthorisedWithdraw
error UnauthorisedWithdraw()
UserNotMemberOfMarket
error UserNotMemberOfMarket()
ValueIsZero
error ValueIsZero()
WithdrawTooSmall
error WithdrawTooSmall()
creation bytecode
0x60806040523480156200001157600080fd5b50600054610100900460ff166200002f5760005460ff161562000039565b62000039620000de565b620000a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff16158015620000c4576000805461ffff19166101011790555b8015620000d7576000805461ff00191690555b506200010b565b6000620000f630620000fc60201b62001c961760201c565b15905090565b6001600160a01b03163b151590565b6157f5806200011b6000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c8063a086fc2211610146578063d59c9eb6116100c3578063e501ed0411610087578063e501ed04146106bc578063e61c6d6f146106ee578063e8462e8f146106f7578063f2f4ca1614610700578063f2fde38b1461076c578063f4ea93d81461077f57600080fd5b8063d59c9eb6146105bf578063db0577fd14610614578063defe205314610683578063df6d921214610696578063e34b5145146106a957600080fd5b8063b24be6871161010a578063b24be68714610559578063b59ec4781461056c578063b6f2bf1c1461058c578063c2af97871461059f578063cb830d03146105b257600080fd5b8063a086fc22146104c3578063a44026a314610518578063ac0b4b121461052b578063af8b1c6f1461053e578063b0772d0b1461055157600080fd5b80637907016a116101d45780638da5cb5b116101985780638da5cb5b146103f5578063947574ac1461040657806396bd512c1461044d5780639df5a1f2146104965780639fab1036146104b057600080fd5b80637907016a1461037c5780637f3ad0561461038f578063854f7ebb146103a257806385d7334d146103c25780638ccb720b146103d557600080fd5b80635fe3b5671161021b5780635fe3b567146103115780636a14602414610324578063715018a614610333578063720ceb021461033b578063789caa3e1461036957600080fd5b806320c342d9146102585780632ebf4be0146102905780633528e4ce146102be57806352f0f814146102d35780635acff027146102fe575b600080fd5b61027b610266366004615369565b60a36020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102b061029e366004615369565b60a56020526000908152604090205481565b604051908152602001610287565b6102d16102cc366004615369565b61079b565b005b60aa546102e6906001600160a01b031681565b6040516001600160a01b039091168152602001610287565b6102e661030c366004615395565b6107e3565b60ae546102e6906001600160a01b031681565b6102b0670de0b6b3a764000081565b6102d16108dc565b61027b6103493660046153ca565b60a060209081526000928352604080842090915290825290205460ff1681565b6102e6610377366004615403565b610947565b6102d161038a36600461544c565b610a45565b60ad546102e6906001600160a01b031681565b6102b06103b0366004615369565b60a46020526000908152604090205481565b6102d16103d036600461549d565b610e88565b6103e86103e3366004615369565b6113ae565b60405161028791906154f8565b6033546001600160a01b03166102e6565b6104386104143660046153ca565b609f6020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610287565b61047b61045b366004615369565b60a76020526000908152604090205461ffff808216916201000090041682565b6040805161ffff938416815292909116602083015201610287565b61049e600881565b60405160ff9091168152602001610287565b6102d16104be366004615545565b611424565b6104f86104d1366004615369565b60a96020526000908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610287565b60b0546102e6906001600160a01b031681565b6102e661053936600461557a565b6119ac565b60af546102e6906001600160a01b031681565b6103e86119d6565b60ab546102e6906001600160a01b031681565b6102b061057a366004615369565b60b26020526000908152604090205481565b6102d161059a366004615593565b611a38565b6102d16105ad36600461549d565b611aff565b60b35461027b9060ff1681565b6105f56105cd366004615369565b60a86020526000908152604090205460ff808216916101008104821691620100009091041683565b6040805193151584529115156020840152151590820152606001610287565b610657610622366004615369565b60a66020526000908152604090205463ffffffff8116906001600160701b036401000000008204811691600160901b90041683565b6040805163ffffffff90941684526001600160701b039283166020850152911690820152606001610287565b60ac546102e6906001600160a01b031681565b60b1546102e6906001600160a01b031681565b6102e66106b73660046155ee565b611b93565b6104386106ca3660046153ca565b609e6020908152600092835260408084209091529082529020805460019091015482565b6102b060975481565b6102b060985481565b6099546107389067ffffffffffffffff80821691680100000000000000008104821691600160801b8204811691600160c01b90041684565b6040805167ffffffffffffffff95861681529385166020850152918416918301919091529091166060820152608001610287565b6102d161077a366004615369565b611bcb565b61078861271081565b60405161ffff9091168152602001610287565b6001600160a01b038116600090815260a86020526040902054819060ff166107d6576040516396e1352960e01b815260040160405180910390fd5b6107df82611ca5565b5050565b6000808260038111156107f8576107f861561a565b03610823576001600160a01b038381166000908152609a6020526040902060010154165b90506108d6565b60018260038111156108375761083761561a565b0361085f576001600160a01b038381166000908152609b60205260409020600101541661081c565b60028260038111156108735761087361561a565b0361089b576001600160a01b038381166000908152609c60205260409020600101541661081c565b60038260038111156108af576108af61561a565b036108d6576001600160a01b038381166000908152609d6020526040902060010154165b90505b92915050565b6033546001600160a01b0316331461093b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6109456000611cf7565b565b60008083600381111561095c5761095c61561a565b0361098a576001600160a01b0384166000908152609a602052604090206109839083611d49565b9050610a3e565b600183600381111561099e5761099e61561a565b036109c5576001600160a01b0384166000908152609b602052604090206109839083611d49565b60028360038111156109d9576109d961561a565b03610a00576001600160a01b0384166000908152609c602052604090206109839083611d49565b6003836003811115610a1457610a1461561a565b03610a3e576001600160a01b0384166000908152609d60205260409020610a3b9083611d49565b90505b9392505050565b6001600160a01b03808516600090815260a0602090815260408083209386168352929052205460ff161580610aa057506001600160a01b03808416600090815260a0602090815260408083209386168352929052205460ff16155b15610abe576040516301187a4360e61b815260040160405180910390fd5b610ac784611ca5565b610ad083611ca5565b610ade826000806000611d6c565b610afb5760405163b3165ffd60e01b815260040160405180910390fd5b610b2d6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b610b378584611f2d565b60208083019190915260ae546040805163743aaa2360e11b81529051610bb8936001600160a01b039093169263e875544692600480820193918290030181865afa158015610b89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bad9190615630565b602083015190611fdd565b821115610bd857604051633b1b989f60e01b815260040160405180910390fd5b610be6853385856000611ffc565b60ae54604080516307dc0d1d60e41b815290516000926001600160a01b031691637dc0d1d09160048083019260209291908290030181865afa158015610c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c549190615649565b60405163fc57d4df60e01b81526001600160a01b0387811660048301529192509082169063fc57d4df90602401602060405180830381865afa158015610c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc29190615630565b825260405163fc57d4df60e01b81526001600160a01b03878116600483015282169063fc57d4df90602401602060405180830381865afa158015610d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2e9190615630565b606083015281511580610d4357506060820151155b15610d6157604051634b6b62e560e01b815260040160405180910390fd5b610e10610e018360000151610dfb8560600151610df560ae60009054906101000a90046001600160a01b03166001600160a01b0316634ada90af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee9190615630565b8990611fdd565b90611fdd565b90612999565b610e0b87876129cb565b612a69565b60808301819052610e2690869086336000612a7f565b60808201516040805133815260208101869052908101919091526001600160a01b0380871691888216918716907fc2c75a73164c2efcbb9f74bfa511cd0866489d90687831a7217b3dbeeb6970889060600160405180910390a4505050505050565b6001600160a01b038316610eaf5760405163867915ab60e01b815260040160405180910390fd5b81600003610ed0576040516310eb483f60e21b815260040160405180910390fd5b610ed985611ca5565b610ee3858461341a565b6000610eee866134a6565b9050610f056001600160a01b038216863086613537565b6001600160a01b038616600090815260a960209081526040808320815160608101835284815292830184905290820192909252876001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9a9190615630565b6020820152848152600182015415611096576000610fc982602001518460010154611fdd90919063ffffffff16565b825190915081111561101c578151604083018051610fe890839061567c565b90525060208201518251610ffb91612999565b83600101600082825461100e9190615694565b90915550506000825261104d565b808260400181815161102e919061567c565b90525060006001840155815181908390611049908390615694565b9052505b886001600160a01b03167f8113f59ef078158acce9021327489b70d6ab15d0c107c36455c3505248648df6846001015460405161108c91815260200190565b60405180910390a2505b8051158015906110bf57506001600160a01b038816600090815260a3602052604090205460ff16155b80156110fe57506001600160a01b0388166000908152609d602052604081206110f290600101546001600160a01b031690565b6001600160a01b031614155b15611185576000611114898360000151876135ba565b509050801561118357808260400181815161112f919061567c565b905250815181908390611143908390615694565b9052506001600160a01b038916600090815260a5602052604090205461116a908290612999565b83600301600082825461117d919061567c565b90915550505b505b604081015115611262576001600160a01b038816600090815260a4602052604080822054908301516111b691612999565b9050808360020160008282546111cc919061567c565b90915550506001600160a01b03808a166000908152609e60209081526040808320938b168352929052908120805483929061120890849061567c565b9250508190555061121e89858460400151613853565b886001600160a01b03166000805160206157a083398151915284600201548560030154604051611258929190918252602082015260400190565b60405180910390a2505b805115611324576112d6886001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ce9190615630565b825190612999565b6001600160a01b03808a166000908152609e60209081526040808320938b168352929052908120600101805490919061131090849061567c565b909155505080516113249089908590613a3a565b61132e8887613b86565b6001600160a01b038881166000818152609e602090815260408083208b8616808552908352928190206001810154905482518c8152938401919091529082015291929091908a16907f11adb3570ba55fd255b1f04252ca0071ae6639c86d4fd69e7c1bf1688afb493f906060015b60405180910390a45050505050505050565b6001600160a01b038116600090815260a1602090815260409182902080548351818402810184019094528084526060939283018282801561141857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113fa575b50505050509050919050565b81600003611445576040516310eb483f60e21b815260040160405180910390fd5b61144e83611ca5565b611458833361341a565b33600081815260b2602052604081204390556114779190859085611d6c565b156114955760405163df9db46360e01b815260040160405180910390fd5b60006114a0846134a6565b6001600160a01b038516600081815260a960209081526040808320815163182df0f560e01b815291519596508895939490938593919263182df0f59260048083019391928290030181865afa1580156114fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115219190615630565b604051633af9e66960e01b81523060048201529091506000906001600160a01b038a1690633af9e669906024016020604051808303816000875af115801561156d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115919190615630565b83549091501561166c5782546000906115aa9084611fdd565b9050858111806115b957508181115b1561160d5760006115ca8784612a69565b90506115d6818761567c565b95506115e28185612999565b8560000160008282546115f59190615694565b9091555061160590508188615694565b96505061162a565b611617818661567c565b6000855594506116278187615694565b95505b83546040519081526001600160a01b038b16907f1cf8705a784a46d32023f3694b5e8149137d563085a870fde2f54a6cc5c59df79060200160405180910390a2505b60008511801561169557506001600160a01b038916600090815260a3602052604090205460ff16155b80156116d457506001600160a01b0389166000908152609b602052604081206116c890600101546001600160a01b031690565b6001600160a01b031614155b1561176c5760006116f38a6116ed88610e0b8987615694565b8a613d99565b509050801561176a57611706818661567c565b94506117128187615694565b6001600160a01b038b16600090815260a46020526040902054909650611739908290612999565b6001600160a01b038b16600090815260a960205260408120600201805490919061176490849061567c565b90915550505b505b8315611863576001600160a01b038916600090815260a56020526040812054611796908690612999565b6001600160a01b038b16600090815260a960205260408120600301805492935083929091906117c690849061567c565b90915550506001600160a01b038a166000908152609f60209081526040808320338452909152812080548392906117fe90849061567c565b9091555050600284015460038501546040516001600160a01b038d16926000805160206157a08339815191529261183d92918252602082015260400190565b60405180910390a260006118518685612999565b1115611861576118618a86614014565b505b841561191b576118d5896001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ce9190615630565b8690612999565b6001600160a01b038a166000908152609f602090815260408083203384529091528120600101805490919061190b90849061567c565b9091555061191b90508986614120565b61192589336141a9565b6119396001600160a01b038716338a614386565b6001600160a01b0389166000818152609f6020908152604080832033808552908352928190206001810154905482518e81529384019190915282820152517fc1cba78646fef030830d099fc25cb498953709c9d47d883848f81fd207174c9f9181900360600190a3505050505050505050565b60a281815481106119bc57600080fd5b6000918252602090912001546001600160a01b0316905081565b606060a2805480602002602001604051908101604052809291908181526020018280548015611a2e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a10575b5050505050905090565b83600003611a59576040516310eb483f60e21b815260040160405180910390fd5b6001600160a01b03808616600090815260a0602090815260408083209387168352929052205460ff16611a9f576040516301187a4360e61b815260040160405180910390fd5b611aa885611ca5565b6000611abd611ab787866129cb565b86612a69565b9050611acc8487836000611d6c565b15611aea57604051630cba3c5f60e21b815260040160405180910390fd5b611af78682868686612a7f565b505050505050565b81600003611b20576040516310eb483f60e21b815260040160405180910390fd5b6001600160a01b03808616600090815260a0602090815260408083209387168352929052205460ff16611b66576040516301187a4360e61b815260040160405180910390fd5b611b6f85611ca5565b6000611b84611b7e8786611f2d565b84612a69565b9050611af78686868486611ffc565b60a16020528160005260406000208181548110611baf57600080fd5b6000918252602090912001546001600160a01b03169150829050565b6033546001600160a01b03163314611c255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610932565b6001600160a01b038116611c8a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610932565b611c9381611cf7565b50565b6001600160a01b03163b151590565b604080516001600160a01b038381166024808401919091528351808403909101815260449092019092526020810180516001600160e01b0316631a94726760e11b17905260ad546107df921690614404565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0390811660009081526020929092526040909120600101541690565b60008060ae60009054906101000a90046001600160a01b03166001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de69190615649565b6001600160a01b038716600090815260a16020908152604080832054815160a08101835284815292830184905290820183905260608201839052608082018390529293509080805b84811015611f1f576001600160a01b038b16600090815260a160205260408120805483908110611e6057611e606156ab565b6000918252602090912001546001600160a01b03169050611e828c828961449e565b9450846020015184611e94919061567c565b9350846040015183611ea6919061567c565b9250806001600160a01b03168b6001600160a01b031603611f16578815611ee4576060850151611ed7908a90611fdd565b611ee1908461567c565b92505b8915611f1657611f098560800151610df587606001518d611fdd90919063ffffffff16565b611f139085615694565b93505b50600101611e2e565b501198975050505050505050565b6001600160a01b038083166000818152609f602090815260408083209486168352938152838220845180860186528154815260019091015481830152845163aa5af0fd60e01b8152945192949093611fa793909263aa5af0fd92600480820193918290030181865afa158015610b89573d6000803e3d6000fd5b6001600160a01b038516600090815260a560205260409020548251611fcb91611fdd565b611fd5919061567c565b949350505050565b6000670de0b6b3a7640000611ff283856156c1565b6108d391906156e0565b6001600160a01b038316600090815260b260205260409020544390036120355760405163dff88f5160e01b815260040160405180910390fd5b6000612040866134a6565b90506120576001600160a01b038216863086613537565b6120a66040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60208082018590528382526040805163aa5af0fd60e01b815290516001600160a01b038a169263aa5af0fd92600480820193918290030181865afa1580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121169190615630565b60608201526001600160a01b038088166000908152609f602090815260408083209389168352929052206001015460c08201819052156122c457606081015160c082015161216391611fdd565b6040820181905260208201511015612277576020810151610100820181905260c0820151606083015161219992610e0b91612999565b6001600160a01b038089166000908152609f60209081526040808320938a16835292905290812060010180549091906121d3908490615694565b909155506121e3905087866141a9565b6121f38783836101000151613853565b6121fd878661461f565b6001600160a01b038781166000818152609f602090815260408083208a8616808552908352928190206001810154905482518b815293840191909152828201525192939192918a16917f7b417e520d2b905fc5a1689d29d329358dd55efc60ed115aa165b0a2b64232c69181900360600190a45050612992565b60408101516101008201819052602082018051612295908390615694565b9052506001600160a01b038088166000908152609f602090815260408083209389168352929052908120600101555b6001600160a01b03808816600081815260a96020908152604080832060a4835281842054608088015284845260a583528184205460a08801908152948452609f8352818420958b1684529482529091205491519084015161232a9291610e0b9190612999565b6001600160a01b03808a166000908152609f60209081526040808320938b1683529290529081208054909190612361908490615694565b90915550612371905088876141a9565b60008260200151118015612389575060008160010154115b1561251f5760006123ab83606001518360010154611fdd90919063ffffffff16565b9050826020015181111561243557606083015160208401516123cc91612999565b8260010160008282546123df9190615694565b909155505060a083015160208401516123f791612999565b82600301600082825461240a9190615694565b909155505060208301516101008401805161242690839061567c565b90525060006020840152612494565b6000600183015560a083015161244c908290612999565b82600301600082825461245f9190615694565b92505081905550808361010001818151612479919061567c565b905250602083018051829190612490908390615694565b9052505b886001600160a01b03167f8113f59ef078158acce9021327489b70d6ab15d0c107c36455c3505248648df683600101546040516124d391815260200190565b60405180910390a2886001600160a01b03166000805160206157a083398151915283600201548460030154604051612515929190918252602082015260400190565b60405180910390a2505b602082015115612679576125d66125478360a001518360030154611fdd90919063ffffffff16565b6125b48a6001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612588573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ac9190615630565b845490611fdd565b608085015160028501546125c791611fdd565b6125d19190615694565b614897565b60e08301819052156126795760006125f68360e001518460200151612a69565b9050808360200181815161260a9190615694565b90525060a083015161261d908290612999565b8260030160008282546126309190615694565b9091555050600282015460038301546040516001600160a01b038c16926000805160206157a08339815191529261266f92918252602082015260400190565b60405180910390a2505b600082602001511180156126a657506001600160a01b038816600090815260a3602052604090205460ff16155b80156126e557506001600160a01b0388166000908152609d602052604081206126d990600101546001600160a01b031690565b6001600160a01b031614155b15612765576000806127008a856020015186600001516135ba565b9150915080846000015111612718576000845261272e565b808460000181815161272a9190615694565b9052505b81156127625781846020018181516127469190615694565b9052506101008401805183919061275e90839061567c565b9052505b50505b6127758884846101000151613853565b60208201511561291657600061279489846020015185600001516148b2565b9050826020015181101561287057612817896001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128079190615630565b828560200151610dfb9190615694565b82600001600082825461282a919061567c565b909155505081546040519081526001600160a01b038a16907f1cf8705a784a46d32023f3694b5e8149137d563085a870fde2f54a6cc5c59df79060200160405180910390a25b6080830151612880908290612999565b8260020160008282546128939190615694565b909155505060a083015160208401516128ab91612999565b8260030160008282546128be9190615694565b9091555050600282015460038301546040516001600160a01b038c16926000805160206157a0833981519152926128fd92918252602082015260400190565b60405180910390a261291489858560200151613a3a565b505b612920888761461f565b6001600160a01b038881166000818152609f602090815260408083208b8616808552908352928190206001810154905482518c8152938401919091529082015291929091908a16907f7b417e520d2b905fc5a1689d29d329358dd55efc60ed115aa165b0a2b64232c69060600161139c565b5050505050565b6000670de0b6b3a7640000826129af85836156c1565b6129c190670de0b6b3a76400006156c1565b611ff291906156e0565b6001600160a01b038083166000818152609e602090815260408083209486168352938152838220845180860186528154815260019091015481830152845163182df0f560e01b8152945192949093612a4593909263182df0f592600480820193918290030181865afa158015610b89573d6000803e3d6000fd5b6001600160a01b038516600090815260a460205260409020548251611fcb91611fdd565b6000818310612a7857816108d3565b5090919050565b83600003612aa0576040516310eb483f60e21b815260040160405180910390fd5b612ae96040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b612af2866134a6565b6001600160a01b0390811660c083015260208201869052828252604051633af9e66960e01b815230600482015290871690633af9e669906024016020604051808303816000875af1158015612b4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6f9190615630565b816080018181525050856001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bda9190615630565b60408201819052612bec908690612999565b600003612c0c576040516393c76c6f60e01b815260040160405180910390fd5b6001600160a01b038087166000908152609e60209081526040808320938816835292905220600101548015612e23576000612c54836040015183611fdd90919063ffffffff16565b90508260200151811180612c6b5750826080015181115b15612cf557612c8283602001518460800151612a69565b60a08401819052602084018051612c9a908390615694565b905250604083015160a0840151612cb091612999565b6001600160a01b03808a166000908152609e60209081526040808320938b1683529290529081206001018054909190612cea908490615694565b90915550612d3f9050565b60a08301819052602083018051829190612d10908390615694565b9052506001600160a01b038089166000908152609e60209081526040808320938a168352929052908120600101555b8260200151600003612e2157612d558887613b86565b612d5f888761461f565b6000612d7c84604001518560a0015161299990919063ffffffff16565b1115612d9057612d90888460a00151614014565b60c0830151612da9906001600160a01b03168689614386565b6001600160a01b038881166000818152609e602090815260408083208b8616808552908352928190206001810154905482518e815293840191909152828201525192938916927f378f9d375cd79e36c19c26a9e57791fe7cd5953b61986c01ebf980c0efb928019181900360600190a4505050612992565b505b6001600160a01b03808816600081815260a96020908152604080832060a483528184205460608901908152948452609e8352818420958b16845294825290912054915190850151612e799291610e0b9190612999565b6001600160a01b03808a166000908152609e60209081526040808320938b1683529290529081208054909190612eb0908490615694565b90915550612ec090508887613b86565b60008360200151118015612ed45750805415155b156130a15760408301518154600091612eed9190611fdd565b90508360200151811180612f1357508360a001518460800151612f109190615694565b81115b15612fc4576000612f3685602001518660a001518760800151610e0b9190615694565b9050612f4f85604001518261299990919063ffffffff16565b836000016000828254612f629190615694565b90915550506060850151612f77908290612999565b836002016000828254612f8a9190615694565b92505081905550808560a001818151612fa3919061567c565b905250602085018051829190612fba908390615694565b90525061301d9050565b808460a001818151612fd6919061567c565b905250602084018051829190612fed908390615694565b905250600082556060840151613004908290612999565b8260020160008282546130179190615694565b90915550505b81546040519081526001600160a01b038a16907f1cf8705a784a46d32023f3694b5e8149137d563085a870fde2f54a6cc5c59df79060200160405180910390a2886001600160a01b03166000805160206157a083398151915283600201548460030154604051613097929190918252602082015260400190565b60405180910390a2505b600083602001511180156130ce57506001600160a01b038816600090815260a3602052604090205460ff16155b801561310d57506001600160a01b0388166000908152609b6020526040812061310190600101546001600160a01b031690565b6001600160a01b031614155b156131a05760008061313c8a61313587602001518860a001518960800151610e0b9190615694565b8751613d99565b9150915080856000015111613154576000855261316a565b80856000018181516131669190615694565b9052505b811561319d5781856020018181516131829190615694565b90525060a08501805183919061319990839061567c565b9052505b50505b60006131bd84604001518560a0015161299990919063ffffffff16565b11156131d1576131d1888460a00151614014565b6020830151156133885760006131f08985602001518660000151614b35565b905083602001518110156132cf57613273896001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561323f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132639190615630565b828660200151610dfb9190615694565b826001016000828254613286919061567c565b909155505060018201546040519081526001600160a01b038a16907f8113f59ef078158acce9021327489b70d6ab15d0c107c36455c3505248648df69060200160405180910390a25b606084015160208501516132e291612999565b8260020160008282546132f59190615694565b90915550506001600160a01b038916600090815260a5602052604090205461331e908290612999565b8260030160008282546133319190615694565b9091555050600282015460038301546040516001600160a01b038c16926000805160206157a08339815191529261337092918252602082015260400190565b60405180910390a2613386898560200151614120565b505b613392888761461f565b60c08301516133ab906001600160a01b03168689614386565b6001600160a01b038881166000818152609e602090815260408083208b8616808552908352928190206001810154905482518e8152938401919091529082015291928816917f378f9d375cd79e36c19c26a9e57791fe7cd5953b61986c01ebf980c0efb928019060600161139c565b6001600160a01b03808316600090815260a0602090815260408083209385168352929052205460ff166107df576001600160a01b03808316600081815260a0602090815260408083209486168352938152838220805460ff1916600190811790915560a18252938220805494850181558252902090910180546001600160a01b03191690911790555050565b60b0546000906001600160a01b03908116908316036134d057505060b1546001600160a01b031690565b816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561350e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d69190615649565b919050565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d11600160005114161716915050806129925760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610932565b600080826000036135d05750600090508061384b565b6136026040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b856001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136649190615630565b6040808301919091526001600160a01b038716600090815260a5602052908120548252805a60808401525b86851080156136d457506001600160a01b0388166000908152609d602052604081206136c590600101546001600160a01b031690565b9250826001600160a01b031614155b80156136ee5750855a84608001516136ec9190615694565b105b1561383557506001600160a01b038088166000908152609f60209081526040808320938516835292905281902090830151600182015461372d91611fdd565b606084015260008080613740888b615694565b905080866060015111613782578551606087015161375d91612999565b8454613769919061567c565b915085606001518861377b919061567c565b97506137c3565b6040860151613792908290612999565b84600101546137a19190615694565b86519093506137b1908290612999565b84546137bd919061567c565b91508997505b600184018390558184556137d78b866141a9565b8a6001600160a01b0316856001600160a01b03167f0aec3812ec00f2d2f0eacc89fd13923091a68f30c3b3d0336e364544322b97588585604051613825929190918252602082015260400190565b60405180910390a350505061368f565b5a83608001516138459190615694565b93505050505b935093915050565b6040516305eff7ef60e21b81523060048201526138c39082906001600160a01b038616906317bfdfbc906024016020604051808303816000875af115801561389f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0b9190615630565b90508015613a355760b0546001600160a01b03908116908416036139985760b154604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561392757600080fd5b505af115801561393b573d6000803e3d6000fd5b50505050826001600160a01b0316634e4d9fea826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397a57600080fd5b505af115801561398e573d6000803e3d6000fd5b5050505050505050565b6139ac6001600160a01b0383168483614da2565b60405163073a938160e11b8152600481018290526001600160a01b03841690630e752702906024016020604051808303816000875af11580156139f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a179190615630565b15613a3557604051637112354b60e01b815260040160405180910390fd5b505050565b60b0546001600160a01b0390811690841603613ae95760b154604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015613a9657600080fd5b505af1158015613aaa573d6000803e3d6000fd5b50505050826001600160a01b0316631249c58b826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397a57600080fd5b613afd6001600160a01b0383168483614da2565b60405163140e25ad60e31b8152600481018290526001600160a01b0384169063a0712d68906024016020604051808303816000875af1158015613b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b689190615630565b15613a355760405163757d648760e11b815260040160405180910390fd5b6001600160a01b038281166000818152609e6020908152604080832094861680845294825280832060018101549054858552609b84528285208786528452828520600290810154968652609a855283862097865296909352922090930154609854919392918411613c21576001600160a01b038087166000908152609e60209081526040808320938916835292905290812060010181905593505b838214613c7e578115613c50576001600160a01b0386166000908152609b60205260409020613c509086614e19565b8315613c7e576097546001600160a01b0387166000908152609b60205260409020613c7e9187908790614fae565b6098548311613cb4576001600160a01b038087166000908152609e60209081526040808320938916835292905290812081905592505b828114613d11578015613ce3576001600160a01b0386166000908152609a60205260409020613ce39086614e19565b8215613d11576097546001600160a01b0387166000908152609a60205260409020613d119187908690614fae565b60ac546001600160a01b031615611af75760ac5460405163636c55d360e01b81526001600160a01b0387811660048301528881166024830152604482018590529091169063636c55d3906064015b600060405180830381600087803b158015613d7957600080fd5b505af1158015613d8d573d6000803e3d6000fd5b50505050505050505050565b60008082600003613daf5750600090508061384b565b613de16040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b856001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e439190615630565b6040808301919091526001600160a01b038716600090815260a4602052908120548252805a60808401525b8685108015613eb357506001600160a01b0388166000908152609b60205260408120613ea490600101546001600160a01b031690565b9250826001600160a01b031614155b8015613ecd5750855a8460800151613ecb9190615694565b105b1561383557506001600160a01b038088166000908152609e602090815260408083209385168352929052819020908301516001820154613f0c91611fdd565b606084015260008080613f1f888b615694565b905080866060015111613f615785516060870151613f3c91612999565b8454613f48919061567c565b9150856060015188613f5a919061567c565b9750613fa2565b6040860151613f71908290612999565b8460010154613f809190615694565b8651909350613f90908290612999565b8454613f9c919061567c565b91508997505b60018401839055818455613fb68b86613b86565b8a6001600160a01b0316856001600160a01b03167f76908587112671ab2dcd9323f0d9b27d193156f95fe5e1251411a151c20e82dd8585604051614004929190918252602082015260400190565b60405180910390a3505050613e6e565b60405163852a12e360e01b8152600481018290526001600160a01b0383169063852a12e3906024016020604051808303816000875af115801561405b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061407f9190615630565b1561409d57604051637d47a0c360e01b815260040160405180910390fd5b60b0546001600160a01b03908116908316036107df5760b160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561410357600080fd5b505af1158015614117573d6000803e3d6000fd5b50505050505050565b60405163317afabb60e21b8152600481018290526001600160a01b0383169063c5ebeaec906024016020604051808303816000875af1158015614167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418b9190615630565b1561409d576040516302738d6b60e11b815260040160405180910390fd5b6001600160a01b038281166000818152609f6020908152604080832094861680845294825280832060018101549054858552609d84528285208786528452828520600290810154968652609c855283862097865296909352922090930154609854919392918411614244576001600160a01b038087166000908152609f60209081526040808320938916835292905290812060010181905593505b8382146142a1578115614273576001600160a01b0386166000908152609d602052604090206142739086614e19565b83156142a1576097546001600160a01b0387166000908152609d602052604090206142a19187908790614fae565b60985483116142d7576001600160a01b038087166000908152609f60209081526040808320938916835292905290812081905592505b828114614334578015614306576001600160a01b0386166000908152609c602052604090206143069086614e19565b8215614334576097546001600160a01b0387166000908152609c602052604090206143349187908690614fae565b60ac546001600160a01b031615611af75760ac5460405163a9de645d60e01b81526001600160a01b0387811660048301528881166024830152604482018590529091169063a9de645d90606401613d5f565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806143fe5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610932565b50505050565b6060600080846001600160a01b0316846040516144219190615702565b600060405180830381855af49150503d806000811461445c576040519150601f19603f3d011682016040523d82523d6000602084013e614461565b606091505b509150915081156144755791506108d69050565b8051156144855780518082602001fd5b60405163037b81af60e11b815260040160405180910390fd5b6144d06040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60405163fc57d4df60e01b81526001600160a01b03848116600483015283169063fc57d4df90602401602060405180830381865afa158015614516573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061453a9190615630565b6060820181905260000361456157604051634b6b62e560e01b815260040160405180910390fd5b60ae54604051638e8f294b60e01b81526001600160a01b03858116600483015290911690638e8f294b90602401606060405180830381865afa1580156145ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145cf919061574d565b5060808301525060608101516145e990610df585876129cb565b815260608101516145fe90610df58587611f2d565b60408201526080810151815161461391611fdd565b60208201529392505050565b6001600160a01b03808316600090815260a0602090815260408083209385168352929052205460ff16801561467757506001600160a01b038083166000908152609e6020908152604080832093851683529290522054155b80156146a957506001600160a01b038083166000908152609e6020908152604080832093851683529290522060010154155b80156146d857506001600160a01b038083166000908152609f6020908152604080832093851683529290522054155b801561470a57506001600160a01b038083166000908152609f6020908152604080832093851683529290522060010154155b156107df5760005b6001600160a01b03828116600090815260a16020526040902080549185169183908110614741576147416156ab565b6000918252602090912001546001600160a01b03161461476357600101614712565b6001600160a01b03808416600090815260a0602090815260408083209386168352928152828220805460ff1916905560a1905220546147a3600182615694565b8214614848576001600160a01b038316600090815260a1602052604090206147cc600183615694565b815481106147dc576147dc6156ab565b60009182526020808320909101546001600160a01b03868116845260a19092526040909220805491909216919084908110614819576148196156ab565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6001600160a01b038316600090815260a16020526040902080548061486f5761486f615789565b600082815260209020810160001990810180546001600160a01b031916905501905550505050565b6000818310156148a85760006108d3565b6108d38284615694565b6000816000036148c457506000610a3e565b6148f66040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b846001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015614934573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149589190615630565b6040808301919091526001600160a01b038616600090815260a460205290812054825280855a60808501525b6000811180156149ca57506001600160a01b0388166000908152609a602052604081206149bb90600101546001600160a01b031690565b9350836001600160a01b031614155b80156149e45750855a85608001516149e29190615694565b105b15614b1f576001600160a01b038089166000908152609e6020908152604080832093871683529290522084518154919350614a1f9190611fdd565b6060850181905260009081908310614a6c5760408601516060870151614a4491612999565b8460010154614a53919061567c565b9150856060015183614a659190615694565b9250614aae565b6040860151614a7c908490612999565b8460010154614a8b919061567c565b8651909250614a9b908490612999565b8454614aa79190615694565b9050600092505b60018401829055808455614ac28a86613b86565b896001600160a01b0316856001600160a01b03167f76908587112671ab2dcd9323f0d9b27d193156f95fe5e1251411a151c20e82dd8484604051614b10929190918252602082015260400190565b60405180910390a35050614984565b614b298188615694565b98975050505050505050565b600081600003614b4757506000610a3e565b614b796040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b846001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614bb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bdb9190615630565b6040808301919091526001600160a01b038616600090815260a560205290812054825280855a60808501525b600081118015614c4d57506001600160a01b0388166000908152609c60205260408120614c3e90600101546001600160a01b031690565b9350836001600160a01b031614155b8015614c675750855a8560800151614c659190615694565b105b15614b1f576001600160a01b038089166000908152609f6020908152604080832093871683529290522084518154919350614ca29190611fdd565b6060850181905260009081908310614cef5760408601516060870151614cc791612999565b8460010154614cd6919061567c565b9150856060015183614ce89190615694565b9250614d31565b6040860151614cff908490612999565b8460010154614d0e919061567c565b8651909250614d1e908490612999565b8454614d2a9190615694565b9050600092505b60018401829055808455614d458a866141a9565b896001600160a01b0316856001600160a01b03167f0aec3812ec00f2d2f0eacc89fd13923091a68f30c3b3d0336e364544322b97588484604051614d93929190918252602082015260400190565b60405180910390a35050614c07565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806143fe5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606401610932565b6001600160a01b0381166000908152602083905260408120600201549003614e545760405163e76ea87f60e01b815260040160405180910390fd5b6001600160a01b038082166000908152602084815260409182902082516060810184528154851680825260018301549095169281019290925260020154918101919091529015614edd5760208181015182516001600160a01b03908116600090815292869052604090922060010180546001600160a01b03191692909116919091179055614f04565b60208101516001840180546001600160a01b0319166001600160a01b039092169190911790555b60208101516001600160a01b031615614f505780516020808301516001600160a01b03908116600090815291869052604090912080546001600160a01b03191691909216179055614f74565b80516002840180546001600160a01b0319166001600160a01b039092169190911790555b506001600160a01b031660009081526020919091526040812080546001600160a01b03199081168255600182018054909116905560020155565b81600003614fcf5760405163ba3b5b5960e01b815260040160405180910390fd5b6001600160a01b038316614ff65760405163867915ab60e01b815260040160405180910390fd5b6001600160a01b038316600090815260208590526040902060020154156150305760405163f5ab373160e01b815260040160405180910390fd5b60018401546000906001600160a01b03165b8282108015615061575060028601546001600160a01b03828116911614155b801561508857506001600160a01b0381166000908152602087905260409020600201548411155b156150b5576001600160a01b03908116600090815260208790526040902060019081015492019116615042565b6001600160a01b038116158015906150e757506001600160a01b03811660009081526020879052604090206002015484115b156152285760018601546001600160a01b039081169082160361518f576040805160608101825260008082526001600160a01b0384811660208085018281528587018b81528c8516808752928e9052878620965187549086166001600160a01b0319918216178855915160018089018054929097169184169190911790955551600290960195909555918b018054851683179055825292902080549091169091179055611af7565b604080516060810182526001600160a01b03808416600081815260208b81528582208054851686528186018481528688018c81528d8716808652938f9052888520975188549088166001600160a01b0319918216178955915160018981018054928a1692851692909217909155905160029098019790975581549095168352958220909401805484168517905552825416179055611af7565b60018601546001600160a01b03166152bf5760408051606081018252600080825260208083018281528385018981526001600160a01b038b8116808652938d905295909320935184549086166001600160a01b031991821617855590516001808601805492909716918316919091179095559151600293840155928901805482168417905590880180549091169091179055611af7565b505060408051606081018252600286810180546001600160a01b03908116845260006020808601828152868801998a529983168083529a9052858120945185549083166001600160a01b0319918216178655985160018087018054928516928c169290921790915597519490930193909355805490921681529190912090920180548416851790555080549091169091179055565b6001600160a01b0381168114611c9357600080fd5b60006020828403121561537b57600080fd5b8135610a3e81615354565b80356004811061353257600080fd5b600080604083850312156153a857600080fd5b82356153b381615354565b91506153c160208401615386565b90509250929050565b600080604083850312156153dd57600080fd5b82356153e881615354565b915060208301356153f881615354565b809150509250929050565b60008060006060848603121561541857600080fd5b833561542381615354565b925061543160208501615386565b9150604084013561544181615354565b809150509250925092565b6000806000806080858703121561546257600080fd5b843561546d81615354565b9350602085013561547d81615354565b9250604085013561548d81615354565b9396929550929360600135925050565b600080600080600060a086880312156154b557600080fd5b85356154c081615354565b945060208601356154d081615354565b935060408601356154e081615354565b94979396509394606081013594506080013592915050565b6020808252825182820181905260009190848201906040850190845b818110156155395783516001600160a01b031683529284019291840191600101615514565b50909695505050505050565b60008060006060848603121561555a57600080fd5b833561556581615354565b95602085013595506040909401359392505050565b60006020828403121561558c57600080fd5b5035919050565b600080600080600060a086880312156155ab57600080fd5b85356155b681615354565b94506020860135935060408601356155cd81615354565b925060608601356155dd81615354565b949793965091946080013592915050565b6000806040838503121561560157600080fd5b823561560c81615354565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b60006020828403121561564257600080fd5b5051919050565b60006020828403121561565b57600080fd5b8151610a3e81615354565b634e487b7160e01b600052601160045260246000fd5b6000821982111561568f5761568f615666565b500190565b6000828210156156a6576156a6615666565b500390565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156156db576156db615666565b500290565b6000826156fd57634e487b7160e01b600052601260045260246000fd5b500490565b6000825160005b818110156157235760208186018101518583015201615709565b81811115615732576000828501525b509190910192915050565b8051801515811461353257600080fd5b60008060006060848603121561576257600080fd5b61576b8461573d565b9250602084015191506157806040850161573d565b90509250925092565b634e487b7160e01b600052603160045260246000fdfeaa997145358327b99ccedf396e9b7719eb7999623af1a7b38605739996c2ccfaa2646970667358221220fd6fac1a2a05f51c24b19c02a37092c3c8086f82066bd810b5f10ce474e035ed64736f6c634300080d0033