0 txs
1 call
constructor
No constructor.
functions
borrowShare
viewfunction borrowShare(address _silo, address _borrower) view returns (uint256)
calculateBorrowValue
viewfunction calculateBorrowValue(address _siloConfig, address _borrower) view returns (uint256 borrowValue)
calculateCollateralValue
viewfunction calculateCollateralValue(address _siloConfig, address _borrower) view returns (uint256 collateralValue)
collateralBalanceOfUnderlying
viewfunction collateralBalanceOfUnderlying(address _silo, address _borrower) view returns (uint256 borrowerCollateral)
collateralOnlyDeposits
viewfunction collateralOnlyDeposits(address _silo) view returns (uint256)
debtBalanceOfUnderlying
viewfunction debtBalanceOfUnderlying(address _silo, address _borrower) view returns (uint256)
getAPRs
viewfunction getAPRs(address[] _silos) view returns (tuple[] aprs)
getBorrowAmount
viewfunction getBorrowAmount(address _silo, address _borrower) view returns (uint256 maxRepay)
getBorrowAPR
viewfunction getBorrowAPR(address _silo) view returns (uint256 borrowAPR)
getDepositAmount
viewfunction getDepositAmount(address _silo, address _borrower) view returns (uint256 borrowerDeposits)
getDepositAPR
viewfunction getDepositAPR(address _silo) view returns (uint256 depositAPR)
getFeesAndFeeReceivers
viewfunction getFeesAndFeeReceivers(address _silo) view returns (address daoFeeReceiver, address deployerFeeReceiver, uint256 daoFee, uint256 deployerFee)
getInterestRateModel
viewfunction getInterestRateModel(address _silo) view returns (address irm)
getLt
viewfunction getLt(address _silo) view returns (uint256 lt)
getLtv
viewfunction getLtv(address _silo, address _borrower) view returns (uint256 ltv)
getMaxLtv
viewfunction getMaxLtv(address _silo) view returns (uint256 maxLtv)
getModel
viewfunction getModel(address _silo) view returns (address irm)
getOracleAddresses
viewfunction getOracleAddresses(address _silo) view returns (address solvencyOracle, address maxLtvOracle)
getRawLiquidity
viewfunction getRawLiquidity(address _silo) view returns (uint256 rawLiquidity)
getSiloIncentivesControllerProgramsNames
viewfunction getSiloIncentivesControllerProgramsNames(address _siloIncentivesController) view returns (string[] programsNames)
getUserLT
viewfunction getUserLT(address _silo, address _borrower) view returns (uint256 userLT)
getUserLTV
viewfunction getUserLTV(address _silo, address _borrower) view returns (uint256 userLTV)
getUsersHealth
viewfunction getUsersHealth(tuple[] _borrowers) view returns (tuple[] healths)
getUsersLT
viewfunction getUsersLT(tuple[] _borrowers) view returns (uint256[] usersLTs)
getUtilization
viewfunction getUtilization(address _silo) view returns (uint256 utilization)
hasPosition
viewfunction hasPosition(address _siloConfig, address _borrower) view returns (bool has)
inDebt
viewfunction inDebt(address _siloConfig, address _borrower) view returns (bool hasDebt)
isSolvent
viewfunction isSolvent(address _silo, address _borrower) view returns (bool)
liquidity
viewfunction liquidity(address _silo) view returns (uint256)
maxLiquidation
viewfunction maxLiquidation(address _silo, address _hook, address _borrower) view returns (uint256 collateralToLiquidate, uint256 debtToRepay, bool sTokenRequired, bool fullLiquidation)
protocolFees
viewfunction protocolFees(address _silo) view returns (uint256 daoAndDeployerRevenue)
totalBorrowAmount
viewfunction totalBorrowAmount(address _silo) view returns (uint256)
totalBorrowAmountWithInterest
viewfunction totalBorrowAmountWithInterest(address _silo) view returns (uint256 amount)
totalBorrowShare
viewfunction totalBorrowShare(address _silo) view returns (uint256)
totalDeposits
viewfunction totalDeposits(address _silo) view returns (uint256 totalDepositsAmount)
totalDepositsWithInterest
viewfunction totalDepositsWithInterest(address _silo) view returns (uint256 amount)
events
No events.
errors
InvalidAsset
error InvalidAsset()
StringsInsufficientHexLength
error StringsInsufficientHexLength(uint256 value, uint256 length)
creation bytecode
0x6080604052348015600e575f5ffd5b50613e328061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610212575f3560e01c80638705c3591161011f578063d9bd0ea2116100a9578063e940325611610079578063e940325614610532578063f2a07bc914610545578063f45b1b3a14610558578063f5125d3f146102fc578063fdce86431461056b575f5ffd5b8063d9bd0ea2146102e9578063dcf844a7146104f9578063dd718ab41461050c578063e21872181461051f575f5ffd5b8063aab2353a116100ef578063aab2353a14610445578063b1696c6e14610480578063b1ff4d6c146104a0578063b8c876b1146104b3578063bac2aba6146104c6575f5ffd5b80638705c359146103ec5780638ec109da146103ff5780639848b19c146104125780639bbafd5314610432575f5ffd5b8063480defa9116101a05780635d1e7c2f116101705780635d1e7c2f14610380578063647e0c20146103a05780636c15c9ba146103b357806374cd15f3146103c6578063868682cb146103d9575f5ffd5b8063480defa91461030f5780634f6a57b61461032f57806354a0577114610342578063590630f01461036d575f5ffd5b806324bc00b0116101e657806324bc00b0146102a057806336e49658146102c357806337febff4146102d657806338bad5e5146102e957806343afdad2146102fc575f5ffd5b8062e0f7a01461021657806306b39a771461023c5780631fe022691461024f578063249a649614610262575b5f5ffd5b61022961022436600461335c565b61057e565b6040519081526020015b60405180910390f35b61022961024a36600461335c565b61058e565b61022961025d366004613377565b6105ef565b61027561027036600461335c565b610601565b604080516001600160a01b039586168152949093166020850152918301526060820152608001610233565b6102b36102ae366004613377565b61061e565b6040519015158152602001610233565b6102296102d136600461335c565b610629565b6102296102e436600461335c565b610673565b6102296102f7366004613377565b61067d565b61022961030a366004613377565b6106e9565b61032261031d3660046133ae565b6106f4565b604051610233919061341d565b61022961033d36600461335c565b6107d0565b61035561035036600461335c565b6107da565b6040516001600160a01b039091168152602001610233565b6102b361037b366004613377565b6107e4565b61039361038e366004613474565b61084f565b60405161023391906134d3565b6102296103ae36600461335c565b61092f565b6102296103c1366004613377565b610939565b6102296103d436600461335c565b610944565b6102296103e7366004613377565b610981565b6102b36103fa366004613377565b6109e1565b61022961040d366004613377565b6109ec565b6104256104203660046133ae565b6109ff565b604051610233919061351f565b61022961044036600461335c565b610ab1565b610458610453366004613556565b610adf565b6040805194855260208501939093529015159183019190915215156060820152608001610233565b61049361048e36600461335c565b610bd2565b604051610233919061359e565b6102296104ae36600461335c565b610d46565b6102296104c136600461335c565b610d50565b6104d96104d436600461335c565b610d8d565b604080516001600160a01b03938416815292909116602083015201610233565b61022961050736600461335c565b610e72565b61022961051a366004613377565b610ee8565b61035561052d36600461335c565b610efb565b61022961054036600461335c565b610fd2565b61022961055336600461335c565b611001565b610229610566366004613377565b61100b565b61022961057936600461335c565b61109c565b5f61058882611135565b92915050565b5f816001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105889190613622565b5f6105fa8383611279565b9392505050565b5f5f5f5f61060e85611370565b5092989197509550909350915050565b5f6105fa8383611524565b60405163b6d821c760e01b81525f906001600160a01b0383169063b6d821c7906106589060029060040161364d565b602060405180830381865afa1580156105cb573d5f5f3e3d5ffd5b5f61058882611973565b604051635f30114960e01b81526001600160a01b0382811660048301525f9190841690635f301149906024015b602060405180830381865afa1580156106c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fa9190613622565b5f6105fa8383611a4a565b6060816001600160401b0381111561070e5761070e613667565b60405190808252806020026020018201604052801561075257816020015b604080518082019091525f808252602082015281526020019060019003908161072c5790505b5090505f5b828110156107c9575f8484838181106107725761077261367b565b90506040020180360381019061078891906136e8565b90505f83838151811061079d5761079d61367b565b602002602001015190506107b8825f01518360200151611bc5565b825260209091015250600101610757565b5092915050565b5f61058882611d08565b5f61058882610efb565b6040516338b51ce160e01b81526001600160a01b0382811660048301525f91908416906338b51ce190602401602060405180830381865afa15801561082b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fa919061375a565b6060816001600160401b0381111561086957610869613667565b6040519080825280602002602001820160405280156108ad57816020015b604080518082019091525f80825260208201528152602001906001900390816108875790505b5090505f5b828110156107c9575f8484838181106108cd576108cd61367b565b90506020020160208101906108e2919061335c565b905060405180604001604052806108f883611d08565b815260200161090683611135565b81525083838151811061091b5761091b61367b565b6020908102919091010152506001016108b2565b5f61058882611f03565b5f6105fa8383611fda565b5f816001600160a01b031663ecd658b46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105cb573d5f5f3e3d5ffd5b60405163c99ee7b760e01b81526001600160a01b038084166004830152821660248201525f9073cf6de11db2ce2a927811d23f15b49a3bc4c5d90d9063c99ee7b790604401602060405180830381865af41580156106c5573d5f5f3e3d5ffd5b5f6105fa8383612288565b5f6109f78383612388565b949350505050565b6060816001600160401b03811115610a1957610a19613667565b604051908082528060200260200182016040528015610a42578160200160208202803683370190505b5090505f5b828110156107c9575f848483818110610a6257610a6261367b565b905060400201803603810190610a7891906136e8565b9050610a8b815f01518260200151611279565b838381518110610a9d57610a9d61367b565b602090810291909101015250600101610a47565b60405163b6d821c760e01b81525f906001600160a01b0383169063b6d821c79061065890849060040161364d565b6040516317a05b0960e31b81526001600160a01b0382811660048301525f9182918291829187169063bd02d84890602401606060405180830381865afa158015610b2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4f9190613773565b604051635f30114960e01b81526001600160a01b03898116600483015293975091955093505f91891690635f30114990602401602060405180830381865afa158015610b9d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc19190613622565b905083811491505093509350935093565b60605f8290505f816001600160a01b031663fb71aec56040518163ffffffff1660e01b81526004015f60405180830381865afa158015610c14573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c3b91908101906137a6565b905080516001600160401b03811115610c5657610c56613667565b604051908082528060200260200182016040528015610c8957816020015b6060815260200190600190039081610c745790505b5092505f5b8151811015610d3e575f828281518110610caa57610caa61367b565b60200260200101519050610cbd816124c5565b15610cfd575f610ccc826138ca565b60601c9050610cda8161256c565b868481518110610cec57610cec61367b565b602002602001018190525050610d35565b828281518110610d0f57610d0f61367b565b6020026020010151858381518110610d2957610d2961367b565b60200260200101819052505b50600101610c8e565b505050919050565b5f61058882612582565b5f816001600160a01b0316630910a5106040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105cb573d5f5f3e3d5ffd5b5f5f5f836001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dcc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df0919061391d565b60405163e48a5f7b60e01b81526001600160a01b038681166004830152919091169063e48a5f7b9060240161022060405180830381865afa158015610e37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5b9190613a5b565b90508060e001519250806101000151915050915091565b5f816001600160a01b0316639d35abaf6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610eaf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed39190613a8c565b50506001600160c01b03909216949350505050565b5f610ef38383612388565b509392505050565b5f816001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f38573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5c919061391d565b60405163e48a5f7b60e01b81526001600160a01b038481166004830152919091169063e48a5f7b9060240161022060405180830381865afa158015610fa3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc79190613a5b565b610120015192915050565b60405163b6d821c760e01b81525f906001600160a01b0383169063b6d821c7906106589060019060040161364d565b5f6105888261268e565b6040516370a0823160e01b81526001600160a01b0382811660048301525f9190841690634cdad5069082906370a0823190602401602060405180830381865afa15801561105a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107e9190613622565b6040518263ffffffff1660e01b81526004016106aa91815260200190565b5f5f826001600160a01b0316639ef2fda06040518163ffffffff1660e01b8152600401606060405180830381865afa1580156110da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110fe9190613ae3565b80519091501561112f578051602082015161112290670de0b6b3a764000090613b55565b61112c9190613b80565b91505b50919050565b5f5f826001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611173573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611197919061391d565b60405163e48a5f7b60e01b81526001600160a01b038581166004830152919091169063e48a5f7b9060240161022060405180830381865afa1580156111de573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112029190613a5b565b61012001516040516364efe17760e01b81526001600160a01b038581166004830152426024830152919250908216906364efe17790604401602060405180830381865afa158015611255573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112c9190613622565b5f5f5f846001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112dc919061391d565b6040516394c0527d60e01b81526001600160a01b03868116600483015291909116906394c0527d9060240161044060405180830381865afa158015611323573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113479190613b93565b604081015191935091506001600160a01b0316156113685781610160015192505b505092915050565b5f5f5f5f5f856001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d5919061391d565b604051630509af0560e51b81526001600160a01b038881166004830152919091169063a135e0a090602401608060405180830381865afa15801561141b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061143f9190613bc8565b9050809350819450829550505050856001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611489573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ad919061391d565b604051630c0d053960e11b81526001600160a01b038881166004830152919091169063181a0a72906024016040805180830381865afa1580156114f2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115169190613c08565b909790965092945090925090565b5f5f5f846001600160a01b031663aecc90cb6040518163ffffffff1660e01b81526004016040805180830381865afa158015611562573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115869190613c08565b60405163e48a5f7b60e01b81526001600160a01b0380841660048301529294509092505f9187169063e48a5f7b9060240161022060405180830381865afa1580156115d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f79190613a5b565b60405163e48a5f7b60e01b81526001600160a01b0384811660048301529192505f9188169063e48a5f7b9060240161022060405180830381865afa158015611641573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116659190613a5b565b60a08301516040516370a0823160e01b81526001600160a01b0389811660048301529293509116906370a0823190602401602060405180830381865afa1580156116b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d59190613622565b156116e7576001945050505050610588565b60808201516040516370a0823160e01b81526001600160a01b038881166004830152909116906370a0823190602401602060405180830381865afa158015611731573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117559190613622565b15611767576001945050505050610588565b60a08101516040516370a0823160e01b81526001600160a01b038881166004830152909116906370a0823190602401602060405180830381865afa1580156117b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d59190613622565b156117e7576001945050505050610588565b60808101516040516370a0823160e01b81526001600160a01b038881166004830152909116906370a0823190602401602060405180830381865afa158015611831573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118559190613622565b15611867576001945050505050610588565b60c08201516040516370a0823160e01b81526001600160a01b038881166004830152909116906370a0823190602401602060405180830381865afa1580156118b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d59190613622565b156118e7576001945050505050610588565b60c08101516040516370a0823160e01b81526001600160a01b038881166004830152909116906370a0823190602401602060405180830381865afa158015611931573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119559190613622565b15611967576001945050505050610588565b505f9695505050505050565b5f816001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119d4919061391d565b60405163e48a5f7b60e01b81526001600160a01b038481166004830152919091169063e48a5f7b9060240161022060405180830381865afa158015611a1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3f9190613a5b565b610160015192915050565b5f5f5f846001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a89573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aad919061391d565b6040516394c0527d60e01b81526001600160a01b03868116600483015291909116906394c0527d9060240161044060405180830381865afa158015611af4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b189190613b93565b604081015191935091506001600160a01b03161561136857611bbc8282865f60018660c001516001600160a01b03166370a082318b6040518263ffffffff1660e01b8152600401611b7891906001600160a01b0391909116815260200190565b602060405180830381865afa158015611b93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb79190613622565b61276f565b95945050505050565b5f5f5f5f856001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c29919061391d565b6040516394c0527d60e01b81526001600160a01b03878116600483015291909116906394c0527d9060240161044060405180830381865afa158015611c70573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c949190613b93565b604081015191935091506001600160a01b031615611cff57611cf48282875f60018660c001516001600160a01b03166370a082318c6040518263ffffffff1660e01b8152600401611b7891906001600160a01b0391909116815260200190565b935081610160015192505b50509250929050565b5f5f826001600160a01b031663a1ff9bee6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d46573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d6a9190613622565b9050805f03611d7b57505f92915050565b5f836001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ddc919061391d565b60405163e48a5f7b60e01b81526001600160a01b038681166004830152919091169063e48a5f7b9060240161022060405180830381865afa158015611e23573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e479190613a5b565b905081846001600160a01b031663ecd658b46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e86573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eaa9190613622565b611eb386611135565b611ebd9190613b55565b611ec79190613b80565b60208201518251919450670de0b6b3a764000091611ee59083613c35565b611eef9190613c35565b611ef99085613b55565b6109f79190613b80565b5f816001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f40573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f64919061391d565b60405163e48a5f7b60e01b81526001600160a01b038481166004830152919091169063e48a5f7b9060240161022060405180830381865afa158015611fab573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fcf9190613a5b565b610140015192915050565b5f5f5f846001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612019573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203d919061391d565b604051630483b24f60e41b81526001600160a01b038781166004830152919091169063483b24f090602401606060405180830381865afa158015612083573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120a79190613c48565b506040516370a0823160e01b81526001600160a01b0387811660048301529294509092505f918416906370a0823190602401602060405180830381865afa1580156120f4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121189190613622565b6040516370a0823160e01b81526001600160a01b0387811660048301529192505f918416906370a0823190602401602060405180830381865afa158015612161573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121859190613622565b905081156121fd5760405163a7d6e44b60e01b81526001600160a01b0388169063a7d6e44b906121bb9085905f90600401613c87565b602060405180830381865afa1580156121d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121fa9190613622565b94505b801561227e5760405163a7d6e44b60e01b81526001600160a01b0388169063a7d6e44b90612232908490600190600401613c87565b602060405180830381865afa15801561224d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122719190613622565b61227b9086613cab565b94505b5050505092915050565b6040516394c0527d60e01b81526001600160a01b0382811660048301525f9182918516906394c0527d9060240161044060405180830381865afa1580156122d1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122f59190613b93565b60c08101519092506001600160a01b031615801591506109f7575060c08101516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa15801561235a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237e9190613622565b1515949350505050565b6040516394c0527d60e01b81526001600160a01b0382811660048301525f918291829182918716906394c0527d9060240161044060405180830381865afa1580156123d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123f99190613b93565b606082015191935091506001600160a01b031661241d575f5f9350935050506124be565b60c08101516040516370a0823160e01b81526001600160a01b0380881660048301525f9261249f92869286928b92879260019216906370a0823190602401602060405180830381865afa158015612476573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061249a9190613622565b6127c6565b90506124b48184606001518460600151612a43565b5090955093505050505b9250929050565b5f81516014146124d657505f919050565b5f6124e0836138ca565b60601c90506124ee81612a99565b515f036124fd57505f92915050565b6040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa92505050801561255d575060408051601f3d908101601f1916820190925261255a91810190613622565b60015b1561112f575060019392505050565b60606105886001600160a01b0383166014612abf565b5f5f826001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125e4919061391d565b604051630483b24f60e41b81526001600160a01b038581166004830152919091169063483b24f090602401606060405180830381865afa15801561262a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061264e9190613c48565b92505050806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611255573d5f5f3e3d5ffd5b5f610588826001600160a01b031663b6d821c760016040518263ffffffff1660e01b81526004016126bf919061364d565b602060405180830381865afa1580156126da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126fe9190613622565b60405163b6d821c760e01b81526001600160a01b0385169063b6d821c79061272b9060029060040161364d565b602060405180830381865afa158015612746573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276a9190613622565b612c34565b5f815f0361277e57505f6127bc565b5f61278d8888888888886127c6565b905080608001515f036127a3575f9150506127bc565b6127b68189606001518960600151612a43565b93505050505b9695505050505050565b6128056040518060a001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f81526020015f81525090565b85606001516001600160a01b031687606001516001600160a01b03161461286f57600184600181111561283a5761283a613639565b1461284e578660e001518660e0015161285b565b8661010001518661010001515b6001600160a01b0390811660208401521681525b5f5f6128808960800151885f612c4c565b80935081925050505f5f8a604001516001600160a01b031663ffbaaf7a6040518163ffffffff1660e01b81526004016040805180830381865afa1580156128c9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ed9190613cbe565b915091506128fe8382865f5f612d34565b604086015260a08b0151612913908a5f612c4c565b94509250600187600181111561292b5761292b613639565b146129365781612952565b6129528b604001518c61012001518d5f01518e60200151612d6f565b91506129628383865f6001612d34565b606086015260c08a0151612977908a88612c4c565b945092505f600188600181111561299057612990613639565b14612a0a578a604001516001600160a01b031663b6d821c760026040518263ffffffff1660e01b81526004016129c6919061364d565b602060405180830381865afa1580156129e1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a059190613622565b612a1d565b612a1d8b604001518c6101200151612e65565b9050612a2e84828760016002612d34565b608087015250939a9950505050505050505050565b5f5f5f612a51868686612f58565b909350915082158015612a62575081155b15612a7457505f915081905080612a90565b825f03612a8357505f19612a90565b612a8d82846130ae565b90505b93509350939050565b60408051603f833b908101601f1916820190925281815290805f60208401853c50919050565b6060825f612ace846002613b55565b612ad9906002613cab565b6001600160401b03811115612af057612af0613667565b6040519080825280601f01601f191660200182016040528015612b1a576020820181803683370190505b509050600360fc1b815f81518110612b3457612b3461367b565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110612b6257612b6261367b565b60200101906001600160f81b03191690815f1a9053505f612b84856002613b55565b612b8f906001613cab565b90505b6001811115612c06576f181899199a1a9b1b9c1cb0b131b232b360811b83600f1660108110612bc357612bc361367b565b1a60f81b828281518110612bd957612bd961367b565b60200101906001600160f81b03191690815f1a90535060049290921c91612bff81613ce0565b9050612b92565b5081156109f75760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b5f828211612c44578183036105fa565b5f9392505050565b5f5f825f03612cc65760405163dce5c2db60e01b81526001600160a01b03858116600483015286169063dce5c2db906024016040805180830381865afa158015612c98573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cbc9190613cbe565b9092509050612d2c565b829150846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d299190613622565b90505b935093915050565b5f5f5f612d428787866130c4565b91509150815f03612d57578792505050611bbc565b612d638882848861311f565b98975050505050505050565b6040516367efe7fd60e11b81526001600160a01b0385811660048301524260248301525f91829186169063cfdfcffa90604401602060405180830381865afa925050508015612ddb575060408051601f3d908101601f19168201909252612dd891810190613622565b60015b15612de35790505b5f5f876001600160a01b03166339c5c5056040518163ffffffff1660e01b81526004016040805180830381865afa158015612e20573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e449190613cbe565b91509150612e558282858989613161565b50919a9950505050505050505050565b6040516367efe7fd60e11b81526001600160a01b0383811660048301524260248301525f91829184169063cfdfcffa90604401602060405180830381865afa925050508015612ed1575060408051601f3d908101601f19168201909252612ece91810190613622565b60015b15612ed95790505b60405163b6d821c760e01b8152612f4f906001600160a01b0386169063b6d821c790612f0a9060029060040161364d565b602060405180830381865afa158015612f25573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f499190613622565b826131bb565b50949350505050565b5f5f5f85606001518660400151612f6f9190613cab565b905080156130015785516001600160a01b0316612f8c5780612ffe565b85516040516313b0be3360e01b8152600481018390526001600160a01b038781166024830152909116906313b0be3390604401602060405180830381865afa158015612fda573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ffe9190613622565b92505b6080860151156130a55760208601516001600160a01b03166130275785608001516130a2565b602086015160808701516040516313b0be3360e01b815260048101919091526001600160a01b038681166024830152909116906313b0be3390604401602060405180830381865afa15801561307e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130a29190613622565b91505b50935093915050565b5f6105fa83670de0b6b3a764000084600161311f565b5f5f835f036130d1575f94505b60028360028111156130e5576130e5613639565b14613110576130f66003600a613dd0565b6131009085613cab565b61310b866001613cab565b613113565b83855b90969095509350505050565b5f61314c61312c83613203565b801561314757505f848061314257613142613b6c565b868809115b151590565b61315786868661322f565b611bbc9190613cab565b5f5f5f5f61316f88886131bb565b909350905085850161318a8282670de0b6b3a76400006132ec565b92505f6131978484613c35565b90508a19818110156131a7578091505b818c01965050505095509550955095915050565b5f808315806131c8575082155b156131d757508290505f6124be565b6131ea8484670de0b6b3a76400006132ec565b90508084019150838210156124be575091925f92509050565b5f600282600381111561321857613218613639565b6132229190613ddb565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f036132635783828161325957613259613b6c565b04925050506105fa565b80841161328157613281841561327a576011613334565b6012613334565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f835f036132fb57505f6105fa565b508282028284828161330f5761330f613b6c565b041461331c57505f6105fa565b81818161332b5761332b613b6c565b04949350505050565b634e487b715f52806020526024601cfd5b6001600160a01b0381168114613359575f5ffd5b50565b5f6020828403121561336c575f5ffd5b81356105fa81613345565b5f5f60408385031215613388575f5ffd5b823561339381613345565b915060208301356133a381613345565b809150509250929050565b5f5f602083850312156133bf575f5ffd5b82356001600160401b038111156133d4575f5ffd5b8301601f810185136133e4575f5ffd5b80356001600160401b038111156133f9575f5ffd5b8560208260061b840101111561340d575f5ffd5b6020919091019590945092505050565b602080825282518282018190525f918401906040840190835b818110156134695761345383855180518252602090810151910152565b6020939093019260409290920191600101613436565b509095945050505050565b5f5f60208385031215613485575f5ffd5b82356001600160401b0381111561349a575f5ffd5b8301601f810185136134aa575f5ffd5b80356001600160401b038111156134bf575f5ffd5b8560208260051b840101111561340d575f5ffd5b602080825282518282018190525f918401906040840190835b818110156134695761350983855180518252602090810151910152565b60209390930192604092909201916001016134ec565b602080825282518282018190525f918401906040840190835b81811015613469578351835260209384019390920191600101613538565b5f5f5f60608486031215613568575f5ffd5b833561357381613345565b9250602084013561358381613345565b9150604084013561359381613345565b809150509250925092565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561361657603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f830116880101965050506020820191506020840193506001810190506135c4565b50929695505050505050565b5f60208284031215613632575f5ffd5b5051919050565b634e487b7160e01b5f52602160045260245ffd5b602081016003831061366157613661613639565b91905290565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b60405161022081016001600160401b03811182821017156136b2576136b2613667565b60405290565b604051601f8201601f191681016001600160401b03811182821017156136e0576136e0613667565b604052919050565b5f60408284031280156136f9575f5ffd5b50604080519081016001600160401b038111828210171561371c5761371c613667565b604052823561372a81613345565b8152602083013561373a81613345565b60208201529392505050565b80518015158114613755575f5ffd5b919050565b5f6020828403121561376a575f5ffd5b6105fa82613746565b5f5f5f60608486031215613785575f5ffd5b83516020850151909350915061379d60408501613746565b90509250925092565b5f602082840312156137b6575f5ffd5b81516001600160401b038111156137cb575f5ffd5b8201601f810184136137db575f5ffd5b80516001600160401b038111156137f4576137f4613667565b8060051b613804602082016136b8565b9182526020818401810192908101908784111561381f575f5ffd5b6020850192505b838310156138bf5782516001600160401b03811115613843575f5ffd5b8501603f81018913613853575f5ffd5b60208101516001600160401b0381111561386f5761386f613667565b613882601f8201601f19166020016136b8565b8181526040838301018b1015613896575f5ffd5b8160408401602083015e5f60208383010152808552505050602082019150602083019250613826565b979650505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015613916576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b5f6020828403121561392d575f5ffd5b81516105fa81613345565b805161375581613345565b5f6102208284031215613954575f5ffd5b61395c61368f565b8251815260208084015190820152905061397860408301613938565b604082015261398960608301613938565b606082015261399a60808301613938565b60808201526139ab60a08301613938565b60a08201526139bc60c08301613938565b60c08201526139cd60e08301613938565b60e08201526139df6101008301613938565b6101008201526139f26101208301613938565b6101208201526101408281015190820152610160808301519082015261018080830151908201526101a080830151908201526101c08083015190820152613a3c6101e08301613938565b6101e0820152613a4f6102008301613746565b61020082015292915050565b5f6102208284031215613a6c575f5ffd5b6105fa8383613943565b80516001600160401b0381168114613755575f5ffd5b5f5f5f5f5f60a08688031215613aa0575f5ffd5b85516001600160c01b0381168114613ab6575f5ffd5b9450613ac460208701613a76565b6040870151606088015160809098015196999198509695945092505050565b5f6060828403128015613af4575f5ffd5b50604051606081016001600160401b0381118282101715613b1757613b17613667565b60409081528351825260208085015190830152613b35908401613a76565b60408201529392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761058857610588613b41565b634e487b7160e01b5f52601260045260245ffd5b5f82613b8e57613b8e613b6c565b500490565b5f5f6104408385031215613ba5575f5ffd5b613baf8484613943565b9150613bbf846102208501613943565b90509250929050565b5f5f5f5f60808587031215613bdb575f5ffd5b84516020860151604087015160608801519296509094509250613bfd81613345565b939692955090935050565b5f5f60408385031215613c19575f5ffd5b8251613c2481613345565b60208401519092506133a381613345565b8181038181111561058857610588613b41565b5f5f5f60608486031215613c5a575f5ffd5b8351613c6581613345565b6020850151909350613c7681613345565b604085015190925061359381613345565b8281526040810160028310613c9e57613c9e613639565b8260208301529392505050565b8082018082111561058857610588613b41565b5f5f60408385031215613ccf575f5ffd5b505080516020909101519092909150565b5f81613cee57613cee613b41565b505f190190565b6001815b6001841115612d2c57808504811115613d1457613d14613b41565b6001841615613d2257908102905b60019390931c928002613cf9565b5f82613d3e57506001610588565b81613d4a57505f610588565b8160018114613d605760028114613d6a57613d86565b6001915050610588565b60ff841115613d7b57613d7b613b41565b50506001821b610588565b5060208310610133831016604e8410600b8410161715613da9575081810a610588565b613db55f198484613cf5565b805f1904821115613dc857613dc8613b41565b029392505050565b5f6105fa8383613d30565b5f60ff831680613ded57613ded613b6c565b8060ff8416069150509291505056fea2646970667358221220bb30380e5456aa2185e8d498afa4d3ded3ca91ad919c0f70bc3255f0a93af26a64736f6c634300081c0033