0 txs
0 calls
constructor
constructor(address addressesProvider, address augustusRegistry, address balancerVault, address initialOwner)
functions
ADDRESSES_PROVIDER
viewfunction ADDRESSES_PROVIDER() view returns (address)
AMOUNT_IN_OFFSET
viewfunction AMOUNT_IN_OFFSET() view returns (uint256)
AUGUSTUS_REGISTRY
viewfunction AUGUSTUS_REGISTRY() view returns (address)
BALANCER_VAULT
viewfunction BALANCER_VAULT() view returns (address)
calculateLeveragedDebtAmount
viewfunction calculateLeveragedDebtAmount(address user, address collateralAsset, address debtAsset, address additionalDepositAsset, uint256 additionalDepositAmount, uint256 resultHealthFactor, uint256 slippagePercentage) view returns (uint256, uint256, uint256)
owner
viewfunction owner() view returns (address)
POOL
viewfunction POOL() view returns (address)
enableAssetAsCollateral
nonpayablefunction enableAssetAsCollateral(address asset)
executeOperation
nonpayablefunction executeOperation(address[] assets, uint256[] amounts, uint256[] premiums, address initiator, bytes params) returns (bool)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
performLeverage
nonpayablefunction performLeverage(tuple performLeverageParams)
performPermitForERC20
nonpayablefunction performPermitForERC20(address token, tuple permitData)
performPermitForVToken
nonpayablefunction performPermitForVToken(address underlyingToken, tuple permitData)
receiveFlashLoan
nonpayablefunction receiveFlashLoan(address[] tokens, uint256[] amounts, uint256[] feeAmounts, bytes userData)
renounceOwnership
nonpayablefunction renounceOwnership()
rescueEth
nonpayablefunction rescueEth()
rescueTokens
nonpayablefunction rescueTokens(address token)
setEMode
nonpayablefunction setEMode(uint8 categoryId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Swapped
event Swapped(address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
FailedCall
error FailedCall()
FromAmountOutOfRange
error FromAmountOutOfRange(uint256 callDataLength)
InitiatorMustBeThisContract
error InitiatorMustBeThisContract()
InsufficientAmountOut
error InsufficientAmountOut(uint256 amountOutActual, uint256 amountOutMin)
InvalidAugustus
error InvalidAugustus(address augustus)
InvalidReserveIndex
error InvalidReserveIndex()
NativeTokenTransferFailed
error NativeTokenTransferFailed(bytes errorData)
NoBalancerInNetwork
error NoBalancerInNetwork()
NotAllowedSender
error NotAllowedSender()
NotZeroFlashLoanPremium
error NotZeroFlashLoanPremium(uint256 premium)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
ResultHealthFactorIsLessThanHealthFactorLiquidationThreshold
error ResultHealthFactorIsLessThanHealthFactorLiquidationThreshold(uint256 resultHealthFactor)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SlippagePercentageIsTooBig
error SlippagePercentageIsTooBig(uint256 slippagePercentage)
WrongFlashLoanSource
error WrongFlashLoanSource()
ZeroAddress
error ZeroAddress()
creation bytecode
0x610100604052348015610010575f5ffd5b5060405161443938038061443983398101604081905261002f91610232565b828482848282806001600160a01b03811661006457604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006d816101cc565b506001600160a01b0382166100955760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821660808190526040805163026b1d5f60e01b8152905163026b1d5f916004808201926020929091908290030181865afa1580156100dd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610101919061028e565b6001600160a01b0390811660a0526001805592831660c052505083163b158061018b575060405163fb04e17b60e01b81525f60048201526001600160a01b0384169063fb04e17b90602401602060405180830381865afa158015610167573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061018b91906102b0565b156101b457604051630411b82d60e01b81526001600160a01b038416600482015260240161005b565b50506001600160a01b031660e052506102cf92505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461022f575f5ffd5b50565b5f5f5f5f60808587031215610245575f5ffd5b84516102508161021b565b60208601519094506102618161021b565b60408601519093506102728161021b565b60608601519092506102838161021b565b939692955090935050565b5f6020828403121561029e575f5ffd5b81516102a98161021b565b9392505050565b5f602082840312156102c0575f5ffd5b815180151581146102a9575f5ffd5b60805160a05160c05160e0516140576103e25f395f81816101a30152612df001525f81816102c9015281816105d80152818161063f01526114c201525f8181610200015281816103e601528181610448015281816106b801528181610736015281816108fb015281816110d00152818161115501528181611822015281816118b10152818161196a01528181611b0701528181611bbd01528181611c4901528181611d0b01528181611f5d01528181611fa0015281816120860152818161210f0152818161228c015281816124ae0152818161254d0152818161294e01528181612ab601528181612b1201528181612b9701528181612cca0152612d0601525f81816101390152610ac701526140575ff3fe608060405234801561000f575f5ffd5b506004361061011b575f3560e01c8063897ae8bb116100a9578063b94e11c61161006e578063b94e11c6146102b1578063bc163846146102c4578063ce31a06b146102eb578063f04f2707146102f3578063f2fde38b14610306575f5ffd5b8063897ae8bb146102355780638da5cb5b14610248578063920f5c8414610258578063ac9650d81461027b578063b4366edc1461029b575f5ffd5b80633a829867116100ef5780633a8298671461019e5780636bece92b146101c5578063715018a6146101f35780637535d246146101fb5780637b87321814610222575f5ffd5b8062ae3bf81461011f5780630542975c1461013457806324aeca64146101785780632b52ee9d1461018b575b5f5ffd5b61013261012d366004612fb5565b610319565b005b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101326101863660046130fa565b6103af565b6101326101993660046131e1565b6107c9565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b6101d86101d336600461325d565b6107d8565b6040805193845260208401929092529082015260600161016f565b610132611098565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b6101326102303660046131e1565b6110ab565b610132610243366004612fb5565b61113f565b5f546001600160a01b031661015b565b61026b61026636600461334c565b611149565b604051901515815260200161016f565b61028e61028936600461342a565b61133b565b60405161016f9190613496565b6102a3606481565b60405190815260200161016f565b6101326102bf3660046134f9565b611421565b61015b7f000000000000000000000000000000000000000000000000000000000000000081565b61013261142b565b61013261030136600461359b565b6114b7565b610132610314366004612fb5565b61166f565b6103216116a9565b6103ac6103355f546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610377573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039b91906136b0565b6001600160a01b03841691906116d5565b50565b60a0810151156104ba576103e133308360a0015184608001516001600160a01b0316611739909392919063ffffffff16565b6104277f00000000000000000000000000000000000000000000000000000000000000008260a0015183608001516001600160a01b03166117729092919063ffffffff16565b608081015160a082015160405163617ba03760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263617ba0379261047f9233905f906004016136c7565b5f604051808303815f87803b158015610496575f5ffd5b505af11580156104a8573d5f5f3e3d5ffd5b505050506104ba338260800151611801565b5f6040518060a00160405280336001600160a01b031681526020018360c001516001600160a01b031681526020018360e0015181526020018360600151815260200183610100015181525060405160200161051591906136f4565b60408051601f19818403018152600180845283830190925292505f91906020808301908036833750506040805160018082528183019092529293505f929150602080830190803683370190505090508360200151825f8151811061057b5761057b61374e565b60200260200101906001600160a01b031690816001600160a01b031681525050836060015184604001516105af9190613776565b815f815181106105c1576105c161374e565b602090810291909101015283516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116036106ac5783516001600160a01b031661062857604051630ee8358160e11b815260040160405180910390fd5b604051632e1c224f60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c38449e9061067a9030908690869089906004016137fc565b5f604051808303815f87803b158015610691575f5ffd5b505af11580156106a3573d5f5f3e3d5ffd5b505050506107c3565b83516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169116036107aa576040805160018082528183019092525f91602080830190803683370190505090505f815f815181106107145761071461374e565b602090810291909101015260405163ab9c4b5d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ab9c4b5d9061077790309087908790879084908c905f90600401613850565b5f604051808303815f87803b15801561078e575f5ffd5b505af11580156107a0573d5f5f3e3d5ffd5b50505050506107c3565b60405163e03f58c360e01b815260040160405180910390fd5b50505050565b6107d43383836119c7565b5050565b5f5f5f670de0b6b3a7640000851161080b576040516389851e0960e01b8152600481018690526024015b60405180910390fd5b6101f4841061083357604051600162041a0d60e21b0319815260048101859052602401610802565b6108dc6040518061030001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f6001600160a01b031681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b604051632fe4a15f60e21b81526001600160a01b038c811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063bf92857c9060240160c060405180830381865afa158015610940573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096491906138d5565b6080870181905260608701919091526040860191909152602085019290925250908252861061099c575f5f5f9350935093505061108b565b6040805160028082526060820183525f926020830190803683370190505090508a815f815181106109cf576109cf61374e565b60200260200101906001600160a01b031690816001600160a01b0316815250508881600181518110610a0357610a0361374e565b60200260200101906001600160a01b031690816001600160a01b0316815250505f5f610a2f8e84611a54565b91509150815f81518110610a4557610a4561374e565b60200260200101518460c0018181525050805f81518110610a6857610a6861374e565b60200260200101518460a001818152505081600181518110610a8c57610a8c61374e565b60200260200101518461010001818152505080600181518110610ab157610ab161374e565b60200260200101518460e00181815250505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b21573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b459190613926565b6001600160a01b03908116610120830181905260405163b3596f0760e01b8152918a1660048301529063b3596f0790602401602060405180830381865afa158015610b92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb691906136b0565b81610140018181525050876001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bfc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c209190613941565b610c2b90600a613a3f565b6101608201819052610140820151610c44908990613a4d565b610c4e9190613a64565b610180820152612710610c618682613a83565b8260a00151610c709190613a4d565b610c8290670de0b6b3a7640000613a4d565b610c8c9190613a64565b610c9887612710613a4d565b610ca29190613a83565b6020820151610cb19088613a4d565b610cbd90612710613a4d565b8261018001518360e00151610cd29190613a4d565b83516040850151610ce39190613a4d565b610ced9190613776565b610cff90670de0b6b3a7640000613a4d565b610d099190613a83565b610d139190613a64565b6101a0820152612710610d268682613a83565b826101a00151610d369190613a4d565b610d409190613a64565b6101c08201526101008101516101808201516305f5e10091610d6191613a4d565b8260c00151836101c00151610d769190613a4d565b83516060850151610d879190613a4d565b610d919190613776565b610d9b9190613776565b610da7906126ac613a4d565b610db19190613a64565b6101e08201526101a08101516020820151610dcc9190613776565b816101e001511015610e1f578060c00151816101e00151826101a001518360200151610df89190613776565b610e029190613a83565b610e0e90612710613a4d565b610e189190613a64565b6102008201525b61012081015160405163b3596f0760e01b81526001600160a01b038b811660048301529091169063b3596f0790602401602060405180830381865afa158015610e6a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e8e91906136b0565b81610240018181525050886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef89190613941565b610f0390600a613a3f565b61026082018190526102408201516101a08301519091610f239190613a4d565b610f2d9190613a64565b61022082015261012081015160405163b3596f0760e01b81526001600160a01b038c811660048301529091169063b3596f0790602401602060405180830381865afa158015610f7e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa291906136b0565b816102c0018181525050896001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100c9190613941565b61101790600a613a3f565b6102e082018190526102c08201516101c083015190916110379190613a4d565b6110419190613a64565b6102808201526102c08101516102008201516102e08301516110639190613a4d565b61106d9190613a64565b6102a082018190526102808201516102209092015190945090925090505b9750975097945050505050565b6110a06116a9565b6110a95f611eae565b565b6040516301b2848560e51b81526001600160a01b0383811660048301526107d49133917f0000000000000000000000000000000000000000000000000000000000000000169063365090a090602401602060405180830381865afa158015611115573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111399190613926565b83611efd565b6103ac3382611801565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111935760405163cf62cd9760e01b815260040160405180910390fd5b6001600160a01b03841630146111bc576040516356af165560e11b815260040160405180910390fd5b85855f8181106111ce576111ce61374e565b905060200201355f146112105785855f8181106111ed576111ed61374e565b905060200201356040516357ee236d60e11b815260040161080291815260200190565b5f61121d83850185613a96565b90506112d6604051806101000160405280336001600160a01b03168152602001835f01516001600160a01b0316815260200183602001516001600160a01b03168152602001836040015181526020018d8d5f81811061127e5761127e61374e565b90506020020160208101906112939190612fb5565b6001600160a01b031681526020018b8b5f8181106112b3576112b361374e565b905060200201358152602001836060015181526020018360800151815250611f58565b61132a338a8a5f8181106112ec576112ec61374e565b905060200201358d8d5f8181106113055761130561374e565b905060200201602081019061131a9190612fb5565b6001600160a01b03169190611772565b5060019a9950505050505050505050565b604080515f815260208101909152606090826001600160401b0381111561136457611364612fd0565b60405190808252806020026020018201604052801561139757816020015b60608152602001906001900390816113825790505b5091505f5b83811015611418576113f3308686848181106113ba576113ba61374e565b90506020028101906113cc9190613b3a565b856040516020016113df93929190613b93565b60405160208183030381529060405261241b565b8382815181106114055761140561374e565b602090810291909101015260010161139c565b50505b92915050565b6103ac338261248d565b6114336116a9565b5f5f6114465f546001600160a01b031690565b6001600160a01b0316476040515f6040518083038185875af1925050503d805f811461148d576040519150601f19603f3d011682016040523d82523d5f602084013e611492565b606091505b5091509150816107d4578060405163f649713b60e01b81526004016108029190613ba8565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115005760405163cf62cd9760e01b815260040160405180910390fd5b815f815181106115125761151261374e565b60200260200101515f1461155657815f815181106115325761153261374e565b60200260200101516040516357ee236d60e11b815260040161080291815260200190565b5f8180602001905181019061156b9190613c0e565b9050611618604051806101000160405280336001600160a01b03168152602001835f01516001600160a01b0316815260200183602001516001600160a01b0316815260200183604001518152602001875f815181106115cc576115cc61374e565b60200260200101516001600160a01b03168152602001865f815181106115f4576115f461374e565b60200260200101518152602001836060015181526020018360800151815250611f58565b61166833855f8151811061162e5761162e61374e565b6020026020010151875f815181106116485761164861374e565b60200260200101516001600160a01b03166116d59092919063ffffffff16565b5050505050565b6116776116a9565b6001600160a01b0381166116a057604051631e4fbdf760e01b81525f6004820152602401610802565b6103ac81611eae565b5f546001600160a01b031633146110a95760405163118cdaa760e01b8152336004820152602401610802565b6040516001600160a01b0383811660248301526044820183905261173491859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506125aa565b505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526107c39186918216906323b872dd90608401611702565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526117c38482612616565b6107c3576040516001600160a01b0384811660248301525f60448301526117f791869182169063095ea7b390606401611702565b6107c384826125aa565b604051634417a58360e01b81526001600160a01b0383811660048301525f917f000000000000000000000000000000000000000000000000000000000000000090911690634417a58390602401602060405180830381865afa158015611869573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188d9190613ce3565b6040516335ea6a7560e01b81526001600160a01b0384811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa1580156118f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061191b9190613d38565b90506119388160e0015161ffff168361265f90919063ffffffff16565b6107c357604051634b959afd60e11b81526001600160a01b0384811660048301526001602483015285811660448301527f0000000000000000000000000000000000000000000000000000000000000000169063972b35fa906064015f604051808303815f87803b1580156119ab575f5ffd5b505af11580156119bd573d5f5f3e3d5ffd5b5050505050505050565b80602001515f036119d757505050565b816001600160a01b031663d505accf8430845f015185602001518660400151876060015188608001516040518863ffffffff1660e01b8152600401611a229796959493929190613e62565b5f604051808303815f87803b158015611a39575f5ffd5b505af1925050508015611a4a575060015b1561173457505050565b805160609081905f816001600160401b03811115611a7457611a74612fd0565b604051908082528060200260200182016040528015611a9d578160200160208202803683370190505b5090505f826001600160401b03811115611ab957611ab9612fd0565b604051908082528060200260200182016040528015611ae2578160200160208202803683370190505b5060405163eddf1b7960e01b81526001600160a01b0389811660048301529192505f917f0000000000000000000000000000000000000000000000000000000000000000169063eddf1b7990602401602060405180830381865afa158015611b4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7091906136b0565b6040805160a0810182525f80825260208201819052918101829052606080820183905260808201529192509060ff831615611cbf5760405163583b8edd60e11b815260ff841660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b0771dba90602401602060405180830381865afa158015611c0a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c2e9190613ea3565b604051636c6f6ae160e01b815260ff851660048201529092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636c6f6ae1906024015f60405180830381865afa158015611c95573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611cbc9190810190613ebc565b90505b5f5b86811015611e9b575f8a8281518110611cdc57611cdc61374e565b60209081029190910101516040516335ea6a7560e01b81526001600160a01b0380831660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906335ea6a75906024016101e060405180830381865afa158015611d51573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d759190613d38565b90505f5f611dab835f01515161ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b50505091509150805f03611dc25750505050611e93565b5f60ff891615801590611de25750611de2888560e0015161ffff16612692565b90508215611e3b578015611e1b57865f015161ffff168b8781518110611e0a57611e0a61374e565b602002602001018181525050611e3b565b828b8781518110611e2e57611e2e61374e565b6020026020010181815250505b8015611e6d57866020015161ffff168a8781518110611e5c57611e5c61374e565b602002602001018181525050611e8d565b818a8781518110611e8057611e8061374e565b6020026020010181815250505b50505050505b600101611cc1565b50939650919450505050505b9250929050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80602001515f03611f0d57505050565b816001600160a01b0316630b52d5588430845f015185602001518660400151876060015188608001516040518863ffffffff1660e01b8152600401611a229796959493929190613e62565b611f9e7f00000000000000000000000000000000000000000000000000000000000000008260a0015183608001516001600160a01b03166117729092919063ffffffff16565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663617ba03782608001518360a0015184602001515f6040518563ffffffff1660e01b8152600401611ffc94939291906136c7565b5f604051808303815f87803b158015612013575f5ffd5b505af1158015612025573d5f5f3e3d5ffd5b5050505061203b81602001518260800151611801565b60408082015160608301516020840151925163a415bcad60e01b81526001600160a01b0392831660048201526024810191909152600260448201525f606482015291811660848301527f0000000000000000000000000000000000000000000000000000000000000000169063a415bcad9060a4015f604051808303815f87803b1580156120c7575f5ffd5b505af11580156120d9573d5f5f3e3d5ffd5b505050505f8160c001515f1461239b57608082015160405163cff027d960e01b81526001600160a01b0391821660048201525f917f0000000000000000000000000000000000000000000000000000000000000000169063cff027d990602401602060405180830381865afa158015612154573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121789190613926565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156121bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121e391906136b0565b602085015160c08601516040516323b872dd60e01b81526001600160a01b03928316600482015230602482015260448101919091529192508316906323b872dd906064016020604051808303815f875af1158015612243573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122679190613f82565b5060808401516040516370a0823160e01b81523060048201525f916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116926369328dec92918691908816906370a0823190602401602060405180830381865afa1580156122df573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230391906136b0565b61230d9190613a83565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201523060448201526064016020604051808303815f875af115801561235b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237f91906136b0565b9050808560a001516123919190613a83565b93505050506123a2565b5060a08101515b5f5f6123c1846040015185608001518660600151868860e001516126cb565b9150915083606001518210156123f3576123f384604001518386606001516123e99190613a83565b8660200151612924565b828111156107c3575f6124068483613a83565b90506116688560800151828760200151612cb2565b60605f5f846001600160a01b0316846040516124379190613fa1565b5f60405180830381855af49150503d805f811461246f576040519150601f19603f3d011682016040523d82523d5f602084013e612474565b606091505b5091509150612484858383612d55565b95945050505050565b60405163eddf1b7960e01b81526001600160a01b0383811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063eddf1b7990602401602060405180830381865afa1580156124f5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061251991906136b0565b90508160ff168114611734576040516312e81a0560e21b815260ff831660048201526001600160a01b0384811660248301527f00000000000000000000000000000000000000000000000000000000000000001690634ba06814906044015b5f604051808303815f87803b15801561258f575f5ffd5b505af11580156125a1573d5f5f3e3d5ffd5b50505050505050565b5f5f60205f8451602086015f885af1806125c9576040513d5f823e3d81fd5b50505f513d915081156125e05780600114156125ed565b6001600160a01b0384163b155b156107c357604051635274afe760e01b81526001600160a01b0385166004820152602401610802565b5f5f5f5f60205f8651602088015f8a5af192503d91505f519050828015612655575081156126475780600114612655565b5f866001600160a01b03163b115b9695505050505050565b5f60808210612681576040516385e98beb60e01b815260040160405180910390fd5b509051600191821b82011c16151590565b5f608082106126b4576040516385e98beb60e01b815260040160405180910390fd5b506001600160801b0391909116901c600116151590565b6040516370a0823160e01b81523060048201525f90819081906001600160a01b038816906370a0823190602401602060405180830381865afa158015612713573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061273791906136b0565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038a16906370a0823190602401602060405180830381865afa15801561277e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a291906136b0565b90506127b18989898989612db4565b6040516370a0823160e01b815230600482015282906001600160a01b038a16906370a0823190602401602060405180830381865afa1580156127f5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061281991906136b0565b6128239190613a83565b9250858310156128505760405163126c3c7360e21b81526004810184905260248101879052604401610802565b6040516370a0823160e01b81523060048201526001600160a01b038a16906370a0823190602401602060405180830381865afa158015612892573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128b691906136b0565b6128c09082613a83565b9350876001600160a01b0316896001600160a01b03167fa078c4190abe07940190effc1846be0ccf03ad6007bc9e93f9697d0b460befbb8686604051612910929190918252602082015260400190565b60405180910390a350509550959350505050565b6002821115612c42576040516301b2848560e51b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063365090a090602401602060405180830381865afa158015612995573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129b99190613926565b604051630ed1279f60e11b81526001600160a01b0384811660048301529192505f91831690631da24f3e90602401602060405180830381865afa158015612a02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a2691906136b0565b9050805f03612aa75760405163a9059cbb60e01b81526001600160a01b0384811660048301526024820186905286169063a9059cbb906044016020604051808303815f875af1158015612a7b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a9f9190613f82565b505050505050565b612adb6001600160a01b0386167f000000000000000000000000000000000000000000000000000000000000000086611772565b60405163573ade8160e01b81526001600160a01b038681166004830152602482018690526002604483015284811660648301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063573ade81906084016020604051808303815f875af1158015612b5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b7e91906136b0565b905084811015612a9f57612bbc6001600160a01b0387167f00000000000000000000000000000000000000000000000000000000000000005f611772565b6001600160a01b03861663a9059cbb85612bd68489613a83565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015612c1e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a19190613f82565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303815f875af1158015612c8e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c39190613f82565b6002821115612d4157612cef6001600160a01b0384167f000000000000000000000000000000000000000000000000000000000000000084611772565b60405163617ba03760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063617ba03790612578908690869086905f906004016136c7565b6117346001600160a01b03841682846116d5565b606082612d6a57612d6582612f68565b612dad565b8151158015612d8157506001600160a01b0384163b155b15612daa57604051639996b31560e01b81526001600160a01b0385166004820152602401610802565b50805b9392505050565b5f81806020019051810190612dc99190613fac565b602081015160405163fb04e17b60e01b81526001600160a01b0391821660048201529192507f0000000000000000000000000000000000000000000000000000000000000000169063fb04e17b90602401602060405180830381865afa158015612e35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e599190613f82565b612e87576020810151604051630411b82d60e01b81526001600160a01b039091166004820152602401610802565b6020810151612ea1906001600160a01b0388169086611772565b80518051612eb190602090613a83565b60641115815190612ed85760405163080e19e960e41b815260040161080291815260200190565b508460206064018201525f82602001516001600160a01b031682604051612eff9190613fa1565b5f604051808303815f865af19150503d805f8114612f38576040519150601f19603f3d011682016040523d82523d5f602084013e612f3d565b606091505b5050905080612f4e573d5f5f3e3d5ffd5b60208301516119bd906001600160a01b038a16905f611772565b805115612f785780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b03811681146103ac575f5ffd5b8035612fb081612f91565b919050565b5f60208284031215612fc5575f5ffd5b8135612dad81612f91565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b038111828210171561300757613007612fd0565b60405290565b60405160a081016001600160401b038111828210171561300757613007612fd0565b6040516101e081016001600160401b038111828210171561300757613007612fd0565b604051601f8201601f191681016001600160401b038111828210171561307a5761307a612fd0565b604052919050565b5f6001600160401b0382111561309a5761309a612fd0565b50601f01601f191660200190565b5f82601f8301126130b7575f5ffd5b81356130ca6130c582613082565b613052565b8181528460208386010111156130de575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561310a575f5ffd5b81356001600160401b0381111561311f575f5ffd5b82016101208185031215613131575f5ffd5b613139612fe4565b61314282612fa5565b815261315060208301612fa5565b6020820152604082810135908201526060808301359082015261317560808301612fa5565b608082015260a0828101359082015261319060c08301612fa5565b60c082015260e082810135908201526101008201356001600160401b038111156131b8575f5ffd5b6131c4868285016130a8565b61010083015250949350505050565b60ff811681146103ac575f5ffd5b5f5f82840360c08112156131f3575f5ffd5b83356131fe81612f91565b925060a0601f1982011215613211575f5ffd5b5061321a61300d565b60208481013582526040850135908201526060840135613239816131d3565b6040820152608084810135606083015260a090940135938101939093525092909150565b5f5f5f5f5f5f5f60e0888a031215613273575f5ffd5b873561327e81612f91565b9650602088013561328e81612f91565b9550604088013561329e81612f91565b945060608801356132ae81612f91565b9699959850939660808101359560a0820135955060c0909101359350915050565b5f5f83601f8401126132df575f5ffd5b5081356001600160401b038111156132f5575f5ffd5b6020830191508360208260051b8501011115611ea7575f5ffd5b5f5f83601f84011261331f575f5ffd5b5081356001600160401b03811115613335575f5ffd5b602083019150836020828501011115611ea7575f5ffd5b5f5f5f5f5f5f5f5f5f60a08a8c031215613364575f5ffd5b89356001600160401b03811115613379575f5ffd5b6133858c828d016132cf565b909a5098505060208a01356001600160401b038111156133a3575f5ffd5b6133af8c828d016132cf565b90985096505060408a01356001600160401b038111156133cd575f5ffd5b6133d98c828d016132cf565b90965094505060608a01356133ed81612f91565b925060808a01356001600160401b03811115613407575f5ffd5b6134138c828d0161330f565b915080935050809150509295985092959850929598565b5f5f6020838503121561343b575f5ffd5b82356001600160401b03811115613450575f5ffd5b61345c858286016132cf565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156134ed57603f198786030184526134d8858351613468565b945060209384019391909101906001016134bc565b50929695505050505050565b5f60208284031215613509575f5ffd5b8135612dad816131d3565b5f6001600160401b0382111561352c5761352c612fd0565b5060051b60200190565b5f82601f830112613545575f5ffd5b81356135536130c582613514565b8082825260208201915060208360051b860101925085831115613574575f5ffd5b602085015b83811015613591578035835260209283019201613579565b5095945050505050565b5f5f5f5f608085870312156135ae575f5ffd5b84356001600160401b038111156135c3575f5ffd5b8501601f810187136135d3575f5ffd5b80356135e16130c582613514565b8082825260208201915060208360051b850101925089831115613602575f5ffd5b6020840193505b8284101561362d57833561361c81612f91565b825260209384019390910190613609565b965050505060208501356001600160401b0381111561364a575f5ffd5b61365687828801613536565b93505060408501356001600160401b03811115613671575f5ffd5b61367d87828801613536565b92505060608501356001600160401b03811115613698575f5ffd5b6136a4878288016130a8565b91505092959194509250565b5f602082840312156136c0575f5ffd5b5051919050565b6001600160a01b03948516815260208101939093529216604082015261ffff909116606082015260800190565b6020815260018060a01b03825116602082015260018060a01b03602083015116604082015260408201516060820152606082015160808201525f608083015160a08084015261374660c0840182613468565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561141b5761141b613762565b5f8151808452602084019350602083015f5b828110156137c25781516001600160a01b031686526020958601959091019060010161379b565b5093949350505050565b5f8151808452602084019350602083015f5b828110156137c25781518652602095860195909101906001016137de565b6001600160a01b03851681526080602082018190525f9061381f90830186613789565b828103604084015261383181866137cc565b905082810360608401526138458185613468565b979650505050505050565b6001600160a01b038816815260e0602082018190525f9061387390830189613789565b828103604084015261388581896137cc565b9050828103606084015261389981886137cc565b6001600160a01b038716608085015283810360a085015290506138bc8186613468565b91505061ffff831660c083015298975050505050505050565b5f5f5f5f5f5f60c087890312156138ea575f5ffd5b50508451602086015160408701516060880151608089015160a090990151939a929950909790965094509092509050565b8051612fb081612f91565b5f60208284031215613936575f5ffd5b8151612dad81612f91565b5f60208284031215613951575f5ffd5b8151612dad816131d3565b6001815b60018411156139975780850481111561397b5761397b613762565b600184161561398957908102905b60019390931c928002613960565b935093915050565b5f826139ad5750600161141b565b816139b957505f61141b565b81600181146139cf57600281146139d9576139f5565b600191505061141b565b60ff8411156139ea576139ea613762565b50506001821b61141b565b5060208310610133831016604e8410600b8410161715613a18575081810a61141b565b613a245f19848461395c565b805f1904821115613a3757613a37613762565b029392505050565b5f612dad60ff84168361399f565b808202811582820484141761141b5761141b613762565b5f82613a7e57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561141b5761141b613762565b5f60208284031215613aa6575f5ffd5b81356001600160401b03811115613abb575f5ffd5b820160a08185031215613acc575f5ffd5b613ad461300d565b8135613adf81612f91565b81526020820135613aef81612f91565b6020820152604082810135908201526060808301359082015260808201356001600160401b03811115613b20575f5ffd5b613b2c868285016130a8565b608083015250949350505050565b5f5f8335601e19843603018112613b4f575f5ffd5b8301803591506001600160401b03821115613b68575f5ffd5b602001915036819003821315611ea7575f5ffd5b5f81518060208401855e5f93019283525090919050565b828482375f8382015f81526126558185613b7c565b602081525f612dad6020830184613468565b5f613bc76130c584613082565b9050828152838383011115613bda575f5ffd5b8282602083015e5f602084830101529392505050565b5f82601f830112613bff575f5ffd5b612dad83835160208501613bba565b5f60208284031215613c1e575f5ffd5b81516001600160401b03811115613c33575f5ffd5b820160a08185031215613c44575f5ffd5b613c4c61300d565b8151613c5781612f91565b81526020820151613c6781612f91565b6020820152604082810151908201526060808301519082015260808201516001600160401b03811115613c98575f5ffd5b613b2c86828501613bf0565b5f60208284031215613cb4575f5ffd5b604051602081016001600160401b0381118282101715613cd657613cd6612fd0565b6040529151825250919050565b5f60208284031215613cf3575f5ffd5b612dad8383613ca4565b80516001600160801b0381168114612fb0575f5ffd5b805164ffffffffff81168114612fb0575f5ffd5b805161ffff81168114612fb0575f5ffd5b5f6101e0828403128015613d4a575f5ffd5b50613d5361302f565b613d5d8484613ca4565b8152613d6b60208401613cfd565b6020820152613d7c60408401613cfd565b6040820152613d8d60608401613cfd565b6060820152613d9e60808401613cfd565b6080820152613daf60a08401613cfd565b60a0820152613dc060c08401613d13565b60c0820152613dd160e08401613d27565b60e0820152613de3610100840161391b565b610100820152613df6610120840161391b565b610120820152613e09610140840161391b565b610140820152613e1c610160840161391b565b610160820152613e2f6101808401613cfd565b610180820152613e426101a08401613cfd565b6101a0820152613e556101c08401613cfd565b6101c08201529392505050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b5f60208284031215613eb3575f5ffd5b612dad82613cfd565b5f60208284031215613ecc575f5ffd5b81516001600160401b03811115613ee1575f5ffd5b820160a08185031215613ef2575f5ffd5b613efa61300d565b613f0382613d27565b8152613f1160208301613d27565b6020820152613f2260408301613d27565b60408201526060820151613f3581612f91565b606082015260808201516001600160401b03811115613f52575f5ffd5b80830192505084601f830112613f66575f5ffd5b613f7585835160208501613bba565b6080820152949350505050565b5f60208284031215613f92575f5ffd5b81518015158114612dad575f5ffd5b5f612dad8284613b7c565b5f60208284031215613fbc575f5ffd5b81516001600160401b03811115613fd1575f5ffd5b820160408185031215613fe2575f5ffd5b604080519081016001600160401b038111828210171561400457614004612fd0565b60405281516001600160401b0381111561401c575f5ffd5b61402886828501613bf0565b8252506020820151915061403b82612f91565b6020810191909152939250505056fea164736f6c634300081b000a000000000000000000000000e20fcbdbffc4dd138ce8b2e6fbb6cb49777ad64d0000000000000000000000007e31b336f9e8ba52ba3c4ac861b033ba90900bb3000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c8000000000000000000000000de95ef02810c4da6411dba60252f46f35083eb31