0 txs
0 calls
constructor
No constructor.
functions
aaveIncentivesController
viewfunction aaveIncentivesController() view returns (address)
addressesProvider
viewfunction addressesProvider() view returns (address)
borrowBalanceInOf
viewfunction borrowBalanceInOf(address, address) view returns (uint256 inP2P, uint256 onPool)
BORROWING_MASK
viewfunction BORROWING_MASK() view returns (bytes32)
borrowMask
viewfunction borrowMask(address) view returns (bytes32)
DEFAULT_LIQUIDATION_CLOSE_FACTOR
viewfunction DEFAULT_LIQUIDATION_CLOSE_FACTOR() view returns (uint256)
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)
entryPositionsManager
viewfunction entryPositionsManager() view returns (address)
exitPositionsManager
viewfunction exitPositionsManager() view returns (address)
getHead
viewfunction getHead(address _poolToken, uint8 _positionType) view returns (address head)
getMarketsCreated
viewfunction getMarketsCreated() view returns (address[])
getNext
viewfunction getNext(address _poolToken, uint8 _positionType, address _user) view returns (address next)
HEALTH_FACTOR_LIQUIDATION_THRESHOLD
viewfunction HEALTH_FACTOR_LIQUIDATION_THRESHOLD() view returns (uint256)
incentivesVault
viewfunction incentivesVault() view returns (address)
interestRatesManager
viewfunction interestRatesManager() view returns (address)
isClaimRewardsPaused
viewfunction isClaimRewardsPaused() view returns (bool)
market
viewfunction market(address) view returns (address underlyingToken, uint16 reserveFactor, uint16 p2pIndexCursor, bool isCreated, bool isPaused, bool isPartiallyPaused, bool isP2PDisabled)
marketsCreated
viewfunction marketsCreated(uint256) view returns (address)
MAX_BASIS_POINTS
viewfunction MAX_BASIS_POINTS() view returns (uint16)
MAX_NB_OF_MARKETS
viewfunction MAX_NB_OF_MARKETS() view returns (uint256)
maxSortedUsers
viewfunction maxSortedUsers() view returns (uint256)
NO_REFERRAL_CODE
viewfunction NO_REFERRAL_CODE() view returns (uint8)
ONE
viewfunction ONE() view returns (bytes32)
owner
viewfunction owner() view returns (address)
p2pBorrowIndex
viewfunction p2pBorrowIndex(address) view returns (uint256)
p2pSupplyIndex
viewfunction p2pSupplyIndex(address) view returns (uint256)
pool
viewfunction pool() view returns (address)
poolIndexes
viewfunction poolIndexes(address) view returns (uint32 lastUpdateTimestamp, uint112 poolSupplyIndex, uint112 poolBorrowIndex)
rewardsManager
viewfunction rewardsManager() view returns (address)
supplyBalanceInOf
viewfunction supplyBalanceInOf(address, address) view returns (uint256 inP2P, uint256 onPool)
treasuryVault
viewfunction treasuryVault() view returns (address)
userMarkets
viewfunction userMarkets(address) view returns (bytes32)
VARIABLE_INTEREST_MODE
viewfunction VARIABLE_INTEREST_MODE() view returns (uint8)
liquidateLogic
nonpayablefunction liquidateLogic(address _poolTokenBorrowed, address _poolTokenCollateral, address _borrower, uint256 _amount)
renounceOwnership
nonpayablefunction renounceOwnership()
repayLogic
nonpayablefunction repayLogic(address _poolToken, address _repayer, address _onBehalf, uint256 _amount, uint256 _maxGasForMatching)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateIndexes
nonpayablefunction updateIndexes(address _poolToken)
withdrawLogic
nonpayablefunction withdrawLogic(address _poolToken, uint256 _amount, address _supplier, address _receiver, uint256 _maxGasForMatching)
events
BorrowerPositionUpdated
event BorrowerPositionUpdated(address indexed _user, address indexed _poolToken, uint256 _balanceOnPool, uint256 _balanceInP2P)
Liquidated
event Liquidated(address _liquidator, address indexed _liquidated, address indexed _poolTokenBorrowed, uint256 _amountRepaid, address indexed _poolTokenCollateral, uint256 _amountSeized)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
P2PAmountsUpdated
event P2PAmountsUpdated(address indexed _poolToken, uint256 _p2pSupplyAmount, uint256 _p2pBorrowAmount)
P2PBorrowDeltaUpdated
event P2PBorrowDeltaUpdated(address indexed _poolToken, uint256 _p2pBorrowDelta)
P2PSupplyDeltaUpdated
event P2PSupplyDeltaUpdated(address indexed _poolToken, uint256 _p2pSupplyDelta)
Repaid
event Repaid(address indexed _repayer, address indexed _onBehalf, address indexed _poolToken, uint256 _amount, uint256 _balanceOnPool, uint256 _balanceInP2P)
SupplierPositionUpdated
event SupplierPositionUpdated(address indexed _user, address indexed _poolToken, uint256 _balanceOnPool, uint256 _balanceInP2P)
Withdrawn
event Withdrawn(address indexed _supplier, address indexed _receiver, address indexed _poolToken, uint256 _amount, uint256 _balanceOnPool, uint256 _balanceInP2P)
errors
AddressIsZero
error AddressIsZero()
AddressIsZero
error AddressIsZero()
AmountIsZero
error AmountIsZero()
MarketNotCreated
error MarketNotCreated()
MarketPaused
error MarketPaused()
UnauthorisedLiquidate
error UnauthorisedLiquidate()
UnauthorisedWithdraw
error UnauthorisedWithdraw()
UserNotMemberOfMarket
error UserNotMemberOfMarket()
creation bytecode
0x60806040523480156200001157600080fd5b50600054610100900460ff166200002f5760005460ff161562000039565b62000039620000de565b620000a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff16158015620000c4576000805461ffff19166101011790555b8015620000d7576000805461ff00191690555b506200010b565b6000620000f630620000fc60201b620011261760201c565b15905090565b6001600160a01b03163b151590565b61469e806200011b6000396000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063ac0b4b121161013b578063cb830d03116100b8578063f2f4ca161161007c578063f2f4ca16146106c9578063f2fde38b14610735578063f4ea93d814610748578063f8180c6614610764578063fb8b758d1461077757600080fd5b8063cb830d0314610655578063d664f72c14610672578063defe20531461067b578063e501ed041461068e578063e61c6d6f146106c057600080fd5b8063bc45d190116100ff578063bc45d190146105f8578063c2af978714610618578063c2ee3a081461062b578063c3525c2814610633578063c72c4d101461064257600080fd5b8063ac0b4b1214610585578063af8b1c6f14610598578063b24be687146105ab578063b505e7a2146105be578063b6f2bf1c146105e557600080fd5b80637907016a116101c95780639f382f6a1161018d5780639f382f6a14610448578063a086fc2214610500578063a10c025014610555578063a1d6000c1461055d578063a2253eec1461057257600080fd5b80637907016a146103aa5780637f3ad056146103bd578063854f7ebb146103d05780638da5cb5b146103f0578063947574ac1461040157600080fd5b80635acff027116102105780635acff027146102f85780635f2475ca1461030b578063661cd5fc1461031e578063715018a61461038d578063789caa3e1461039757600080fd5b806316f0115b1461024d5780632ebf4be01461027d57806331bc9959146102ab578063381adc6b146102c55780633b0a79ec146102e5575b600080fd5b60aa54610260906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61029d61028b3660046140e8565b60a36020526000908152604090205481565b604051908152602001610274565b6102b3600081565b60405160ff9091168152602001610274565b61029d6102d33660046140e8565b60a76020526000908152604090205481565b60ac54610260906001600160a01b031681565b610260610306366004614114565b61077f565b60a954610260906001600160a01b031681565b61036161032c3660046140e8565b60a46020526000908152604090205463ffffffff8116906001600160701b036401000000008204811691600160901b90041683565b6040805163ffffffff90941684526001600160701b039283166020850152911690820152606001610274565b61039561085f565b005b6102606103a5366004614149565b6108ca565b6103956103b8366004614192565b6109af565b60ad54610260906001600160a01b031681565b61029d6103de3660046140e8565b60a26020526000908152604090205481565b6033546001600160a01b0316610260565b61043361040f3660046141e3565b609f6020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610274565b6104b36104563660046140e8565b60a5602052600090815260409020546001600160a01b0381169061ffff600160a01b8204811691600160b01b81049091169060ff600160c01b8204811691600160c81b8104821691600160d01b8204811691600160d81b90041687565b604080516001600160a01b03909816885261ffff9687166020890152959094169486019490945290151560608501521515608084015290151560a0830152151560c082015260e001610274565b61053561050e3660046140e8565b60a66020526000908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610274565b6102b3600281565b610565610e3d565b604051610274919061421c565b6103956105803660046140e8565b610e9f565b610260610593366004614269565b610eee565b60b054610260906001600160a01b031681565b60ae54610260906001600160a01b031681565b61029d7f555555555555555555555555555555555555555555555555555555555555555581565b6103956105f3366004614282565b610f18565b61029d6106063660046140e8565b60a06020526000908152604090205481565b6103956106263660046142dd565b610fe5565b61029d600181565b61029d670de0b6b3a764000081565b60a854610260906001600160a01b031681565b6097546106629060ff1681565b6040519015158152602001610274565b61029d61138881565b60af54610260906001600160a01b031681565b61043361069c3660046141e3565b609e6020908152600092835260408084209091529082529020805460019091015482565b61029d60985481565b6099546107019067ffffffffffffffff80821691680100000000000000008104821691600160801b8204811691600160c01b90041684565b6040805167ffffffffffffffff95861681529385166020850152918416918301919091529091166060820152608001610274565b6103956107433660046140e8565b61105b565b61075161271081565b60405161ffff9091168152602001610274565b60ab54610260906001600160a01b031681565b61029d608081565b60008082600381111561079457610794614338565b036107c1576001600160a01b0383166000908152609a602052604090206107ba90611135565b9050610859565b60018260038111156107d5576107d5614338565b036107fb576001600160a01b0383166000908152609b602052604090206107ba90611135565b600282600381111561080f5761080f614338565b03610835576001600160a01b0383166000908152609c602052604090206107ba90611135565b6001600160a01b0383166000908152609d6020526040902061085690611135565b90505b92915050565b6033546001600160a01b031633146108be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6108c86000611167565b565b6000808360038111156108df576108df614338565b0361090d576001600160a01b0384166000908152609a6020526040902061090690836111b9565b90506109a8565b600183600381111561092157610921614338565b03610948576001600160a01b0384166000908152609b6020526040902061090690836111b9565b600283600381111561095c5761095c614338565b03610983576001600160a01b0384166000908152609c6020526040902061090690836111b9565b6001600160a01b0384166000908152609d602052604090206109a590836111b9565b90505b9392505050565b6001600160a01b03828116600090815260a06020908152604080832054888516845260a79092528083205493871683529091205460011b90911790811614610a0a576040516301187a4360e61b815260040160405180910390fd5b610a138461120e565b610a1c8361120e565b610a2582611260565b610a425760405163b3165ffd60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260a5602052604081205490911690610a8783610a7a611388610a748a8961127e565b9061131d565b8082109182029115020190565b6001600160a01b03808716600090815260a5602090815260408083205460a8548251631f94a27560e31b81529251969750908516959394169263fca513a8926004808401939192918290030181865afa158015610ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0c9190614359565b9050610b406040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60aa5460405163c44b11f760e01b81526001600160a01b03858116600483015290911690610be090829063c44b11f7906024015b602060405180830381865afa158015610b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb591906143fe565b5161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b5060208601528452505060405163c44b11f760e01b81526001600160a01b038781166004830152610c1d919083169063c44b11f790602401610b74565b50606086018190526020860151600a90810a60408089019190915291900a60808701525163b3596f0760e01b81526001600160a01b038a81166004830152600095508716935063b3596f0792506024019050602060405180830381865afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb0919061441a565b60405163b3596f0760e01b81526001600160a01b03868116600483015291925060009185169063b3596f0790602401602060405180830381865afa158015610cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d20919061441a565b90506000610d5f8460000151838660800151610d3c9190614449565b6040870151610d4b878c614449565b610d559190614449565b610a749190614468565b90506000610d6d8c8c611341565b905080821115610dbe57809150610dbb8560000151866040015186610d929190614449565b6080880151610da18786614449565b610dab9190614449565b610db59190614468565b906113cf565b97505b610dcc8d338d8b60006113f5565b610dda8c838d336000611c1a565b60408051338152602081018a90529081018390526001600160a01b03808e16918f8216918e16907fc2c75a73164c2efcbb9f74bfa511cd0866489d90687831a7217b3dbeeb6970889060600160405180910390a450505050505050505050505050565b606060a1805480602002602001604051908101604052809291908181526020018280548015610e9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e77575b5050505050905090565b6001600160a01b038116600090815260a560205260409020548190600160c01b900460ff16610ee1576040516396e1352960e01b815260040160405180910390fd5b610eea8261120e565b5050565b60a18181548110610efe57600080fd5b6000918252602090912001546001600160a01b0316905081565b83600003610f39576040516310eb483f60e21b815260040160405180910390fd5b6001600160a01b038216610f605760405163867915ab60e01b815260040160405180910390fd5b610f698561120e565b6000610f85610f788786611341565b8681108015880291020190565b905080600003610fa8576040516301187a4360e61b815260040160405180910390fd5b610fb38487836122b2565b610fd057604051630cba3c5f60e21b815260040160405180910390fd5b610fdd8682868686611c1a565b505050505050565b81600003611006576040516310eb483f60e21b815260040160405180910390fd5b61100f8561120e565b600061102b61101e878661127e565b8481108015860291020190565b90508060000361104e576040516301187a4360e61b815260040160405180910390fd5b610fdd86868684866113f5565b6033546001600160a01b031633146110b55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108b5565b6001600160a01b03811661111a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108b5565b61112381611167565b50565b6001600160a01b03163b151590565b80546000901561115a5761114a8260016122d2565b546001600160a01b031692915050565b506000919050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811660009081526002830160205260408120548354811015611204576111f1846111ec83600161448a565b6122d2565b546001600160a01b031691506108599050565b6000915050610859565b604080516001600160a01b038381166024808401919091528351808403909101815260449092019092526020810180516001600160e01b03166328894fbb60e21b17905260ad54610eea921690612302565b6000670de0b6b3a76400006112778360008061234b565b1092915050565b6001600160a01b038281166000818152609f602090815260408083209486168352938152838220845180860186528154815260019091015481830190815293835260a49091529281205491519092916112e79190600160901b90046001600160701b03166123f5565b6001600160a01b038516600090815260a36020526040902054825161130b916123f5565b611315919061448a565b949350505050565b6000816113881904831182021561133357600080fd5b506127109102611388010490565b6001600160a01b038281166000818152609e602090815260408083209486168352938152838220845180860186528154815260019091015481830190815293835260a49091529281205491519092916113ab919064010000000090046001600160701b03166123f5565b6001600160a01b038516600090815260a26020526040902054825161130b916123f5565b6002810461271081190483111582026113e757600080fd5b612710929092029091010490565b6001600160a01b03808616600090815260a560205260409020541661141c81863086612437565b61146b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60208181018590528382526001600160a01b03888116600081815260a48452604080822054600160901b90046001600160701b03166060870152918152609f845281812092891681529190925220600181015460c083018190521561160f576114fa6114e883606001518460c001516123f590919063ffffffff16565b83602001518082109182029115020190565b61010083018190526020830180516115139083906144a2565b90525060c082015160608301516101008401516115359291610a7a91906124ba565b81600101600082825461154891906144a2565b9091555050602082015160000361160f5761156388876124f4565b61157283836101000151612733565b805415801561158357506001810154155b156115ad576001600160a01b038816600090815260a760205260408120546115ad918891906128ac565b600181015481546040805188815260208101939093528201526001600160a01b03808a1691888216918a16907f7b417e520d2b905fc5a1689d29d329358dd55efc60ed115aa165b0a2b64232c6906060015b60405180910390a4505050611c13565b6001600160a01b038816600081815260a66020908152604080832060a2835281842054608088015284845260a383528184205460a0880190815294845260a48352928190205464010000000090046001600160701b03169086015283549251908501519192611684929091610a7a91906124ba565b82600001600082825461169791906144a2565b909155506116a7905089886124f4565b600083602001511180156116bf575060008160010154115b156118045760006116f66116e4856060015184600101546123f590919063ffffffff16565b85602001518082109182029115020190565b9050611721611716856060015186602001516124ba90919063ffffffff16565b600184015490611859565b600183015560a08401516117369082906124ba565b82600301600082825461174991906144a2565b92505081905550808461010001818151611763919061448a565b90525060208401805182919061177a9083906144a2565b90525060018201546040519081526001600160a01b038b16907f8113f59ef078158acce9021327489b70d6ab15d0c107c36455c3505248648df69060200160405180910390a2896001600160a01b0316600080516020614649833981519152836002015484600301546040516117fa929190918252602082015260400190565b60405180910390a2505b60208301511561190d5761186261182c8460a0015183600301546123f590919063ffffffff16565b6040850151835461183c916123f5565b6080860151600285015461184f916123f5565b61185991906144a2565b80821191030290565b60e084018190521561190d57600061188a8460e0015185602001518082109182029115020190565b9050808460200181815161189e91906144a2565b90525060a08401516118b19082906124ba565b8260030160008282546118c491906144a2565b9091555050600282015460038301546040516001600160a01b038d16926000805160206146498339815191529261190392918252602082015260400190565b60405180910390a2505b6000836020015111801561194157506001600160a01b038916600090815260a56020526040902054600160d81b900460ff16155b801561197557506001600160a01b0389166000908152609d6020526040812061196990611135565b6001600160a01b031614155b156119ee576000806119908b866020015187600001516128f9565b91509150808560000151116119a857600085526119be565b80856000018181516119ba91906144a2565b9052505b81856020018181516119d091906144a2565b905250610100850180518391906119e890839061448a565b90525050505b6119fd84846101000151612733565b602083015115611b79576000611a1c8a85602001518660000151612ae5565b90508360200151811015611aa157611a488460400151828660200151611a4291906144a2565b906124ba565b826000016000828254611a5b919061448a565b909155505081546040519081526001600160a01b038b16907f1cf8705a784a46d32023f3694b5e8149137d563085a870fde2f54a6cc5c59df79060200160405180910390a25b611acd611abb8560800151836124ba90919063ffffffff16565b83600201548082109182029115020190565b826002016000828254611ae091906144a2565b909155505060a08401516020850151611b0f91611afd91906124ba565b83600301548082109182029115020190565b826003016000828254611b2291906144a2565b9091555050600282015460038301546040516001600160a01b038d169260008051602061464983398151915292611b6192918252602082015260400190565b60405180910390a2611b77858560200151612cbd565b505b8154158015611b8a57506001820154155b15611bb4576001600160a01b038916600090815260a76020526040812054611bb4918991906128ac565b600182015482546040805189815260208101939093528201526001600160a01b03808b1691898216918b16907f7b417e520d2b905fc5a1689d29d329358dd55efc60ed115aa165b0a2b64232c6906060015b60405180910390a4505050505b5050505050565b6001600160a01b03858116600081815260a56020908152604080832054815160c081018352808301858152606082018690526080820186815260a083018790528286018d905289835287875260a486528487205464010000000090046001600160701b0316909152958552609e84528285208a88168652909352922060018101549384905291909316929115611de357611cc86114e8836040015184608001516123f590919063ffffffff16565b60a08301819052602083018051611ce09083906144a2565b9052506080820151604083015160a0840151611d019291610a7a91906124ba565b816001016000828254611d1491906144a2565b90915550506020820151600003611de357611d2f8887612d2d565b8054158015611d4057506001810154155b15611d6a576001600160a01b038816600090815260a76020526040812054611d6a91889190612edf565b611d7983898460a00151612f34565b611d8d6001600160a01b0384168689613032565b60018101548154604080518a815260208101939093528201526001600160a01b03808a1691878216918916907f378f9d375cd79e36c19c26a9e57791fe7cd5953b61986c01ebf980c0efb92801906060016115ff565b6001600160a01b038816600090815260a66020908152604080832060a2835292205460608501819052835491850151611e219291610a7a91906124ba565b826000016000828254611e3491906144a2565b90915550611e4490508988612d2d565b60008360200151118015611e585750805415155b15611f785760408301518154600091611e74916116e4916123f5565b9050611e9c611e94856040015186602001516124ba90919063ffffffff16565b835490611859565b82556060840151611eae9082906124ba565b826002016000828254611ec191906144a2565b92505081905550808460a001818151611eda919061448a565b905250602084018051829190611ef19083906144a2565b90525081546040519081526001600160a01b038b16907f1cf8705a784a46d32023f3694b5e8149137d563085a870fde2f54a6cc5c59df79060200160405180910390a2896001600160a01b031660008051602061464983398151915283600201548460030154604051611f6e929190918252602082015260400190565b60405180910390a2505b60008360200151118015611fac57506001600160a01b038916600090815260a56020526040902054600160d81b900460ff16155b8015611fe057506001600160a01b0389166000908152609b60205260408120611fd490611135565b6001600160a01b031614155b1561205857600080611ffb8b866020015187600001516130aa565b91509150808560000151116120135760008552612029565b808560000181815161202591906144a2565b9052505b818560200181815161203b91906144a2565b90525060a08501805183919061205290839061448a565b90525050505b60a08301511561207157612071848a8560a00151612f34565b60208301511561220d5760006120908a85602001518660000151613281565b9050836020015181101561213a576001600160a01b038a16600090815260a46020908152604090912054908501516120de91600160901b90046001600160701b031690611a429084906144a2565b8260010160008282546120f1919061448a565b909155505060018201546040519081526001600160a01b038b16907f8113f59ef078158acce9021327489b70d6ab15d0c107c36455c3505248648df69060200160405180910390a25b61215d8260020154610a7a866060015187602001516124ba90919063ffffffff16565b82600201600082825461217091906144a2565b909155505060038201546001600160a01b038b16600090815260a360205260409020546121a39190610a7a9084906124ba565b8260030160008282546121b691906144a2565b9091555050600282015460038301546040516001600160a01b038d1692600080516020614649833981519152926121f592918252602082015260400190565b60405180910390a261220b85856020015161344b565b505b815415801561221e57506001820154155b15612248576001600160a01b038916600090815260a7602052604081205461224891899190612edf565b61225c6001600160a01b038516878a613032565b60018201548254604080518b815260208101939093528201526001600160a01b03808b1691888216918a16907f378f9d375cd79e36c19c26a9e57791fe7cd5953b61986c01ebf980c0efb9280190606001611c06565b6000670de0b6b3a76400006122c885858561234b565b1015949350505050565b6000826122e06001846144a2565b815481106122f0576122f06144b9565b90600052602060002001905092915050565b6040518151600090819060208501865af4612334573d61232b5763037b81af60e11b8152600481fd5b3d6000823e3d81fd5b3d8152602081013d6000823e3d0160405292915050565b60408051606081018252600080825260208083018281528385018390526001600160a01b038816835260a09091529281205492839052917f5555555555555555555555555555555555555555555555555555555555555555166123b3576000199150506109a8565b60006123c28686866000613498565b905060008160600151116123d8576000196123eb565b606081015160408201516123eb91613919565b9695505050505050565b6000816b019d971e4fe8401e740000001904831182021561241557600080fd5b506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b60006040516323b872dd60e01b81528460048201528360248201528260448201526020600060648360008a5af13d15601f3d1160016000511416171691505080611c135760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b60448201526064016108b5565b600281046b033b2e3c9fd0803ce800000081190483111582026124dc57600080fd5b6b033b2e3c9fd0803ce8000000929092029091010490565b6001600160a01b038083166000818152609f60209081526040808320948616835293815283822060018101548154948452609d8352858420609c90935294832090949392612542838861394b565b90506000612550838961394b565b905061256d8883886098548861399b90949392919063ffffffff16565b6098546125819084908a908490899061399b565b85821415801561259b575060af546001600160a01b031615155b156127285760aa546001600160a01b038a8116600090815260a560205260408082205490516335ea6a7560e01b81529083166004820152909291909116906335ea6a759060240161018060405180830381865afa158015612600573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126249190614515565b610120015160af5460a9546040805163b1bf962d60e01b815290519394506001600160a01b039283169363a1a97fc193928316928e9287928a9284169163b1bf962d9160048083019260209291908290030181865afa15801561268b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126af919061441a565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015293851660248501529390911660448301526064820152608481019190915260a401600060405180830381600087803b15801561270e57600080fd5b505af1158015612722573d6000803e3d6000fd5b50505050505b505050505050505050565b80158061281a575060aa546040516335ea6a7560e01b81526001600160a01b038481166004830152909116906335ea6a759060240161018060405180830381865afa158015612786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127aa9190614515565b6101200151604051630ed1279f60e11b81523060048201526001600160a01b0390911690631da24f3e90602401602060405180830381865afa1580156127f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612818919061441a565b155b15612823575050565b60aa5460405163573ade8160e01b81526001600160a01b03848116600483015260248201849052600260448301523060648301529091169063573ade81906084016020604051808303816000875af1158015612883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a7919061441a565b505050565b80156128d5576001600160a01b038316600090815260a060205260409020805483179055505050565b6001600160a01b038316600090815260a06020526040902080548319169055505050565b6000808260000361290f57506000905080612add565b61293360405180606001604052806000815260200160008152602001600081525090565b6001600160a01b038616600081815260a46020908152604080832054600160901b90046001600160701b03168582015292825260a3905290812054825285815a90505b6000821180156129b157506001600160a01b0389166000908152609d602052604081206129a290611135565b9350836001600160a01b031614155b15612acf57865a82031015612acf576001600160a01b03808a166000908152609f602090815260408083209387168352929052819020600181015481549287015191929091612a0590610f789084906123f5565b60208801819052612a1690866144a2565b9450612a33876040015188602001516124ba90919063ffffffff16565b612a3d90836144a2565b87516020890151919350612a5191906124ba565b612a5b908261448a565b600184018390558084559050612a718c876124f4565b8b6001600160a01b0316866001600160a01b03167f0aec3812ec00f2d2f0eacc89fd13923091a68f30c3b3d0336e364544322b97588484604051612abf929190918252602082015260400190565b60405180910390a3505050612976565b81880395505a900393505050505b935093915050565b600081600003612af7575060006109a8565b612b1b60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b038516600081815260a4602090815260408083205464010000000090046001600160701b03168582015292825260a2905290812054825284815a90505b600082118015612b9a57506001600160a01b0388166000908152609a60205260408120612b8b90611135565b9350836001600160a01b031614155b15612cb057855a82031015612cb0576001600160a01b038089166000908152609e60209081526040808320938716835292905220600181015481548651612be690610f789083906123f5565b60208801819052612bf790866144a2565b9450612c14876040015188602001516124ba90919063ffffffff16565b612c1e908361448a565b87516020890151919350612c3291906124ba565b612c3c90826144a2565b600184018390558084559050612c528b87612d2d565b8a6001600160a01b0316866001600160a01b03167f76908587112671ab2dcd9323f0d9b27d193156f95fe5e1251411a151c20e82dd8484604051612ca0929190918252602082015260400190565b60405180910390a3505050612b5f565b5090940395945050505050565b60aa5460405163e8eda9df60e01b81526001600160a01b03848116600483015260248201849052306044830152600060648301529091169063e8eda9df906084015b600060405180830381600087803b158015612d1957600080fd5b505af1158015610fdd573d6000803e3d6000fd5b6001600160a01b038083166000818152609e60209081526040808320948616835293815283822060018101548154948452609b8352858420609a90935294832090949392612d7b838861394b565b90506000612d89838961394b565b9050612da68883886098548861399b90949392919063ffffffff16565b609854612dba9084908a908490899061399b565b858214158015612dd4575060af546001600160a01b031615155b156127285760af5460a9546040805163b1bf962d60e01b815290516001600160a01b039384169363a1a97fc1938116928d928f9289929084169163b1bf962d916004808201926020929091908290030181865afa158015612e39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5d919061441a565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015293851660248501529390911660448301526064820152608481019190915260a401600060405180830381600087803b158015612ebc57600080fd5b505af1158015612ed0573d6000803e3d6000fd5b50505050505050505050505050565b8015612f0c576001600160a01b038316600090815260a0602052604090208054600184901b179055505050565b6001600160a01b038316600090815260a0602052604090208054600184901b19169055505050565b6040516370a0823160e01b8152306004820152612fad906001600160a01b038416906370a0823190602401602060405180830381865afa158015612f7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa0919061441a565b8281108015840291020190565b60aa54604051631a4ca37b60e21b81526001600160a01b038681166004830152602482018490523060448301529293509116906369328dec906064016020604051808303816000875af1158015613008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302c919061441a565b50505050565b600060405163a9059cbb60e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061302c5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016108b5565b600080826000036130c057506000905080612add565b6130e460405180606001604052806000815260200160008152602001600081525090565b6001600160a01b038616600081815260a4602090815260408083205464010000000090046001600160701b03168582015292825260a2905290812054825285815a90505b60008211801561316357506001600160a01b0389166000908152609b6020526040812061315490611135565b9350836001600160a01b031614155b15612acf57865a82031015612acf576001600160a01b03808a166000908152609e6020908152604080832093871683529290528190206001810154815492870151919290916131b790610f789084906123f5565b602088018190526131c890866144a2565b94506131e5876040015188602001516124ba90919063ffffffff16565b6131ef90836144a2565b8751602089015191935061320391906124ba565b61320d908261448a565b6001840183905580845590506132238c87612d2d565b8b6001600160a01b0316866001600160a01b03167f76908587112671ab2dcd9323f0d9b27d193156f95fe5e1251411a151c20e82dd8484604051613271929190918252602082015260400190565b60405180910390a3505050613128565b600081600003613293575060006109a8565b6132b760405180606001604052806000815260200160008152602001600081525090565b6001600160a01b038516600081815260a46020908152604080832054600160901b90046001600160701b03168582015292825260a3905290812054825284815a90505b60008211801561333557506001600160a01b0388166000908152609c6020526040812061332690611135565b9350836001600160a01b031614155b15612cb057855a82031015612cb0576001600160a01b038089166000908152609f6020908152604080832093871683529290522060018101548154865161338190610f789083906123f5565b6020880181905261339290866144a2565b94506133af876040015188602001516124ba90919063ffffffff16565b6133b9908361448a565b875160208901519193506133cd91906124ba565b6133d790826144a2565b6001840183905580845590506133ed8b876124f4565b8a6001600160a01b0316866001600160a01b03167f0aec3812ec00f2d2f0eacc89fd13923091a68f30c3b3d0336e364544322b9758848460405161343b929190918252602082015260400190565b60405180910390a35050506132fa565b60aa5460405163a415bcad60e01b81526001600160a01b0384811660048301526024820184905260026044830152600060648301523060848301529091169063a415bcad9060a401612cff565b6134c36040518060800160405280600081526020016000815260200160008152602001600081525090565b60a85460408051631f94a27560e31b815290516000926001600160a01b03169163fca513a89160048083019260209291908290030181865afa15801561350d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135319190614359565b90506135736040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040805160c0810182526000808252818301818152606083018290526080830182905260a080840183905260a1546020808601919091526001600160a01b038d1684525292812054909252905b816020015181101561390d5760a181815481106135df576135df6144b9565b60009182526020808320909101546001600160a01b0316808552825260a7905260409081902054606084018190529083015161362191600181901b1716151590565b156138fd5781516001600160a01b03908116600090815260a560205260409081902054821660808501819052905163b3596f0760e01b815260048101919091529085169063b3596f0790602401602060405180830381865afa15801561368b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136af919061441a565b60a083015281516001600160a01b038981169116146136d35781516136d39061120e565b60aa54608083015160405163c44b11f760e01b81526001600160a01b03918216600482015261370f92919091169063c44b11f790602401610b74565b50808752604080880193909352606080880194909452600a0a6020870152508301519083015116156137685761375382600001518a8460a001518660200151613a60565b85606001818151613764919061448a565b9052505b60006137808360400151846060015160011b16151590565b156137d95761379d83600001518b8560a001518760200151613a84565b905080866000018181516137b1919061448a565b90525060608401516137c490829061131d565b866020018181516137d5919061448a565b9052505b82516001600160a01b038a811691161480156137f55750600087115b1561382d5761381884602001518460a00151896138129190614449565b90613aa6565b86606001818151613829919061448a565b9052505b801561385857604084015161384390829061131d565b86604001818151613854919061448a565b9052505b82516001600160a01b038a811691161480156138745750600088115b156138fb57600084602001518460a001518a6138909190614449565b61389a9190614468565b905080876000018181516138ae91906144a2565b90525060408501516138c190829061131d565b876040018181516138d291906144a2565b90525060608501516138e590829061131d565b876020018181516138f691906144a2565b905250505b505b61390681614602565b90506135c0565b50505050949350505050565b60028104670de0b6b3a7640000811904831115820261393757600080fd5b670de0b6b3a7640000929092029091010490565b6001600160a01b0381166000908152600283016020526040812054808203613977576000915050610859565b61398184826122d2565b54600160a01b90046001600160601b031691506108599050565b60006139a684613abe565b905060006139b384613abe565b600188015490915060006139c78286613b2a565b90508082146139d857600189018190555b826001600160601b0316846001600160601b03161461272857826001600160601b0316600003613a1257613a0d898986613b47565b612728565b836001600160601b0316600003613a2f57613a0d89898588613c1f565b826001600160601b0316846001600160601b03161015613a5557613a0d89898588613cee565b612728898985613d4b565b6000613a7b8284613a71888861127e565b6138129190614449565b95945050505050565b60008183613a928787611341565b613a9c9190614449565b613a7b9190614468565b600081613ab257600080fd5b50808206151591040190565b60006001600160601b03821115613b265760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b60648201526084016108b5565b5090565b60005b818310613b4057600183901c9250613b2d565b5090919050565b6001600160a01b03821660009081526002840160205260409020548354613b6f858383613d8a565b80856001015403613b9257600185018054906000613b8c8361461b565b91905055505b8454859080613ba357613ba3614632565b6000828152602080822083016000199081018390559092019092556001600160a01b0386168252600287019052604081205560018501548211611c1357613bea85836122d2565b546001600160601b03600160a01b90910481169084161115613c1557613c108583613e22565b611c13565b611c138583613f57565b6001600160a01b038316613c465760405163867915ab60e01b815260040160405180910390fd5b6040805180820182526001600160a01b038086168083526001600160601b0380871660208086019182528a5460018181018d5560008d815283812098519451909516600160a01b029390961692909217959091019490945588549181526002890190935292822083905580870154613cbd9161448a565b9050613cca868284613d8a565b613cd48682613f57565b613cde8184613b2a565b8660010181905550505050505050565b6001600160a01b0383166000908152600285016020526040902054613d1485828561401c565b600085600101546001613d27919061448a565b905080821015613d4057613d3b8683613f57565b610fdd565b613cca868284613d8a565b6001600160a01b0382166000908152600284016020526040902054613d7184828461401c565b60018460010154901c811161302c5761302c8482613e22565b808203613d9657505050565b6000613da284846122d2565b6040805180820190915290546001600160a01b0381168252600160a01b90046001600160601b0316602082015290506000613ddd85846122d2565b6040805180820190915290546001600160a01b0381168252600160a01b90046001600160601b031660208201529050613e1785858361406f565b611c1385848461406f565b60018201546000613e3384846122d2565b6040805180820190915290546001600160a01b0381168252600160a01b90046001600160601b031660208201819052909150600184901b5b838111613f4c576000613e7e87836122d2565b6040805180820190915290546001600160a01b0381168252600160a01b90046001600160601b03166020820152905084821015613f12576000613ec6886111ec85600161448a565b6040805180820190915290546001600160a01b03811682526001600160601b03600160a01b9091048116602080840182905285015192935091161015613f10578260010192508091505b505b8281602001516001600160601b03161115613f4057613f3287878361406f565b909450600185901b90613f46565b50613f4c565b50613e6b565b610fdd86868561406f565b6000613f6383836122d2565b60408051808201825291546001600160a01b0381168352600160a01b90046001600160601b0316602080840182905282518084019093526000808452908301529192505b600184118015613ff55750613fc085600186901c6122d2565b6040805180820190915290546001600160a01b0381168252600160a01b90046001600160601b03166020820181905290915082115b156140115761400585858361406f565b600184901c9350613fa7565b611c1385858561406f565b80836140296001856144a2565b81548110614039576140396144b9565b9060005260206000200160000160146101000a8154816001600160601b0302191690836001600160601b03160217905550505050565b808361407c6001856144a2565b8154811061408c5761408c6144b9565b600091825260208083208451948201516001600160601b0316600160a01b026001600160a01b03958616179201919091559251909116815260029093019052604090912055565b6001600160a01b038116811461112357600080fd5b6000602082840312156140fa57600080fd5b81356109a8816140d3565b80356004811061116257600080fd5b6000806040838503121561412757600080fd5b8235614132816140d3565b915061414060208401614105565b90509250929050565b60008060006060848603121561415e57600080fd5b8335614169816140d3565b925061417760208501614105565b91506040840135614187816140d3565b809150509250925092565b600080600080608085870312156141a857600080fd5b84356141b3816140d3565b935060208501356141c3816140d3565b925060408501356141d3816140d3565b9396929550929360600135925050565b600080604083850312156141f657600080fd5b8235614201816140d3565b91506020830135614211816140d3565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561425d5783516001600160a01b031683529284019291840191600101614238565b50909695505050505050565b60006020828403121561427b57600080fd5b5035919050565b600080600080600060a0868803121561429a57600080fd5b85356142a5816140d3565b94506020860135935060408601356142bc816140d3565b925060608601356142cc816140d3565b949793965091946080013592915050565b600080600080600060a086880312156142f557600080fd5b8535614300816140d3565b94506020860135614310816140d3565b93506040860135614320816140d3565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052602160045260246000fd5b8051611162816140d3565b60006020828403121561436b57600080fd5b81516109a8816140d3565b604051610180810167ffffffffffffffff811182821017156143a857634e487b7160e01b600052604160045260246000fd5b60405290565b6000602082840312156143c057600080fd5b6040516020810181811067ffffffffffffffff821117156143f157634e487b7160e01b600052604160045260246000fd5b6040529151825250919050565b60006020828403121561441057600080fd5b61085683836143ae565b60006020828403121561442c57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561446357614463614433565b500290565b60008261448557634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561449d5761449d614433565b500190565b6000828210156144b4576144b4614433565b500390565b634e487b7160e01b600052603260045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461116257600080fd5b805164ffffffffff8116811461116257600080fd5b805160ff8116811461116257600080fd5b6000610180828403121561452857600080fd5b614530614376565b61453a84846143ae565b8152614548602084016144cf565b6020820152614559604084016144cf565b604082015261456a606084016144cf565b606082015261457b608084016144cf565b608082015261458c60a084016144cf565b60a082015261459d60c084016144ef565b60c08201526145ae60e0840161434e565b60e08201526101006145c181850161434e565b908201526101206145d384820161434e565b908201526101406145e584820161434e565b908201526101606145f7848201614504565b908201529392505050565b60006001820161461457614614614433565b5060010190565b60008161462a5761462a614433565b506000190190565b634e487b7160e01b600052603160045260246000fdfeaa997145358327b99ccedf396e9b7719eb7999623af1a7b38605739996c2ccfaa2646970667358221220366d97f3a37c899716aee34eac3c2654a0901141ada996a04555fe79b3826af864736f6c634300080d0033