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
0x6080604052348015600e575f5ffd5b506140ae8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610212575f3560e01c80638705c3591161011f578063d9bd0ea2116100a9578063e940325611610079578063e940325614610532578063f2a07bc914610545578063f45b1b3a14610558578063f5125d3f146102fc578063fdce86431461056b575f5ffd5b8063d9bd0ea2146102e9578063dcf844a7146104f9578063dd718ab41461050c578063e21872181461051f575f5ffd5b8063aab2353a116100ef578063aab2353a14610445578063b1696c6e14610480578063b1ff4d6c146104a0578063b8c876b1146104b3578063bac2aba6146104c6575f5ffd5b80638705c359146103ec5780638ec109da146103ff5780639848b19c146104125780639bbafd5314610432575f5ffd5b8063480defa9116101a05780635d1e7c2f116101705780635d1e7c2f14610380578063647e0c20146103a05780636c15c9ba146103b357806374cd15f3146103c6578063868682cb146103d9575f5ffd5b8063480defa91461030f5780634f6a57b61461032f57806354a0577114610342578063590630f01461036d575f5ffd5b806324bc00b0116101e657806324bc00b0146102a057806336e49658146102c357806337febff4146102d657806338bad5e5146102e957806343afdad2146102fc575f5ffd5b8062e0f7a01461021657806306b39a771461023c5780631fe022691461024f578063249a649614610262575b5f5ffd5b6102296102243660046135bc565b61057e565b6040519081526020015b60405180910390f35b61022961024a3660046135bc565b61058e565b61022961025d3660046135d7565b6105ef565b6102756102703660046135bc565b610601565b604080516001600160a01b039586168152949093166020850152918301526060820152608001610233565b6102b36102ae3660046135d7565b61061e565b6040519015158152602001610233565b6102296102d13660046135bc565b610629565b6102296102e43660046135bc565b610673565b6102296102f73660046135d7565b61067d565b61022961030a3660046135d7565b6106e9565b61032261031d36600461360e565b6106f4565b604051610233919061367d565b61022961033d3660046135bc565b6107d0565b6103556103503660046135bc565b6107da565b6040516001600160a01b039091168152602001610233565b6102b361037b3660046135d7565b6107e4565b61039361038e3660046136d4565b61084f565b6040516102339190613733565b6102296103ae3660046135bc565b61092f565b6102296103c13660046135d7565b610939565b6102296103d43660046135bc565b610944565b6102296103e73660046135d7565b610981565b6102b36103fa3660046135d7565b6109e1565b61022961040d3660046135d7565b6109ec565b61042561042036600461360e565b6109ff565b604051610233919061377f565b6102296104403660046135bc565b610ab1565b6104586104533660046137b6565b610adf565b6040805194855260208501939093529015159183019190915215156060820152608001610233565b61049361048e3660046135bc565b610e32565b60405161023391906137fe565b6102296104ae3660046135bc565b610fa6565b6102296104c13660046135bc565b610fb0565b6104d96104d43660046135bc565b610fed565b604080516001600160a01b03938416815292909116602083015201610233565b6102296105073660046135bc565b6110d2565b61022961051a3660046135d7565b611148565b61035561052d3660046135bc565b61115b565b6102296105403660046135bc565b611232565b6102296105533660046135bc565b611261565b6102296105663660046135d7565b61126b565b6102296105793660046135bc565b6112fc565b5f61058882611395565b92915050565b5f816001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105889190613882565b5f6105fa83836114d9565b9392505050565b5f5f5f5f61060e856115d0565b5092989197509550909350915050565b5f6105fa8383611784565b60405163b6d821c760e01b81525f906001600160a01b0383169063b6d821c790610658906002906004016138c1565b602060405180830381865afa1580156105cb573d5f5f3e3d5ffd5b5f61058882611bd3565b604051635f30114960e01b81526001600160a01b0382811660048301525f9190841690635f301149906024015b602060405180830381865afa1580156106c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fa9190613882565b5f6105fa8383611caa565b6060816001600160401b0381111561070e5761070e6138cf565b60405190808252806020026020018201604052801561075257816020015b604080518082019091525f808252602082015281526020019060019003908161072c5790505b5090505f5b828110156107c9575f848483818110610772576107726138e3565b9050604002018036038101906107889190613950565b90505f83838151811061079d5761079d6138e3565b602002602001015190506107b8825f01518360200151611e25565b825260209091015250600101610757565b5092915050565b5f61058882611f68565b5f6105888261115b565b6040516338b51ce160e01b81526001600160a01b0382811660048301525f91908416906338b51ce190602401602060405180830381865afa15801561082b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105fa91906139c2565b6060816001600160401b03811115610869576108696138cf565b6040519080825280602002602001820160405280156108ad57816020015b604080518082019091525f80825260208201528152602001906001900390816108875790505b5090505f5b828110156107c9575f8484838181106108cd576108cd6138e3565b90506020020160208101906108e291906135bc565b905060405180604001604052806108f883611f68565b815260200161090683611395565b81525083838151811061091b5761091b6138e3565b6020908102919091010152506001016108b2565b5f61058882612163565b5f6105fa838361223a565b5f816001600160a01b031663ecd658b46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105cb573d5f5f3e3d5ffd5b60405163c99ee7b760e01b81526001600160a01b038084166004830152821660248201525f9073790ed7d2685286c32f167cc0d5ade32ff9fc9f7d9063c99ee7b790604401602060405180830381865af41580156106c5573d5f5f3e3d5ffd5b5f6105fa83836124e8565b5f6109f783836125e8565b949350505050565b6060816001600160401b03811115610a1957610a196138cf565b604051908082528060200260200182016040528015610a42578160200160208202803683370190505b5090505f5b828110156107c9575f848483818110610a6257610a626138e3565b905060400201803603810190610a789190613950565b9050610a8b815f015182602001516114d9565b838381518110610a9d57610a9d6138e3565b602090810291909101015250600101610a47565b60405163b6d821c760e01b81525f906001600160a01b0383169063b6d821c7906106589084906004016138c1565b6040516317a05b0960e31b81526001600160a01b0382811660048301525f9182918291829187169063bd02d84890602401606060405180830381865afa158015610b2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4f91906139db565b604051635f30114960e01b81526001600160a01b03898116600483015293975091955093505f91891690635f30114990602401602060405180830381865afa158015610b9d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc19190613882565b9050838114915082610bd35750610e29565b5f886001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c349190613a0e565b6040516394c0527d60e01b81526001600160a01b0389811660048301529192505f918316906394c0527d9060240161044060405180830381865afa158015610c7e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca29190613b4c565b5060808101516040516370a0823160e01b81526001600160a01b038b811660048301529293505f92909116906370a0823190602401602060405180830381865afa158015610cf2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d169190613882565b9050805f03610d285750505050610e29565b5f82604001516001600160a01b0316637ff00077835f6040518363ffffffff1660e01b8152600401610d5b929190613b81565b602060405180830381865afa158015610d76573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9a9190613882565b9050805f03610dad575050505050610e29565b5f83604001516001600160a01b0316630910a5106040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e129190613882565b905089610e1f8383613ba9565b1097505050505050505b93509350935093565b60605f8290505f816001600160a01b031663fb71aec56040518163ffffffff1660e01b81526004015f60405180830381865afa158015610e74573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610e9b9190810190613bbc565b905080516001600160401b03811115610eb657610eb66138cf565b604051908082528060200260200182016040528015610ee957816020015b6060815260200190600190039081610ed45790505b5092505f5b8151811015610f9e575f828281518110610f0a57610f0a6138e3565b60200260200101519050610f1d81612725565b15610f5d575f610f2c82613ce0565b60601c9050610f3a816127cc565b868481518110610f4c57610f4c6138e3565b602002602001018190525050610f95565b828281518110610f6f57610f6f6138e3565b6020026020010151858381518110610f8957610f896138e3565b60200260200101819052505b50600101610eee565b505050919050565b5f610588826127e2565b5f816001600160a01b0316630910a5106040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105cb573d5f5f3e3d5ffd5b5f5f5f836001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561102c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110509190613a0e565b60405163e48a5f7b60e01b81526001600160a01b038681166004830152919091169063e48a5f7b9060240161022060405180830381865afa158015611097573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110bb9190613d33565b90508060e001519250806101000151915050915091565b5f816001600160a01b0316639d35abaf6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561110f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111339190613d64565b50506001600160c01b03909216949350505050565b5f61115383836125e8565b509392505050565b5f816001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611198573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111bc9190613a0e565b60405163e48a5f7b60e01b81526001600160a01b038481166004830152919091169063e48a5f7b9060240161022060405180830381865afa158015611203573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112279190613d33565b610120015192915050565b60405163b6d821c760e01b81525f906001600160a01b0383169063b6d821c790610658906001906004016138c1565b5f610588826128ee565b6040516370a0823160e01b81526001600160a01b0382811660048301525f9190841690634cdad5069082906370a0823190602401602060405180830381865afa1580156112ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112de9190613882565b6040518263ffffffff1660e01b81526004016106aa91815260200190565b5f5f826001600160a01b0316639ef2fda06040518163ffffffff1660e01b8152600401606060405180830381865afa15801561133a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135e9190613dbb565b80519091501561138f578051602082015161138290670de0b6b3a764000090613e19565b61138c9190613e44565b91505b50919050565b5f5f826001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f79190613a0e565b60405163e48a5f7b60e01b81526001600160a01b038581166004830152919091169063e48a5f7b9060240161022060405180830381865afa15801561143e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114629190613d33565b61012001516040516364efe17760e01b81526001600160a01b038581166004830152426024830152919250908216906364efe17790604401602060405180830381865afa1580156114b5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138c9190613882565b5f5f5f846001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611518573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153c9190613a0e565b6040516394c0527d60e01b81526001600160a01b03868116600483015291909116906394c0527d9060240161044060405180830381865afa158015611583573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a79190613b4c565b604081015191935091506001600160a01b0316156115c85781610160015192505b505092915050565b5f5f5f5f5f856001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611611573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116359190613a0e565b604051630509af0560e51b81526001600160a01b038881166004830152919091169063a135e0a090602401608060405180830381865afa15801561167b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061169f9190613e57565b9050809350819450829550505050856001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170d9190613a0e565b604051630c0d053960e11b81526001600160a01b038881166004830152919091169063181a0a72906024016040805180830381865afa158015611752573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117769190613e97565b909790965092945090925090565b5f5f5f846001600160a01b031663aecc90cb6040518163ffffffff1660e01b81526004016040805180830381865afa1580156117c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117e69190613e97565b60405163e48a5f7b60e01b81526001600160a01b0380841660048301529294509092505f9187169063e48a5f7b9060240161022060405180830381865afa158015611833573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118579190613d33565b60405163e48a5f7b60e01b81526001600160a01b0384811660048301529192505f9188169063e48a5f7b9060240161022060405180830381865afa1580156118a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c59190613d33565b60a08301516040516370a0823160e01b81526001600160a01b0389811660048301529293509116906370a0823190602401602060405180830381865afa158015611911573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119359190613882565b15611947576001945050505050610588565b60808201516040516370a0823160e01b81526001600160a01b038881166004830152909116906370a0823190602401602060405180830381865afa158015611991573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b59190613882565b156119c7576001945050505050610588565b60a08101516040516370a0823160e01b81526001600160a01b038881166004830152909116906370a0823190602401602060405180830381865afa158015611a11573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a359190613882565b15611a47576001945050505050610588565b60808101516040516370a0823160e01b81526001600160a01b038881166004830152909116906370a0823190602401602060405180830381865afa158015611a91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ab59190613882565b15611ac7576001945050505050610588565b60c08201516040516370a0823160e01b81526001600160a01b038881166004830152909116906370a0823190602401602060405180830381865afa158015611b11573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b359190613882565b15611b47576001945050505050610588565b60c08101516040516370a0823160e01b81526001600160a01b038881166004830152909116906370a0823190602401602060405180830381865afa158015611b91573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb59190613882565b15611bc7576001945050505050610588565b505f9695505050505050565b5f816001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c349190613a0e565b60405163e48a5f7b60e01b81526001600160a01b038481166004830152919091169063e48a5f7b9060240161022060405180830381865afa158015611c7b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c9f9190613d33565b610160015192915050565b5f5f5f846001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ce9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0d9190613a0e565b6040516394c0527d60e01b81526001600160a01b03868116600483015291909116906394c0527d9060240161044060405180830381865afa158015611d54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d789190613b4c565b604081015191935091506001600160a01b0316156115c857611e1c8282865f60018660c001516001600160a01b03166370a082318b6040518263ffffffff1660e01b8152600401611dd891906001600160a01b0391909116815260200190565b602060405180830381865afa158015611df3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e179190613882565b6129cf565b95945050505050565b5f5f5f5f856001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e899190613a0e565b6040516394c0527d60e01b81526001600160a01b03878116600483015291909116906394c0527d9060240161044060405180830381865afa158015611ed0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ef49190613b4c565b604081015191935091506001600160a01b031615611f5f57611f548282875f60018660c001516001600160a01b03166370a082318c6040518263ffffffff1660e01b8152600401611dd891906001600160a01b0391909116815260200190565b935081610160015192505b50509250929050565b5f5f826001600160a01b031663a1ff9bee6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fa6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fca9190613882565b9050805f03611fdb57505f92915050565b5f836001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612018573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061203c9190613a0e565b60405163e48a5f7b60e01b81526001600160a01b038681166004830152919091169063e48a5f7b9060240161022060405180830381865afa158015612083573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120a79190613d33565b905081846001600160a01b031663ecd658b46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061210a9190613882565b61211386611395565b61211d9190613e19565b6121279190613e44565b60208201518251919450670de0b6b3a7640000916121459083613ec4565b61214f9190613ec4565b6121599085613e19565b6109f79190613e44565b5f816001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c49190613a0e565b60405163e48a5f7b60e01b81526001600160a01b038481166004830152919091169063e48a5f7b9060240161022060405180830381865afa15801561220b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061222f9190613d33565b610140015192915050565b5f5f5f846001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612279573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061229d9190613a0e565b604051630483b24f60e41b81526001600160a01b038781166004830152919091169063483b24f090602401606060405180830381865afa1580156122e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123079190613ed7565b506040516370a0823160e01b81526001600160a01b0387811660048301529294509092505f918416906370a0823190602401602060405180830381865afa158015612354573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123789190613882565b6040516370a0823160e01b81526001600160a01b0387811660048301529192505f918416906370a0823190602401602060405180830381865afa1580156123c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e59190613882565b9050811561245d5760405163a7d6e44b60e01b81526001600160a01b0388169063a7d6e44b9061241b9085905f90600401613f16565b602060405180830381865afa158015612436573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061245a9190613882565b94505b80156124de5760405163a7d6e44b60e01b81526001600160a01b0388169063a7d6e44b90612492908490600190600401613f16565b602060405180830381865afa1580156124ad573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124d19190613882565b6124db9086613ba9565b94505b5050505092915050565b6040516394c0527d60e01b81526001600160a01b0382811660048301525f9182918516906394c0527d9060240161044060405180830381865afa158015612531573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125559190613b4c565b60c08101519092506001600160a01b031615801591506109f7575060c08101516040516370a0823160e01b81526001600160a01b038581166004830152909116906370a0823190602401602060405180830381865afa1580156125ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125de9190613882565b1515949350505050565b6040516394c0527d60e01b81526001600160a01b0382811660048301525f918291829182918716906394c0527d9060240161044060405180830381865afa158015612635573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126599190613b4c565b606082015191935091506001600160a01b031661267d575f5f93509350505061271e565b60c08101516040516370a0823160e01b81526001600160a01b0380881660048301525f926126ff92869286928b92879260019216906370a0823190602401602060405180830381865afa1580156126d6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126fa9190613882565b612a26565b90506127148184606001518460600151612ca3565b5090955093505050505b9250929050565b5f815160141461273657505f919050565b5f61274083613ce0565b60601c905061274e81612cf9565b515f0361275d57505f92915050565b6040516370a0823160e01b81523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa9250505080156127bd575060408051601f3d908101601f191682019092526127ba91810190613882565b60015b1561138f575060019392505050565b60606105886001600160a01b0383166014612d1f565b5f5f826001600160a01b03166379502c556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612820573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128449190613a0e565b604051630483b24f60e41b81526001600160a01b038581166004830152919091169063483b24f090602401606060405180830381865afa15801561288a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128ae9190613ed7565b92505050806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b5573d5f5f3e3d5ffd5b5f610588826001600160a01b031663b6d821c760016040518263ffffffff1660e01b815260040161291f91906138c1565b602060405180830381865afa15801561293a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061295e9190613882565b60405163b6d821c760e01b81526001600160a01b0385169063b6d821c79061298b906002906004016138c1565b602060405180830381865afa1580156129a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ca9190613882565b612e94565b5f815f036129de57505f612a1c565b5f6129ed888888888888612a26565b905080608001515f03612a03575f915050612a1c565b612a168189606001518960600151612ca3565b93505050505b9695505050505050565b612a656040518060a001604052805f6001600160a01b031681526020015f6001600160a01b031681526020015f81526020015f81526020015f81525090565b85606001516001600160a01b031687606001516001600160a01b031614612acf576001846001811115612a9a57612a9a613899565b14612aae578660e001518660e00151612abb565b8661010001518661010001515b6001600160a01b0390811660208401521681525b5f5f612ae08960800151885f612eac565b80935081925050505f5f8a604001516001600160a01b031663ffbaaf7a6040518163ffffffff1660e01b81526004016040805180830381865afa158015612b29573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b4d9190613f3a565b91509150612b5e8382865f5f612f94565b604086015260a08b0151612b73908a5f612eac565b945092506001876001811115612b8b57612b8b613899565b14612b965781612bb2565b612bb28b604001518c61012001518d5f01518e60200151612fcf565b9150612bc28383865f6001612f94565b606086015260c08a0151612bd7908a88612eac565b945092505f6001886001811115612bf057612bf0613899565b14612c6a578a604001516001600160a01b031663b6d821c760026040518263ffffffff1660e01b8152600401612c2691906138c1565b602060405180830381865afa158015612c41573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c659190613882565b612c7d565b612c7d8b604001518c61012001516130c5565b9050612c8e84828760016002612f94565b608087015250939a9950505050505050505050565b5f5f5f612cb18686866131b8565b909350915082158015612cc2575081155b15612cd457505f915081905080612cf0565b825f03612ce357505f19612cf0565b612ced828461330e565b90505b93509350939050565b60408051603f833b908101601f1916820190925281815290805f60208401853c50919050565b6060825f612d2e846002613e19565b612d39906002613ba9565b6001600160401b03811115612d5057612d506138cf565b6040519080825280601f01601f191660200182016040528015612d7a576020820181803683370190505b509050600360fc1b815f81518110612d9457612d946138e3565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110612dc257612dc26138e3565b60200101906001600160f81b03191690815f1a9053505f612de4856002613e19565b612def906001613ba9565b90505b6001811115612e66576f181899199a1a9b1b9c1cb0b131b232b360811b83600f1660108110612e2357612e236138e3565b1a60f81b828281518110612e3957612e396138e3565b60200101906001600160f81b03191690815f1a90535060049290921c91612e5f81613f5c565b9050612df2565b5081156109f75760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b5f828211612ea4578183036105fa565b5f9392505050565b5f5f825f03612f265760405163dce5c2db60e01b81526001600160a01b03858116600483015286169063dce5c2db906024016040805180830381865afa158015612ef8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f1c9190613f3a565b9092509050612f8c565b829150846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f65573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f899190613882565b90505b935093915050565b5f5f5f612fa2878786613324565b91509150815f03612fb7578792505050611e1c565b612fc38882848861337f565b98975050505050505050565b6040516367efe7fd60e11b81526001600160a01b0385811660048301524260248301525f91829186169063cfdfcffa90604401602060405180830381865afa92505050801561303b575060408051601f3d908101601f1916820190925261303891810190613882565b60015b156130435790505b5f5f876001600160a01b03166339c5c5056040518163ffffffff1660e01b81526004016040805180830381865afa158015613080573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130a49190613f3a565b915091506130b582828589896133c1565b50919a9950505050505050505050565b6040516367efe7fd60e11b81526001600160a01b0383811660048301524260248301525f91829184169063cfdfcffa90604401602060405180830381865afa925050508015613131575060408051601f3d908101601f1916820190925261312e91810190613882565b60015b156131395790505b60405163b6d821c760e01b81526131af906001600160a01b0386169063b6d821c79061316a906002906004016138c1565b602060405180830381865afa158015613185573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131a99190613882565b8261341b565b50949350505050565b5f5f5f856060015186604001516131cf9190613ba9565b905080156132615785516001600160a01b03166131ec578061325e565b85516040516313b0be3360e01b8152600481018390526001600160a01b038781166024830152909116906313b0be3390604401602060405180830381865afa15801561323a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061325e9190613882565b92505b6080860151156133055760208601516001600160a01b0316613287578560800151613302565b602086015160808701516040516313b0be3360e01b815260048101919091526001600160a01b038681166024830152909116906313b0be3390604401602060405180830381865afa1580156132de573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133029190613882565b91505b50935093915050565b5f6105fa83670de0b6b3a764000084600161337f565b5f5f835f03613331575f94505b600283600281111561334557613345613899565b14613370576133566003600a61404c565b6133609085613ba9565b61336b866001613ba9565b613373565b83855b90969095509350505050565b5f6133ac61338c83613463565b80156133a757505f84806133a2576133a2613e30565b868809115b151590565b6133b786868661348f565b611e1c9190613ba9565b5f5f5f5f6133cf888861341b565b90935090508585016133ea8282670de0b6b3a764000061354c565b92505f6133f78484613ec4565b90508a1981811015613407578091505b818c01965050505095509550955095915050565b5f80831580613428575082155b1561343757508290505f61271e565b61344a8484670de0b6b3a764000061354c565b905080840191508382101561271e575091925f92509050565b5f600282600381111561347857613478613899565b6134829190614057565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f036134c3578382816134b9576134b9613e30565b04925050506105fa565b8084116134e1576134e184156134da576011613594565b6012613594565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f835f0361355b57505f6105fa565b508282028284828161356f5761356f613e30565b041461357c57505f6105fa565b81818161358b5761358b613e30565b04949350505050565b634e487b715f52806020526024601cfd5b6001600160a01b03811681146135b9575f5ffd5b50565b5f602082840312156135cc575f5ffd5b81356105fa816135a5565b5f5f604083850312156135e8575f5ffd5b82356135f3816135a5565b91506020830135613603816135a5565b809150509250929050565b5f5f6020838503121561361f575f5ffd5b82356001600160401b03811115613634575f5ffd5b8301601f81018513613644575f5ffd5b80356001600160401b03811115613659575f5ffd5b8560208260061b840101111561366d575f5ffd5b6020919091019590945092505050565b602080825282518282018190525f918401906040840190835b818110156136c9576136b383855180518252602090810151910152565b6020939093019260409290920191600101613696565b509095945050505050565b5f5f602083850312156136e5575f5ffd5b82356001600160401b038111156136fa575f5ffd5b8301601f8101851361370a575f5ffd5b80356001600160401b0381111561371f575f5ffd5b8560208260051b840101111561366d575f5ffd5b602080825282518282018190525f918401906040840190835b818110156136c95761376983855180518252602090810151910152565b602093909301926040929092019160010161374c565b602080825282518282018190525f918401906040840190835b818110156136c9578351835260209384019390920191600101613798565b5f5f5f606084860312156137c8575f5ffd5b83356137d3816135a5565b925060208401356137e3816135a5565b915060408401356137f3816135a5565b809150509250925092565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561387657603f19878603018452815180518087528060208301602089015e5f602082890101526020601f19601f83011688010196505050602082019150602084019350600181019050613824565b50929695505050505050565b5f60208284031215613892575f5ffd5b5051919050565b634e487b7160e01b5f52602160045260245ffd5b600381106138bd576138bd613899565b9052565b6020810161058882846138ad565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b60405161022081016001600160401b038111828210171561391a5761391a6138cf565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613948576139486138cf565b604052919050565b5f6040828403128015613961575f5ffd5b50604080519081016001600160401b0381118282101715613984576139846138cf565b6040528235613992816135a5565b815260208301356139a2816135a5565b60208201529392505050565b805180151581146139bd575f5ffd5b919050565b5f602082840312156139d2575f5ffd5b6105fa826139ae565b5f5f5f606084860312156139ed575f5ffd5b835160208501519093509150613a05604085016139ae565b90509250925092565b5f60208284031215613a1e575f5ffd5b81516105fa816135a5565b80516139bd816135a5565b5f6102208284031215613a45575f5ffd5b613a4d6138f7565b82518152602080840151908201529050613a6960408301613a29565b6040820152613a7a60608301613a29565b6060820152613a8b60808301613a29565b6080820152613a9c60a08301613a29565b60a0820152613aad60c08301613a29565b60c0820152613abe60e08301613a29565b60e0820152613ad06101008301613a29565b610100820152613ae36101208301613a29565b6101208201526101408281015190820152610160808301519082015261018080830151908201526101a080830151908201526101c08083015190820152613b2d6101e08301613a29565b6101e0820152613b4061020083016139ae565b61020082015292915050565b5f5f6104408385031215613b5e575f5ffd5b613b688484613a34565b9150613b78846102208501613a34565b90509250929050565b828152604081016105fa60208301846138ad565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561058857610588613b95565b5f60208284031215613bcc575f5ffd5b81516001600160401b03811115613be1575f5ffd5b8201601f81018413613bf1575f5ffd5b80516001600160401b03811115613c0a57613c0a6138cf565b8060051b613c1a60208201613920565b91825260208184018101929081019087841115613c35575f5ffd5b6020850192505b83831015613cd55782516001600160401b03811115613c59575f5ffd5b8501603f81018913613c69575f5ffd5b60208101516001600160401b03811115613c8557613c856138cf565b613c98601f8201601f1916602001613920565b8181526040838301018b1015613cac575f5ffd5b8160408401602083015e5f60208383010152808552505050602082019150602083019250613c3c565b979650505050505050565b805160208201516bffffffffffffffffffffffff19811691906014821015613d2c576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b5f6102208284031215613d44575f5ffd5b6105fa8383613a34565b80516001600160401b03811681146139bd575f5ffd5b5f5f5f5f5f60a08688031215613d78575f5ffd5b85516001600160c01b0381168114613d8e575f5ffd5b9450613d9c60208701613d4e565b6040870151606088015160809098015196999198509695945092505050565b5f6060828403128015613dcc575f5ffd5b50604051606081016001600160401b0381118282101715613def57613def6138cf565b60409081528351825260208085015190830152613e0d908401613d4e565b60408201529392505050565b808202811582820484141761058857610588613b95565b634e487b7160e01b5f52601260045260245ffd5b5f82613e5257613e52613e30565b500490565b5f5f5f5f60808587031215613e6a575f5ffd5b84516020860151604087015160608801519296509094509250613e8c816135a5565b939692955090935050565b5f5f60408385031215613ea8575f5ffd5b8251613eb3816135a5565b6020840151909250613603816135a5565b8181038181111561058857610588613b95565b5f5f5f60608486031215613ee9575f5ffd5b8351613ef4816135a5565b6020850151909350613f05816135a5565b60408501519092506137f3816135a5565b8281526040810160028310613f2d57613f2d613899565b8260208301529392505050565b5f5f60408385031215613f4b575f5ffd5b505080516020909101519092909150565b5f81613f6a57613f6a613b95565b505f190190565b6001815b6001841115612f8c57808504811115613f9057613f90613b95565b6001841615613f9e57908102905b60019390931c928002613f75565b5f82613fba57506001610588565b81613fc657505f610588565b8160018114613fdc5760028114613fe657614002565b6001915050610588565b60ff841115613ff757613ff7613b95565b50506001821b610588565b5060208310610133831016604e8410600b8410161715614025575081810a610588565b6140315f198484613f71565b805f190482111561404457614044613b95565b029392505050565b5f6105fa8383613fac565b5f60ff83168061406957614069613e30565b8060ff8416069150509291505056fea26469706673582212209bde34061fd27ea09d6ed5da32f79c6d9832ba87343c7005935b4bc257e635a664736f6c634300081c0033