0 txs
22 calls
constructor
constructor(address _tellerV2, address _smartCommitmentForwarder, address _uniswapV3Factory)
functions
activeBids
viewfunction activeBids(uint256) view returns (bool)
activeBidsAmountDueRemaining
viewfunction activeBidsAmountDueRemaining(uint256) view returns (uint256)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address assetTokenAddress)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
calculateCollateralRequiredToBorrowPrincipal
viewfunction calculateCollateralRequiredToBorrowPrincipal(uint256 _principalAmount) view returns (uint256)
calculateCollateralTokensAmountEquivalentToPrincipalTokens
viewfunction calculateCollateralTokensAmountEquivalentToPrincipalTokens(uint256 principalAmount) view returns (uint256 collateralTokensAmountToMatchValue)
collateralRatio
viewfunction collateralRatio() view returns (uint16)
collateralToken
viewfunction collateralToken() view returns (address)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DEFAULT_WITHDRAW_DELAY_TIME_SECONDS
viewfunction DEFAULT_WITHDRAW_DELAY_TIME_SECONDS() view returns (uint256)
excessivePrincipalTokensRepaid
viewfunction excessivePrincipalTokensRepaid() view returns (uint256)
EXCHANGE_RATE_EXPANSION_FACTOR
viewfunction EXCHANGE_RATE_EXPANSION_FACTOR() view returns (uint256)
firstDepositMade
viewfunction firstDepositMade() view returns (bool)
getCollateralTokenAddress
viewfunction getCollateralTokenAddress() view returns (address)
getCollateralTokenId
viewfunction getCollateralTokenId() view returns (uint256)
getCollateralTokenType
viewfunction getCollateralTokenType() view returns (uint8)
getLastUnpausedAt
viewfunction getLastUnpausedAt() view returns (uint256)
getMarketId
viewfunction getMarketId() view returns (uint256)
getMaxLoanDuration
viewfunction getMaxLoanDuration() view returns (uint32)
getMinimumAmountDifferenceToCloseDefaultedLoan
viewfunction getMinimumAmountDifferenceToCloseDefaultedLoan(uint256 _amountOwed, uint256 _loanDefaultedTimestamp) view returns (int256 amountDifference_)
getMinInterestRate
viewfunction getMinInterestRate(uint256 amountDelta) view returns (uint16)
getPoolUtilizationRatio
viewfunction getPoolUtilizationRatio(uint256 activeLoansAmountDelta) view returns (uint16)
getPrincipalAmountAvailableToBorrow
viewfunction getPrincipalAmountAvailableToBorrow() view returns (uint256)
getPrincipalForCollateralForPoolRoutes
viewfunction getPrincipalForCollateralForPoolRoutes(tuple[] poolOracleRoutes) view returns (uint256)
getPrincipalTokenAddress
viewfunction getPrincipalTokenAddress() view returns (address)
getSharesLastTransferredAt
viewfunction getSharesLastTransferredAt(address owner) view returns (uint256)
getTokenDifferenceFromLiquidations
viewfunction getTokenDifferenceFromLiquidations() view returns (int256)
interestRateLowerBound
viewfunction interestRateLowerBound() view returns (uint16)
interestRateUpperBound
viewfunction interestRateUpperBound() view returns (uint16)
lastUnpausedAt
viewfunction lastUnpausedAt() view returns (uint256)
liquidityThresholdPercent
viewfunction liquidityThresholdPercent() view returns (uint16)
MAX_WITHDRAW_DELAY_TIME
viewfunction MAX_WITHDRAW_DELAY_TIME() view returns (uint256)
maxDeposit
viewfunction maxDeposit(address) view returns (uint256)
maxLoanDuration
viewfunction maxLoanDuration() view returns (uint32)
maxMint
viewfunction maxMint(address) view returns (uint256)
maxPrincipalPerCollateralAmount
viewfunction maxPrincipalPerCollateralAmount() view returns (uint256)
maxRedeem
viewfunction maxRedeem(address owner) view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address owner) view returns (uint256)
MIN_TWAP_INTERVAL
viewfunction MIN_TWAP_INTERVAL() view returns (uint256)
name
viewfunction name() view returns (string)
ORACLE_MANAGER
viewfunction ORACLE_MANAGER() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
poolOracleRoutes
viewfunction poolOracleRoutes(uint256) view returns (address pool, bool zeroForOne, uint32 twapInterval, uint256 token0Decimals, uint256 token1Decimals)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
previewMint
viewfunction previewMint(uint256 shares) view returns (uint256)
previewRedeem
viewfunction previewRedeem(uint256 shares) view returns (uint256)
previewWithdraw
viewfunction previewWithdraw(uint256 assets) view returns (uint256)
principalToken
viewfunction principalToken() view returns (address)
sharesExchangeRate
viewfunction sharesExchangeRate() view returns (uint256 rate_)
sharesExchangeRateInverse
viewfunction sharesExchangeRateInverse() view returns (uint256 rate_)
SMART_COMMITMENT_FORWARDER
viewfunction SMART_COMMITMENT_FORWARDER() view returns (address)
STANDARD_EXPANSION_FACTOR
viewfunction STANDARD_EXPANSION_FACTOR() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
TELLER_V2
viewfunction TELLER_V2() view returns (address)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalInterestCollected
viewfunction totalInterestCollected() view returns (uint256)
totalPrincipalTokensCommitted
viewfunction totalPrincipalTokensCommitted() view returns (uint256)
totalPrincipalTokensLended
viewfunction totalPrincipalTokensLended() view returns (uint256)
totalPrincipalTokensRepaid
viewfunction totalPrincipalTokensRepaid() view returns (uint256)
totalPrincipalTokensWithdrawn
viewfunction totalPrincipalTokensWithdrawn() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
UNISWAP_EXPANSION_FACTOR
viewfunction UNISWAP_EXPANSION_FACTOR() view returns (uint256)
UNISWAP_V3_FACTORY
viewfunction UNISWAP_V3_FACTORY() view returns (address)
withdrawDelayTimeSeconds
viewfunction withdrawDelayTimeSeconds() view returns (uint256)
acceptFundsForAcceptBid
nonpayablefunction acceptFundsForAcceptBid(address _borrower, uint256 _bidId, uint256 _principalAmount, uint256 _collateralAmount, address _collateralTokenAddress, uint256 _collateralTokenId, uint32 _loanDuration, uint16 _interestRate)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
nonpayablefunction deposit(uint256 assets, address receiver) returns (uint256 shares)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(tuple _commitmentGroupConfig, tuple[] _poolOracleRoutes)
liquidateDefaultedLoanWithIncentive
nonpayablefunction liquidateDefaultedLoanWithIncentive(uint256 _bidId, int256 _tokenAmountDifference)
mint
nonpayablefunction mint(uint256 shares, address receiver) returns (uint256 assets)
pauseLendingPool
nonpayablefunction pauseLendingPool()
redeem
nonpayablefunction redeem(uint256 shares, address receiver, address owner) returns (uint256 assets)
renounceOwnership
nonpayablefunction renounceOwnership()
repayLoanCallback
nonpayablefunction repayLoanCallback(uint256 _bidId, address repayer, uint256 principalAmount, uint256 interestAmount)
setMaxPrincipalPerCollateralAmount
nonpayablefunction setMaxPrincipalPerCollateralAmount(uint256 _maxPrincipalPerCollateralAmount)
setWithdrawDelayTime
nonpayablefunction setWithdrawDelayTime(uint256 _seconds)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpauseLendingPool
nonpayablefunction unpauseLendingPool()
withdraw
nonpayablefunction withdraw(uint256 assets, address receiver, address owner) returns (uint256 shares)
withdrawFromEscrowVault
nonpayablefunction withdrawFromEscrowVault(uint256 _amount)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
BorrowerAcceptedFunds
event BorrowerAcceptedFunds(address indexed borrower, uint256 indexed bidId, uint256 principalAmount, uint256 collateralAmount, uint32 loanDuration, uint16 interestRate)
DefaultedLoanLiquidated
event DefaultedLoanLiquidated(uint256 indexed bidId, address indexed liquidator, uint256 amountDue, int256 tokenAmountDifference)
Deposit
event Deposit(address indexed caller, address indexed owner, uint256 assets, uint256 shares)
Initialized
event Initialized(uint8 version)
LoanRepaid
event LoanRepaid(uint256 indexed bidId, address indexed repayer, uint256 principalAmount, uint256 interestAmount, uint256 totalPrincipalRepaid, uint256 totalInterestCollected)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PoolInitialized
event PoolInitialized(address indexed principalTokenAddress, address indexed collateralTokenAddress, uint256 marketId, uint32 maxLoanDuration, uint16 interestRateLowerBound, uint16 interestRateUpperBound, uint16 liquidityThresholdPercent, uint16 loanToValuePercent)
SharesLastTransferredAt
event SharesLastTransferredAt(address indexed recipient, uint256 transferredAt)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
Withdraw
event Withdraw(address indexed caller, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
WithdrawFromEscrow
event WithdrawFromEscrow(uint256 indexed amount)
errors
No errors.
creation bytecode
0x6101c0604052670de0b6b3a764000060a052600360c0526c0100000000000000000000000060e0526ec097ce7bc90715b34b9f10000000006101005261012c61018052620151806101a0523480156200005757600080fd5b5060405162005985380380620059858339810160408190526200007a91620000c0565b6001600160a01b039182166080819052928216610120526101409290925216610160526200010a565b80516001600160a01b0381168114620000bb57600080fd5b919050565b600080600060608486031215620000d657600080fd5b620000e184620000a3565b9250620000f160208501620000a3565b91506200010160408501620000a3565b90509250925092565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516156f56200029060003960008181610bab0152610d680152600081816106d50152610f0401526000610b7a01526000818161069e01528181610f3d0152818161175101528181611b5501528181611e19015281816121120152818161216a0152818161269b01528181612b3e01528181612e000152818161316401526135ca01526000818161074201528181610c9c01528181610f650152818161134b0152818161147e01528181611d3501528181611ed60152818161205001528181612378015281816124da0152818161320d01528181613fc3015281816140700152818161424301526142d601526000818161088101528181611b2401528181612468015281816124930152818161376e01526138ce01526000610963015260006109210152600081816106640152613d2c015260008181610acf0152818161181301528181611c630152818161275d01528181612c000152612ec201526156f56000f3fe608060405234801561001057600080fd5b50600436106104d85760003560e01c80637701a84c11610283578063ba0876521161015c578063dd62ed3e116100ce578063f540744411610092578063f540744414610b5a578063f57781fe14610b62578063f73e5aab14610b75578063f87bc1c814610b9c578063fa4c1d5a14610ba6578063fa83a97614610bcd57600080fd5b8063dd62ed3e14610b20578063e07baba614610b33578063ef8b30f714610a6f578063f2fde38b14610b3d578063f319986114610b5057600080fd5b8063cc9ce35a11610120578063cc9ce35a14610aa4578063ce96cb7714610ab7578063d24bc1a414610aca578063d2c76fd814610af1578063d905777e14610af9578063dbc162de14610b0c57600080fd5b8063ba08765214610a5c578063c63d75b61461064c578063c6e6f59214610a6f578063c84f95dd14610a82578063ca0c1bb014610a9157600080fd5b8063a457c2d7116101f5578063ac6787bb116101b9578063ac6787bb146109ed578063b2016bd414610a03578063b3d7f6b914610a17578063b460af9414610a2a578063b4cebd5714610a3d578063b4eae1cb14610a4757600080fd5b8063a457c2d714610985578063a4be77ee14610998578063a5c2f9c4146109b1578063a7fc093d146109c4578063a9059cbb146109da57600080fd5b80638da5cb5b116102475780638da5cb5b146108f8578063913ff9a91461090957806391bf279b1461091c57806394bf804d1461094357806395d89b4114610956578063a11ea0ed1461095e57600080fd5b80637701a84c146108b65780637faf1562146108c957806380bde5ac146108d1578063846be29e146108e45780638b190860146108ee57600080fd5b806349c3d6e6116103b5578063667a65d91161032757806370a08231116102eb57806370a082311461081a578063715018a61461084357806371f3ec561461084b578063739dd65914610874578063764f59631461087c57806376f28daf146108a357600080fd5b8063667a65d9146107b4578063672b0774146107c75780636d483fe6146107eb5780636e553f65146107fd5780636f7833131461081057600080fd5b8063568ef47011610379578063568ef470146106f75780635932f4ff146107005780635bb2c822146107285780635c975abb146107325780636051f2101461073d5780636298deab1461076457600080fd5b806349c3d6e6146106995780634b1dd53b146106c05780634cdad5061461050d578063541fdb71146106c9578063562d7538146106d057600080fd5b8063280e32fb1161044e57806338d52e0f1161041257806338d52e0f146105b157806339509351146106175780633f9be6661461062a578063402d267d1461064c578063424ddc4a1461065f5780634523d6f71461068657600080fd5b8063280e32fb146105b1578063313ce567146105d757806331821308146105e657806332adbb8f14610607578063355485ce1461060f57600080fd5b80630a28a477116104a05780630a28a477146105585780631446cc241461056b57806318160ddd146105755780631d24a6e41461057d5780631d42a60e1461058b57806323b872dd1461059e57600080fd5b806301e1d114146104dd57806306fdde03146104f857806307a2d13a1461050d57806308a6355a14610520578063095ea7b314610535575b600080fd5b6104e5610be0565b6040519081526020015b60405180910390f35b610500610bef565b6040516104ef9190614a67565b6104e561051b366004614a9a565b610c81565b61053361052e366004614a9a565b610c9a565b005b610548610543366004614ac8565b610d98565b60405190151581526020016104ef565b6104e5610566366004614a9a565b610db0565b6104e56101325481565b60cb546104e5565b61013b546105489060ff1681565b610533610599366004614af4565b610dc3565b6105486105ac366004614b84565b611321565b61012e546001600160a01b03165b6040516001600160a01b0390911681526020016104ef565b604051601281526020016104ef565b6104e56105f4366004614a9a565b6101396020526000908152604090205481565b610533611347565b61053361147a565b610548610625366004614ac8565b6115b4565b610137546106399061ffff1681565b60405161ffff90911681526020016104ef565b6104e561065a366004614bc5565b6115d6565b6104e57f000000000000000000000000000000000000000000000000000000000000000081565b6104e5610694366004614a9a565b6115fa565b6105bf7f000000000000000000000000000000000000000000000000000000000000000081565b61013a546104e5565b60006104e5565b6104e57f000000000000000000000000000000000000000000000000000000000000000081565b610130546104e5565b61013754640100000000900463ffffffff165b60405163ffffffff90911681526020016104ef565b6104e56101355481565b60655460ff16610548565b6105bf7f000000000000000000000000000000000000000000000000000000000000000081565b610777610772366004614a9a565b6116ae565b604080516001600160a01b039096168652931515602086015263ffffffff909216928401929092526060830191909152608082015260a0016104ef565b6106396107c2366004614a9a565b611706565b6105486107d5366004614a9a565b6101386020526000908152604090205460ff1681565b61012f546001600160a01b03166105bf565b6104e561080b366004614be2565b61174d565b6104e56101365481565b6104e5610828366004614bc5565b6001600160a01b0316600090815260c9602052604090205490565b610533611b01565b6104e5610859366004614bc5565b6001600160a01b0316600090815260fb602052604090205490565b6104e5611b15565b6104e57f000000000000000000000000000000000000000000000000000000000000000081565b6105336108b1366004614c12565b611b53565b6105336108c4366004614c58565b612107565b6104e561244c565b6105336108df366004614a9a565b6124c1565b6104e561013e5481565b6104e561013c5481565b6033546001600160a01b03166105bf565b610533610917366004614cd9565b6124cf565b6104e57f000000000000000000000000000000000000000000000000000000000000000081565b6104e5610951366004614be2565b612697565b610500612a36565b6104e57f000000000000000000000000000000000000000000000000000000000000000081565b610548610993366004614ac8565b612a45565b6101375461071390640100000000900463ffffffff1681565b6106396109bf366004614a9a565b612acb565b6101375461063990600160501b900461ffff1681565b6105486109e8366004614ac8565b612b1e565b6101375461063990600160401b900461ffff1681565b61012f546105bf906001600160a01b031681565b6104e5610a25366004614a9a565b612b2c565b6104e5610a38366004614d16565b612b3a565b6104e56101335481565b610137546106399062010000900461ffff1681565b6104e5610a6a366004614d16565b612dfc565b6104e5610a7d366004614a9a565b6130b1565b60016040516104ef9190614d6e565b6104e5610a9f366004614e14565b6130bf565b610533610ab2366004614a9a565b613162565b6104e5610ac5366004614bc5565b613325565b6105bf7f000000000000000000000000000000000000000000000000000000000000000081565b6104e56133e1565b6104e5610b07366004614bc5565b61342f565b61012e546105bf906001600160a01b031681565b6104e5610b2e366004614f17565b61351e565b6104e561013f5481565b610533610b4b366004614bc5565b613549565b6104e56101315481565b6104e56135bf565b6104e5610b70366004614c12565b61364a565b6105bf7f000000000000000000000000000000000000000000000000000000000000000081565b6104e56101345481565b6104e57f000000000000000000000000000000000000000000000000000000000000000081565b6104e5610bdb366004614a9a565b6136dc565b6000610bea613704565b905090565b606060cc8054610bfe90614f45565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2a90614f45565b8015610c775780601f10610c4c57610100808354040283529160200191610c77565b820191906000526020600020905b815481529060010190602001808311610c5a57829003601f168201915b5050505050905090565b6000610c9482610c8f611b15565b613759565b92915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1c9190614f80565b6001600160a01b0316336001600160a01b031614610d665760405162461bcd60e51b81526020600482015260026024820152614f4f60f01b60448201526064015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008110610d9257600080fd5b61013c55565b600033610da6818585613795565b5060019392505050565b6000610c9482610dbe61244c565b6138b9565b600054610100900460ff1615808015610de35750600054600160ff909116105b80610dfd5750303b158015610dfd575060005460ff166001145b610e605760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610d5d565b6000805460ff191660011790558015610e83576000805461ff0019166101001790555b610e8b6138f5565b610e93613924565b610e9b613953565b610ea86020850185614bc5565b61012e80546001600160a01b0319166001600160a01b0392909216919091179055610ed96040850160208601614bc5565b61012f80546001600160a01b0319166001600160a01b039283161790556040858101356101308190557f000000000000000000000000000000000000000000000000000000000000000061013c559051630ba4ccb560e21b815260048101919091527f0000000000000000000000000000000000000000000000000000000000000000821660248201527f000000000000000000000000000000000000000000000000000000000000000090911690632e9332d490604401600060405180830381600087803b158015610fab57600080fd5b505af1158015610fbf573d6000803e3d6000fd5b50610fd4925050506080850160608601614f9d565b610137805463ffffffff929092166401000000000267ffffffff000000001990921691909117905561100c60a0850160808601614fba565b610137805461ffff92909216600160401b0269ffff00000000000000001990921691909117905561104360c0850160a08601614fba565b610137805461ffff60501b1916600160501b61ffff9384168102919091179182905581048216600160401b90910490911611156110ab5760405162461bcd60e51b8152600401610d5d9060208082526004908201526324a9262160e11b604082015260600190565b6110bb60e0850160c08601614fba565b610137805461ffff191661ffff929092169190911790556110e3610100850160e08601614fba565b610137805461ffff928316620100000263ffff0000198216811790925561271091831692169190911711156111435760405162461bcd60e51b8152600401610d5d906020808252600490820152630494c54560e41b604082015260600190565b60005b828110156111a65761013d84848381811061116357611163614fd5565b83546001810185556000948552602090942060a0909102929092019260030290910190506111918282614feb565b5050808061119e906150a1565b915050611146565b5061013d546001118015906111bf575061013d54600210155b6111f15760405162461bcd60e51b815260206004820152600360248201526214149360ea1b6044820152606401610d5d565b6112016040850160208601614bc5565b6001600160a01b03166112176020860186614bc5565b6001600160a01b03167f39a60e55b000e31daa0c5bae68cfc6256176f9ae4e9fa343e5224410a69c1ebb60408701356112566080890160608a01614f9d565b61126660a08a0160808b01614fba565b61127660c08b0160a08c01614fba565b61128660e08c0160c08d01614fba565b6112976101008d0160e08e01614fba565b6040805196875263ffffffff95909516602087015261ffff938416868601529183166060860152821660808501521660a0830152519081900360c00190a3801561131b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60003361132f8582856139c7565b61133a858585613a3b565b60019150505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663352f43006040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cb9190614f80565b60405163237dfb4760e11b81523360048201529091506001600160a01b038216906346fbf68e90602401602060405180830381865afa158015611412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143691906150bc565b6114675760405162461bcd60e51b815260206004820152600260248201526104f560f41b6044820152606401610d5d565b61146f613bec565b611477613c32565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663352f43006040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fe9190614f80565b60405163237dfb4760e11b81523360048201529091506001600160a01b038216906346fbf68e90602401602060405180830381865afa158015611545573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156991906150bc565b61159a5760405162461bcd60e51b815260206004820152600260248201526104f560f41b6044820152606401610d5d565b6115a2613c8c565b6115ac4261013f55565b611477613cd5565b600033610da68185856115c7838361351e565b6115d191906150d9565b613795565b60006115e460655460ff1690565b156115f157506000919050565b50600019919050565b60008073a59e62116a3bcecb2ece385558533dcce1acad5063caf0f03361013d6040518263ffffffff1660e01b815260040161163691906150f1565b602060405180830381865af4158015611653573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611677919061517a565b9050600061013e54600014611698576116938261013e54613d0e565b61169a565b815b90506116a68482613d24565b949350505050565b61013d81815481106116bf57600080fd5b60009182526020909120600390910201805460018201546002909201546001600160a01b0382169350600160a01b820460ff1692600160a81b90920463ffffffff16919085565b6000611710613704565b61171c57506000919050565b610c946117458361172b613d53565b61173591906150d9565b612710611740613704565b613d7b565b612710613d0e565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d191906150bc565b156117ee5760405162461bcd60e51b8152600401610d5d90615193565b6117f6613bec565b6117fe613e2b565b6040516304ef887f60e51b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690639df10fe0906024016020604051808303816000875af1158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a91906150bc565b6118a65760405162461bcd60e51b8152600401610d5d906151b2565b600084116118b357600080fd5b61012e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156118fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611921919061517a565b61012e5490915061193d906001600160a01b0316333088613e85565b61012e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ab919061517a565b90506119b786836150d9565b81146119ea5760405162461bcd60e51b81526020600482015260026024820152612a2160f11b6044820152606401610d5d565b6119f686610c8f61244c565b9350856101316000828254611a0b91906150d9565b90915550611a1b90508585613ef0565b61013b5460ff16611aad576033546001600160a01b03163314611a665760405162461bcd60e51b815260206004820152600360248201526246444d60e81b6044820152606401610d5d565b620f4240841015611a9e5760405162461bcd60e51b8152602060048201526002602482015261495360f01b6044820152606401610d5d565b61013b805460ff191660011790555b60408051878152602081018690526001600160a01b0387169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d791015b60405180910390a3505050610c946001609755565b611b09613efe565b611b136000613f58565b565b6000611b1f61244c565b611b497f0000000000000000000000000000000000000000000000000000000000000000806151e0565b610bea9190615215565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd591906150bc565b15611bf25760405162461bcd60e51b8152600401610d5d90615193565b611bfa613bec565b60008281526101386020526040902054829060ff161515600114611c465760405162461bcd60e51b8152602060048201526003602482015262424e4160e81b6044820152606401610d5d565b611c4e613e2b565b6040516304ef887f60e51b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690639df10fe0906024016020604051808303816000875af1158015611cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cda91906150bc565b611cf65760405162461bcd60e51b8152600401610d5d906151b2565b6000611d0185613faa565b9050600080611d0f87614045565b604051634b67a05b60e11b8152600481018a905291935091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906396cf40b690602401602060405180830381865afa158015611d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da0919061517a565b90506000611db582611db06135bf565b6140ed565b90506000611dc3868361364a565b905080891215611dfb5760405162461bcd60e51b815260206004820152600360248201526215105160ea1b6044820152606401610d5d565b6000811315611fba576000611e0f826140fc565b90506000611ea1827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f8cbc5d66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e99919061517a565b612710613d7b565b9050611ed2333083611eb3868c6150d9565b611ebd9190615229565b61012e546001600160a01b0316929190613e85565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166372c8fc0e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f569190614f80565b90508115611f775761012e54611f77906001600160a01b0316338385613e85565b876101346000828254611f8a91906150d9565b90915550611f9a90508284615229565b61013a6000828254611fac9190615240565b909155506120349350505050565b6000611fc5826140fc565b905085811115611fd25750845b6000611fde8288615229565b90508015611fff5761012e54611fff906001600160a01b0316333084613e85565b86610134600082825461201291906150d9565b925050819055508161013a600082825461202c9190615281565b909155505050505b604051630da8959360e01b8152600481018b90523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630da8959390604401600060405180830381600087803b15801561209c57600080fd5b505af11580156120b0573d6000803e3d6000fd5b505060408051888152602081018d90523393508d92507f274d762f568e6bddf149314ec29fac2cc57609d38374d13f92dad87efa588387910160405180910390a3505050505050506121026001609755565b505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146121685760405162461bcd60e51b8152600401610d5d9060208082526004908201526327a9a1a360e11b604082015260600190565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ea91906150bc565b156122075760405162461bcd60e51b8152600401610d5d90615193565b61220f613bec565b61012f546001600160a01b038581169116146122565760405162461bcd60e51b8152600401610d5d90602080825260049082015263135350d560e21b604082015260600190565b61225f86612acb565b61ffff168161ffff16101561229c5760405162461bcd60e51b815260206004820152600360248201526224a4a960e91b6044820152606401610d5d565b6101375463ffffffff640100000000909104811690831611156122e75760405162461bcd60e51b815260206004820152600360248201526213135160ea1b6044820152606401610d5d565b856122f06133e1565b10156123245760405162461bcd60e51b815260206004820152600360248201526204c4d560ec1b6044820152606401610d5d565b600061232f876136dc565b9050808610156123655760405162461bcd60e51b81526020600482015260016024820152604360f81b6044820152606401610d5d565b61012e5461239d906001600160a01b03167f000000000000000000000000000000000000000000000000000000000000000089614118565b6123a68861422d565b8661013360008282546123b991906150d9565b9091555050600088815261013860209081526040808320805460ff19166001179055610139825291829020899055815189815290810188905263ffffffff85168183015261ffff84166060820152905189916001600160a01b038c16917fe235603860e031bbbc9226d101fa83a2a56a9ac8a576441e08de342faed03a58916080908290030190a3505050505050505050565b600080612457613704565b905061246260cb5490565b61248d577f000000000000000000000000000000000000000000000000000000000000000091505090565b6124bb817f000000000000000000000000000000000000000000000000000000000000000061174060cb5490565b91505090565b6124c9613efe565b61013e55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146125305760405162461bcd60e51b8152600401610d5d9060208082526004908201526327aa2b1960e11b604082015260600190565b60008481526101386020526040902054849060ff16151560011461257c5760405162461bcd60e51b8152602060048201526003602482015262424e4160e81b6044820152606401610d5d565b600085815261013960205260408120549081851061259a578161259c565b845b905080610139600089815260200190815260200160002060008282546125c29190615229565b925050819055508061013460008282546125dc91906150d9565b925050819055508361013660008282546125f691906150d9565b90915550600090508286106126145761260f8387615229565b612617565b60005b905080610135600082825461262c91906150d9565b9091555050610134546101365460408051898152602081018990529081019290925260608201526001600160a01b0388169089907f096eee4238d7fc8b087bfbce1d8c5019025fcdd6db735aa0c1810ab450ccc81d9060800160405180910390a35050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271b91906150bc565b156127385760405162461bcd60e51b8152600401610d5d90615193565b612740613bec565b612748613e2b565b6040516304ef887f60e51b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690639df10fe0906024016020604051808303816000875af11580156127b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d491906150bc565b6127f05760405162461bcd60e51b8152600401610d5d906151b2565b6127f984612b2c565b91506000821161280857600080fd5b61012e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612852573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612876919061517a565b61012e54909150612892906001600160a01b0316333086613e85565b61012e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156128dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612900919061517a565b905061290c84836150d9565b811461293f5760405162461bcd60e51b81526020600482015260026024820152612a2160f11b6044820152606401610d5d565b83610131600082825461295291906150d9565b9091555061296290508587613ef0565b61013b5460ff166129f3576033546001600160a01b031633146129ac5760405162461bcd60e51b8152602060048201526002602482015261494360f01b6044820152606401610d5d565b620f42408610156129e45760405162461bcd60e51b8152602060048201526002602482015261495360f01b6044820152606401610d5d565b61013b805460ff191660011790555b60408051858152602081018890526001600160a01b0387169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79101611aec565b606060cd8054610bfe90614f45565b60003381612a53828661351e565b905083811015612ab35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d5d565b612ac08286868403613795565b506001949350505050565b6000612b05612ad983611706565b61013754612afb9061ffff600160401b8204811691600160501b9004166152c0565b61ffff169061433e565b61013754610c949190600160401b900461ffff166152e3565b600033610da6818585613a3b565b6000610c9482610dbe611b15565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbe91906150bc565b15612bdb5760405162461bcd60e51b8152600401610d5d90615193565b612be3613bec565b612beb613e2b565b6040516304ef887f60e51b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690639df10fe0906024016020604051808303816000875af1158015612c53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7791906150bc565b612c935760405162461bcd60e51b8152600401610d5d906151b2565b612c9c85610db0565b915060008211612cd25760405162461bcd60e51b81526020600482015260016024820152605360f81b6044820152606401610d5d565b6001600160a01b038316600090815260fb602052604090205461013c54612cf990826150d9565b421015612d2d5760405162461bcd60e51b8152602060048201526002602482015261535760f01b6044820152606401610d5d565b336001600160a01b03851614612d6a5760405162461bcd60e51b8152602060048201526002602482015261554160f01b6044820152606401610d5d565b612d748484614350565b856101326000828254612d8791906150d9565b909155505061012e54612da4906001600160a01b0316868861435a565b60408051878152602081018590526001600160a01b03808716929088169183917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db91015b60405180910390a450506113406001609755565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e8091906150bc565b15612e9d5760405162461bcd60e51b8152600401610d5d90615193565b612ea5613bec565b612ead613e2b565b6040516304ef887f60e51b81523360048201527f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b03821690639df10fe0906024016020604051808303816000875af1158015612f15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f3991906150bc565b612f555760405162461bcd60e51b8152600401610d5d906151b2565b60008511612f895760405162461bcd60e51b81526020600482015260016024820152605360f81b6044820152606401610d5d565b612f9585610c8f611b15565b9150336001600160a01b03841614612fd45760405162461bcd60e51b8152602060048201526002602482015261554160f01b6044820152606401610d5d565b6001600160a01b038316600090815260fb602052604090205461013c54612ffb90826150d9565b42101561302f5760405162461bcd60e51b815260206004820152600260248201526129a960f11b6044820152606401610d5d565b6130398487614350565b82610132600082825461304c91906150d9565b909155505061012e54613069906001600160a01b0316868561435a565b60408051848152602081018890526001600160a01b03808716929088169183917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db9101612de8565b6000610c9482610c8f61244c565b60008073a59e62116a3bcecb2ece385558533dcce1acad5063caf0f033846040518263ffffffff1660e01b81526004016130f99190615309565b602060405180830381865af4158015613116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313a919061517a565b9050600061013e5460001461315b576131568261013e54613d0e565b6116a6565b5092915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e491906150bc565b156132015760405162461bcd60e51b8152600401610d5d90615193565b613209613bec565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635426adf06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613269573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328d9190614f80565b61012e5460405163f3fef3a360e01b81526001600160a01b0391821660048201526024810185905291925082169063f3fef3a390604401600060405180830381600087803b1580156132de57600080fd5b505af11580156132f2573d6000803e3d6000fd5b50506040518492507fa0dae38c2f0a9884eb9f552aaef81b3026f43a0bf6721c92a8a6a1e623a583bb9150600090a25050565b600061333360655460ff1690565b1561334057506000919050565b6001600160a01b038216600090815260c9602052604081205461336290610c81565b61012e546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156133b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d5919061517a565b90506116a68282613d0e565b6101375460009081906134009061ffff166133fa613704565b9061433e565b9050600061340c613d53565b905080821161341e5760009250505090565b6134288183615229565b9250505090565b600061343d60655460ff1690565b1561344a57506000919050565b6001600160a01b038216600090815260c9602090815260408083205460fb9092529091205461013c5461347d90826150d9565b421161348d575060009392505050565b61012e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156134d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fb919061517a565b90506000613508826130b1565b90506135148482613d0e565b9695505050505050565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b613551613efe565b6001600160a01b0381166135b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d5d565b61147781613f58565b6000610bea61013f547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f54074446040518163ffffffff1660e01b8152600401602060405180830381865afa158015613626573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db0919061517a565b6000808211801561365a57508142115b61368c5760405162461bcd60e51b815260206004820152600360248201526213111560ea1b6044820152606401610d5d565b60006136988342615229565b905060006136a98262012a70615281565b905061270f198112156136bc575061270f195b6127106136c9828761537b565b6136d39190615400565b95945050505050565b6000806136e8836115fa565b6101375490915061134090829062010000900461ffff1661433e565b600080610132546101355461013a5461013654610131546137259190615240565b61372f9190615240565b6137399190615240565b6137439190615281565b9050600081136137545760006124bb565b919050565b60008161376857506000610c94565b611340837f000000000000000000000000000000000000000000000000000000000000000084600061438a565b6001600160a01b0383166137f75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d5d565b6001600160a01b0382166138585760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d5d565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000816138c857506000610c94565b611340837f000000000000000000000000000000000000000000000000000000000000000084600161438a565b600054610100900460ff1661391c5760405162461bcd60e51b8152600401610d5d9061542e565b611b136143db565b600054610100900460ff1661394b5760405162461bcd60e51b8152600401610d5d9061542e565b611b1361440b565b600054610100900460ff1661397a5760405162461bcd60e51b8152600401610d5d9061542e565b611b136040518060400160405280601081526020016f4c656e646572506f6f6c53686172657360801b815250604051806040016040528060038152602001624c505360e81b81525061443e565b60006139d3848461351e565b9050600019811461131b5781811015613a2e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610d5d565b61131b8484848403613795565b6001600160a01b038316613a9f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d5d565b6001600160a01b038216613b015760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d5d565b6001600160a01b038316600090815260c9602052604090205481811015613b795760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d5d565b6001600160a01b03808516600081815260c9602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613bd99086815260200190565b60405180910390a361131b84848461446f565b60655460ff1615611b135760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610d5d565b613c3a613bec565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613c6f3390565b6040516001600160a01b03909116815260200160405180910390a1565b60655460ff16611b135760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610d5d565b613cdd613c8c565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33613c6f565b6000818310613d1d5781611340565b5090919050565b6000611340837f000000000000000000000000000000000000000000000000000000000000000084600161438a565b600061013354610134541115613d695750600090565b6101345461013354610bea9190615229565b600080806000198587098587029250828110838203039150508060001415613db657838281613dac57613dac6151ff565b0492505050611340565b808411613dc257600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60026097541415613e7e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610d5d565b6002609755565b6040516001600160a01b038085166024830152831660448201526064810182905261131b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526144cb565b613efa828261459d565b5050565b6033546001600160a01b03163314611b135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d5d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60405163e0d3d58d60e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e0d3d58d9060240161010060405180830381865afa158015614013573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140379190615479565b509198975050505050505050565b604051631042b85f60e01b815260048101829052426024820152600090819081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631042b85f906044016040805180830381865afa1580156140b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140da9190615519565b8051602090910151909590945092505050565b6000818311613d1d5781611340565b6000808212156141145761410f82615568565b610c94565b5090565b8015806141925750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561416c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614190919061517a565b155b6141fd5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610d5d565b6040516001600160a01b03831660248201526044810182905261210290849063095ea7b360e01b90606401613eb9565b6040516315196bad60e31b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a8cb5d68906024016060604051808303816000875af1158015614294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b89190615585565b5050604051638fa40d8960e01b8152600481018390523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169150638fa40d8990604401600060405180830381600087803b15801561432357600080fd5b505af1158015614337573d6000803e3d6000fd5b5050505050565b6000611340838361ffff166002614666565b613efa8282614685565b6040516001600160a01b03831660248201526044810182905261210290849063a9059cbb60e01b90606401613eb9565b600080614398868686613d7b565b905060018360028111156143ae576143ae614d58565b1480156143cb5750600084806143c6576143c66151ff565b868809115b156136d3576135146001826150d9565b600054610100900460ff166144025760405162461bcd60e51b8152600401610d5d9061542e565b611b1333613f58565b600054610100900460ff166144325760405162461bcd60e51b8152600401610d5d9061542e565b6065805460ff19169055565b600054610100900460ff166144655760405162461bcd60e51b8152600401610d5d9061542e565b613efa82826147c0565b8015612102576001600160a01b038316600081815260fb6020908152604091829020429081905591519182527f67aa0649fcf8ca9db5d63dfaf61ef0d90b143c59875cf40cc852103787c82e39910160405180910390a2505050565b6000614520826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661480e9092919063ffffffff16565b805190915015612102578080602001905181019061453e91906150bc565b6121025760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d5d565b6001600160a01b0382166145f35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610d5d565b8060cb600082825461460591906150d9565b90915550506001600160a01b038216600081815260c960209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3613efa6000838361446f565b60006146718261481d565b61467b84866151e0565b6116a69190615215565b6001600160a01b0382166146e55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d5d565b6001600160a01b038216600090815260c96020526040902054818110156147595760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d5d565b6001600160a01b038316600081815260c960209081526040808320868603905560cb80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36121028360008461446f565b600054610100900460ff166147e75760405162461bcd60e51b8152600401610d5d9061542e565b81516147fa9060cc9060208501906149ab565b5080516121029060cd9060208401906149ab565b60606116a68484600085614835565b600061482a82600a615697565b610c949060646151e0565b6060824710156148965760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610d5d565b600080866001600160a01b031685876040516148b291906156a3565b60006040518083038185875af1925050503d80600081146148ef576040519150601f19603f3d011682016040523d82523d6000602084013e6148f4565b606091505b509150915061490587838387614910565b979650505050505050565b6060831561497c578251614975576001600160a01b0385163b6149755760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d5d565b50816116a6565b6116a683838151156149915781518083602001fd5b8060405162461bcd60e51b8152600401610d5d9190614a67565b8280546149b790614f45565b90600052602060002090601f0160209004810192826149d95760008555614a1f565b82601f106149f257805160ff1916838001178555614a1f565b82800160010185558215614a1f579182015b82811115614a1f578251825591602001919060010190614a04565b506141149291505b808211156141145760008155600101614a27565b60005b83811015614a56578181015183820152602001614a3e565b8381111561131b5750506000910152565b6020815260008251806020840152614a86816040850160208701614a3b565b601f01601f19169190910160400192915050565b600060208284031215614aac57600080fd5b5035919050565b6001600160a01b038116811461147757600080fd5b60008060408385031215614adb57600080fd5b8235614ae681614ab3565b946020939093013593505050565b6000806000838503610120811215614b0b57600080fd5b61010080821215614b1b57600080fd5b859450840135905067ffffffffffffffff80821115614b3957600080fd5b818601915086601f830112614b4d57600080fd5b813581811115614b5c57600080fd5b87602060a083028501011115614b7157600080fd5b6020830194508093505050509250925092565b600080600060608486031215614b9957600080fd5b8335614ba481614ab3565b92506020840135614bb481614ab3565b929592945050506040919091013590565b600060208284031215614bd757600080fd5b813561134081614ab3565b60008060408385031215614bf557600080fd5b823591506020830135614c0781614ab3565b809150509250929050565b60008060408385031215614c2557600080fd5b50508035926020909101359150565b63ffffffff8116811461147757600080fd5b803561ffff8116811461375457600080fd5b600080600080600080600080610100898b031215614c7557600080fd5b8835614c8081614ab3565b97506020890135965060408901359550606089013594506080890135614ca581614ab3565b935060a0890135925060c0890135614cbc81614c34565b9150614cca60e08a01614c46565b90509295985092959890939650565b60008060008060808587031215614cef57600080fd5b843593506020850135614d0181614ab3565b93969395505050506040820135916060013590565b600080600060608486031215614d2b57600080fd5b833592506020840135614d3d81614ab3565b91506040840135614d4d81614ab3565b809150509250925092565b634e487b7160e01b600052602160045260246000fd5b6020810160088310614d9057634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715614dcf57614dcf614d96565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614dfe57614dfe614d96565b604052919050565b801515811461147757600080fd5b60006020808385031215614e2757600080fd5b823567ffffffffffffffff80821115614e3f57600080fd5b818501915085601f830112614e5357600080fd5b813581811115614e6557614e65614d96565b614e73848260051b01614dd5565b818152848101925060a0918202840185019188831115614e9257600080fd5b938501935b82851015614f0b5780858a031215614eaf5760008081fd5b614eb7614dac565b8535614ec281614ab3565b815285870135614ed181614e06565b81880152604086810135614ee481614c34565b90820152606086810135908201526080808701359082015284529384019392850192614e97565b50979650505050505050565b60008060408385031215614f2a57600080fd5b8235614f3581614ab3565b91506020830135614c0781614ab3565b600181811c90821680614f5957607f821691505b60208210811415614f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215614f9257600080fd5b815161134081614ab3565b600060208284031215614faf57600080fd5b813561134081614c34565b600060208284031215614fcc57600080fd5b61134082614c46565b634e487b7160e01b600052603260045260246000fd5b8135614ff681614ab3565b81546001600160a01b031981166001600160a01b03929092169182178355602084013561502281614e06565b60ff60a01b90151560a01b166001600160a81b03198216831781178455604085013561504d81614c34565b6001600160c81b0319929092169092179190911760a89190911b63ffffffff60a81b1617815560608201356001820155608090910135600290910155565b634e487b7160e01b600052601160045260246000fd5b60006000198214156150b5576150b561508b565b5060010190565b6000602082840312156150ce57600080fd5b815161134081614e06565b600082198211156150ec576150ec61508b565b500190565b60006020808301818452808554808352604092508286019150866000528360002060005b8281101561516d5781546001600160a01b038116855260a081811c60ff1615158887015260a89190911c63ffffffff168686015260018084015460608701526002840154608087015294019360039092019101615115565b5091979650505050505050565b60006020828403121561518c57600080fd5b5051919050565b60208082526005908201526405343465f560dc1b604082015260600190565b60208082526014908201527313dc9858db194e88139bdd08105c1c1c9bdd995960621b604082015260600190565b60008160001904831182151516156151fa576151fa61508b565b500290565b634e487b7160e01b600052601260045260246000fd5b600082615224576152246151ff565b500490565b60008282101561523b5761523b61508b565b500390565b600080821280156001600160ff1b03849003851316156152625761526261508b565b600160ff1b839003841281161561527b5761527b61508b565b50500190565b60008083128015600160ff1b85018412161561529f5761529f61508b565b6001600160ff1b03840183138116156152ba576152ba61508b565b50500390565b600061ffff838116908316818110156152db576152db61508b565b039392505050565b600061ffff8083168185168083038211156153005761530061508b565b01949350505050565b602080825282518282018190526000919060409081850190868401855b8281101561516d57815180516001600160a01b03168552868101511515878601528581015163ffffffff1686860152606080820151908601526080908101519085015260a09093019290850190600101615326565b60006001600160ff1b03818413828413808216868404861116156153a1576153a161508b565b600160ff1b60008712828116878305891216156153c0576153c061508b565b600087129250878205871284841616156153dc576153dc61508b565b878505871281841616156153f2576153f261508b565b505050929093029392505050565b60008261540f5761540f6151ff565b600160ff1b8214600019841416156154295761542961508b565b500590565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600080600080600080600080610100898b03121561549657600080fd5b88516154a181614ab3565b60208a01519098506154b281614ab3565b60408a015160608b015191985096506154ca81614ab3565b60808a015160a08b015191965094506154e281614c34565b60c08a01519093506154f381614c34565b60e08a01519092506007811061550857600080fd5b809150509295985092959890939650565b60006040828403121561552b57600080fd5b6040516040810181811067ffffffffffffffff8211171561554e5761554e614d96565b604052825181526020928301519281019290925250919050565b6000600160ff1b82141561557e5761557e61508b565b5060000390565b60008060006060848603121561559a57600080fd5b8351925060208401519150604084015190509250925092565b600181815b808511156155ee5781600019048211156155d4576155d461508b565b808516156155e157918102915b93841c93908002906155b8565b509250929050565b60008261560557506001610c94565b8161561257506000610c94565b816001811461562857600281146156325761564e565b6001915050610c94565b60ff8411156156435761564361508b565b50506001821b610c94565b5060208310610133831016604e8410600b8410161715615671575081810a610c94565b61567b83836155b3565b806000190482111561568f5761568f61508b565b029392505050565b600061134083836155f6565b600082516156b5818460208701614a3b565b919091019291505056fea2646970667358221220d473b707928c83204cf081bc02210203e27f43f5e5b24ab0039ff36736e978a964736f6c634300080b0033000000000000000000000000d3d79a066f2cd471841c047d372f218252dbf8ed000000000000000000000000b02165859ce5f61597bc09c8c0f78276777d9bf00000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f984