0 txs
0 calls
constructor
constructor(address _creditManager, address _creditFacade, (uint128 minDebt, uint128 maxDebt, address degenNFT, bool expirable, string name) opts)
functions
acl
viewfunction acl() view returns (address)
addressProvider
viewfunction addressProvider() view returns (address)
allowedAdapters
viewfunction allowedAdapters() view returns (address[])
controller
viewfunction controller() view returns (address)
creditFacade
viewfunction creditFacade() view returns (address)
creditManager
viewfunction creditManager() view returns (address)
emergencyLiquidators
viewfunction emergencyLiquidators() view returns (address[])
paused
viewfunction paused() view returns (bool)
underlying
viewfunction underlying() view returns (address)
version
viewfunction version() view returns (uint256)
addCollateralToken
nonpayablefunction addCollateralToken(address token, uint16 liquidationThreshold)
addEmergencyLiquidator
nonpayablefunction addEmergencyLiquidator(address liquidator)
allowAdapter
nonpayablefunction allowAdapter(address adapter)
allowToken
nonpayablefunction allowToken(address token)
forbidAdapter
nonpayablefunction forbidAdapter(address adapter)
forbidBorrowing
nonpayablefunction forbidBorrowing()
forbidToken
nonpayablefunction forbidToken(address token)
makeTokenQuoted
nonpayablefunction makeTokenQuoted(address token)
pause
nonpayablefunction pause()
rampLiquidationThreshold
nonpayablefunction rampLiquidationThreshold(address token, uint16 liquidationThresholdFinal, uint40 rampStart, uint24 rampDuration)
removeEmergencyLiquidator
nonpayablefunction removeEmergencyLiquidator(address liquidator)
resetCumulativeLoss
nonpayablefunction resetCumulativeLoss()
setBotList
nonpayablefunction setBotList(uint256 newVersion)
setController
nonpayablefunction setController(address newController)
setCreditFacade
nonpayablefunction setCreditFacade(address newCreditFacade, bool migrateParams)
setExpirationDate
nonpayablefunction setExpirationDate(uint40 newExpirationDate)
setFees
nonpayablefunction setFees(uint16 feeInterest, uint16 feeLiquidation, uint16 liquidationPremium, uint16 feeLiquidationExpired, uint16 liquidationPremiumExpired)
setLiquidationThreshold
nonpayablefunction setLiquidationThreshold(address token, uint16 liquidationThreshold)
setMaxCumulativeLoss
nonpayablefunction setMaxCumulativeLoss(uint128 newMaxCumulativeLoss)
setMaxDebtLimit
nonpayablefunction setMaxDebtLimit(uint128 maxDebt)
setMaxDebtPerBlockMultiplier
nonpayablefunction setMaxDebtPerBlockMultiplier(uint8 newMaxDebtLimitPerBlockMultiplier)
setMaxEnabledTokens
nonpayablefunction setMaxEnabledTokens(uint8 newMaxEnabledTokens)
setMinDebtLimit
nonpayablefunction setMinDebtLimit(uint128 minDebt)
setPriceOracle
nonpayablefunction setPriceOracle(uint256 newVersion)
unpause
nonpayablefunction unpause()
upgradeCreditConfigurator
nonpayablefunction upgradeCreditConfigurator(address newCreditConfigurator)
events
AddCollateralToken
event AddCollateralToken(address indexed token)
AddEmergencyLiquidator
event AddEmergencyLiquidator(address indexed liquidator)
AllowAdapter
event AllowAdapter(address indexed targetContract, address indexed adapter)
AllowToken
event AllowToken(address indexed token)
CreditConfiguratorUpgraded
event CreditConfiguratorUpgraded(address indexed creditConfigurator)
ForbidAdapter
event ForbidAdapter(address indexed targetContract, address indexed adapter)
ForbidToken
event ForbidToken(address indexed token)
NewController
event NewController(address indexed newController)
Paused
event Paused(address account)
QuoteToken
event QuoteToken(address indexed token)
RemoveEmergencyLiquidator
event RemoveEmergencyLiquidator(address indexed liquidator)
ResetCumulativeLoss
event ResetCumulativeLoss()
ScheduleTokenLiquidationThresholdRamp
event ScheduleTokenLiquidationThresholdRamp(address indexed token, uint16 liquidationThresholdInitial, uint16 liquidationThresholdFinal, uint40 timestampRampStart, uint40 timestampRampEnd)
SetBorrowingLimits
event SetBorrowingLimits(uint256 minDebt, uint256 maxDebt)
SetBotList
event SetBotList(address indexed botList)
SetCreditFacade
event SetCreditFacade(address indexed creditFacade)
SetExpirationDate
event SetExpirationDate(uint40 expirationDate)
SetMaxCumulativeLoss
event SetMaxCumulativeLoss(uint128 maxCumulativeLoss)
SetMaxDebtPerBlockMultiplier
event SetMaxDebtPerBlockMultiplier(uint8 maxDebtPerBlockMultiplier)
SetMaxEnabledTokens
event SetMaxEnabledTokens(uint8 maxEnabledTokens)
SetPriceOracle
event SetPriceOracle(address indexed priceOracle)
SetTokenLiquidationThreshold
event SetTokenLiquidationThreshold(address indexed token, uint16 liquidationThreshold)
Unpaused
event Unpaused(address account)
UpdateFees
event UpdateFees(uint16 feeInterest, uint16 feeLiquidation, uint16 liquidationPremium, uint16 feeLiquidationExpired, uint16 liquidationPremiumExpired)
errors
AdapterIsNotRegisteredException
error AdapterIsNotRegisteredException()
AddressIsNotContractException
error AddressIsNotContractException(address)
CallerNotConfiguratorException
error CallerNotConfiguratorException()
CallerNotControllerException
error CallerNotControllerException()
CallerNotPausableAdminException
error CallerNotPausableAdminException()
CallerNotUnpausableAdminException
error CallerNotUnpausableAdminException()
IncompatibleContractException
error IncompatibleContractException()
IncorrectExpirationDateException
error IncorrectExpirationDateException()
IncorrectLimitsException
error IncorrectLimitsException()
IncorrectLiquidationThresholdException
error IncorrectLiquidationThresholdException()
IncorrectParameterException
error IncorrectParameterException()
IncorrectTokenContractException
error IncorrectTokenContractException()
PriceFeedDoesNotExistException
error PriceFeedDoesNotExistException()
TargetContractNotAllowedException
error TargetContractNotAllowedException()
TokenIsNotQuotedException
error TokenIsNotQuotedException()
TokenNotAllowedException
error TokenNotAllowedException()
ZeroAddressException
error ZeroAddressException()
creation bytecode
0x61010060408190526000805461ff00191690911790553480156200002257600080fd5b5060405162005bbc38038062005bbc8339810160408190526200004591620011eb565b826001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000084573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000aa9190620012e0565b8080620000b78162000660565b604051632bdad0e360e11b8152621050d360ea1b6004820152600060248201526001600160a01b038316906357b5a1c690604401602060405180830381865afa15801562000109573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012f9190620012e0565b6001600160a01b031660808190526000805460ff1916905560408051638da5cb5b60e01b81529051919350638da5cb5b92506004808201926020929091908290030181865afa15801562000187573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ad9190620012e0565b6000805462010000600160b01b031916620100006001600160a01b0393841602179055841660c081905260408051636f307dc360e01b81529051919250636f307dc39160048083019260209291908290030181865afa15801562000215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023b9190620012e0565b6001600160a01b031660e0816001600160a01b031681525050826001600160a01b0316632954018c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000293573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b99190620012e0565b6001600160a01b031660a0816001600160a01b031681525050600060c0516001600160a01b031663f9aa028a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033b9190620012e0565b90506001600160a01b0381163014620004d4576000816001600160a01b0316631c42130e6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200038f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620003b9919081019062001307565b805190915060005b818110156200040b5762000401838281518110620003e357620003e3620013c5565b602002602001015160016200068b60201b62001f421790919060201c565b50600101620003c1565b506000836001600160a01b031663c752d2476040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200044d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000477919081019062001307565b90508051915060005b82811015620004ca57620004c0828281518110620004a257620004a2620013c5565b602002602001015160036200068b60201b62001f421790919060201c565b5060010162000480565b5050505062000656565b620005046113886096620004ed610190612710620013db565b6064620004fe60c8612710620013db565b620006ab565b60c05160405163acb0e84560e01b81526001600160a01b0385811660048301529091169063acb0e84590602401600060405180830381600087803b1580156200054c57600080fd5b505af115801562000561573d6000803e3d6000fd5b50506040516001600160a01b03861692507f1cd439329e916b95ce297eb699326f2799c8de28be6bba10f28db1d9067778f19150600090a260c0516001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005da573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006009190620012e0565b6001600160a01b03167f88a686e0e341d9099f2f990c3aa759a86822142a67579064b43ded9354a2566260405160405180910390a26200064283600262000977565b815160208301516200065691859162000b12565b505050506200151d565b6001600160a01b0381166200068857604051635919af9760e11b815260040160405180910390fd5b50565b6000620006a2836001600160a01b03841662000d25565b90505b92915050565b6000620006b98585620013db565b9050600060c0516001600160a01b03166352c5fe1160016040518263ffffffff1660e01b8152600401620006ef91815260200190565b6040805180830381865afa1580156200070c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200073291906200141f565b9150508061ffff168261ffff16146200078657620007508262000d77565b60e05160405161ffff841681526001600160a01b039091169060008051602062005b9c8339815191529060200160405180910390a25b600080600080600060c0516001600160a01b0316639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa158015620007cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007f5919062001459565b945094509450945094508461ffff168c61ffff161480156200081e57508361ffff168b61ffff16145b80156200083257508261ffff168a61ffff16145b80156200084657508161ffff168961ffff16145b80156200085a57508061ffff168861ffff16145b156200086d575050505050505062000970565b60c051604051637903699560e11b815261ffff808f166004830152808e166024830152808d166044830152808c1660648301528a1660848201526001600160a01b039091169063f206d32a9060a401600060405180830381600087803b158015620008d757600080fd5b505af1158015620008ec573d6000803e3d6000fd5b505050507f214e595f9b6bdb12147befdaaea117fe5a00b2e9217e2e646923f6092798e7de8c8c8c612710620009239190620013db565b8c620009328d612710620013db565b6040805161ffff96871681529486166020860152928516848401529084166060840152909216608082015290519081900360a00190a1505050505050505b5050505050565b6000829050806001600160a01b031663478ade366040518163ffffffff1660e01b8152600401602060405180830381865afa158015620009bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009e19190620014c9565b60ff168260ff1603620009f357505050565b600080826001600160a01b031663166bf9d96040518163ffffffff1660e01b81526004016040805180830381865afa15801562000a34573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a5a9190620014ee565b604051631656af9d60e01b81526001600160801b0380841660048301528216602482015260ff8716604482015291935091506001600160a01b03841690631656af9d90606401600060405180830381600087803b15801562000abb57600080fd5b505af115801562000ad0573d6000803e3d6000fd5b505060405160ff871681527faebbd82c9dcdcd553331f5850bbdf5add33bf8fce5c7c76e2c9e7912ad5f15649250602001905060405180910390a15050505050565b806001600160801b0316826001600160801b0316111562000b46576040516309aadd6f60e41b815260040160405180910390fd5b6000839050600080826001600160a01b031663166bf9d96040518163ffffffff1660e01b81526004016040805180830381865afa15801562000b8c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bb29190620014ee565b91509150846001600160801b0316826001600160801b031614801562000be95750836001600160801b0316816001600160801b0316145b1562000bf757505050505050565b826001600160a01b0316631656af9d8686866001600160a01b031663478ade366040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c47573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c6d9190620014c9565b6040516001600160e01b031960e086901b1681526001600160801b03938416600482015292909116602483015260ff166044820152606401600060405180830381600087803b15801562000cc057600080fd5b505af115801562000cd5573d6000803e3d6000fd5b5050604080516001600160801b03808a168252881660208201527fb2cc80ffa4c2f75731dbb99fcd29cccd7829c55d4cd5d6a884506b1435d6d1f3935001905060405180910390a1505050505050565b600081815260018301602052604081205462000d6e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620006a5565b506000620006a5565b60c05160e0516040516305e4642760e31b81526001600160a01b03918216600482015261ffff841660248201819052604482015264ffffffffff606482015260006084820152911690632f2321389060a401600060405180830381600087803b15801562000de457600080fd5b505af115801562000df9573d6000803e3d6000fd5b50505050600060c0516001600160a01b031663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e669190620014c9565b60ff16905060015b8181101562000f195760c0516040516352c5fe1160e01b81526001831b600482015260009182916001600160a01b03909116906352c5fe11906024016040805180830381865afa15801562000ec7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000eed91906200141f565b915091508461ffff168161ffff16111562000f0e5762000f0e828662000f1e565b505060010162000e6e565b505050565b8162000f2a8162001082565b60c0516040516352c5fe1160e01b8152600160048201526000916001600160a01b0316906352c5fe11906024016040805180830381865afa15801562000f74573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f9a91906200141f565b9150508061ffff168361ffff16111562000fc7576040516333c6608d60e01b815260040160405180910390fd5b60c0516040516305e4642760e31b81526001600160a01b03868116600483015261ffff861660248301819052604483015264ffffffffff60648301526000608483015290911690632f2321389060a401600060405180830381600087803b1580156200103257600080fd5b505af115801562001047573d6000803e3d6000fd5b505060405161ffff861681526001600160a01b038716925060008051602062005b9c833981519152915060200160405180910390a250505050565b60e0516001600160a01b0316816001600160a01b031603620006885760405163700ca0af60e01b815260040160405180910390fd5b6001600160a01b03811681146200068857600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715620011085762001108620010cd565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620011395762001139620010cd565b604052919050565b80516001600160801b03811681146200115957600080fd5b919050565b600082601f8301126200117057600080fd5b81516001600160401b038111156200118c576200118c620010cd565b6020620011a2601f8301601f191682016200110e565b8281528582848701011115620011b757600080fd5b60005b83811015620011d7578581018301518282018401528201620011ba565b506000928101909101919091529392505050565b6000806000606084860312156200120157600080fd5b83516200120e81620010b7565b60208501519093506200122181620010b7565b60408501519092506001600160401b03808211156200123f57600080fd5b9085019060a082880312156200125457600080fd5b6200125e620010e3565b620012698362001141565b8152620012796020840162001141565b602082015260408301516200128e81620010b7565b604082015260608301518015158114620012a757600080fd5b6060820152608083015182811115620012bf57600080fd5b620012cd898286016200115e565b6080830152508093505050509250925092565b600060208284031215620012f357600080fd5b81516200130081620010b7565b9392505050565b600060208083850312156200131b57600080fd5b82516001600160401b03808211156200133357600080fd5b818501915085601f8301126200134857600080fd5b8151818111156200135d576200135d620010cd565b8060051b9150620013708483016200110e565b81815291830184019184810190888411156200138b57600080fd5b938501935b83851015620013b95784519250620013a883620010b7565b828252938501939085019062001390565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b61ffff8281168282160390808211156200140557634e487b7160e01b600052601160045260246000fd5b5092915050565b805161ffff811681146200115957600080fd5b600080604083850312156200143357600080fd5b82516200144081620010b7565b915062001450602084016200140c565b90509250929050565b600080600080600060a086880312156200147257600080fd5b6200147d866200140c565b94506200148d602087016200140c565b93506200149d604087016200140c565b9250620014ad606087016200140c565b9150620014bd608087016200140c565b90509295509295909350565b600060208284031215620014dc57600080fd5b815160ff811681146200130057600080fd5b600080604083850312156200150257600080fd5b6200150d8362001141565b9150620014506020840162001141565b60805160a05160c05160e05161452662001676600039600081816103ad0152818161224e015281816137860152613e01015260008181610484015281816105c401528181610695015281816107150152818161088301528181610cb001528181610d5b01528181610e4d01528181610f040152818161106d0152818161120e015281816112e2015281816119db01528181611bb201528181611c1001528181611cc001528181611d6401528181611dfd015281816124c40152818161296a01528181612dc401528181612f410152818161300e015281816130ee015281816132280152818161335f0152818161342701528181613650015281816136ed015281816137df0152818161392301528181613e4c01528181613eac0152613f590152600081816102d201528181611197015261193f0152600081816104d901528181613a9301528181613c920152613d1401526145266000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c80638c83d0dd11610145578063c12c21c0116100bd578063de2873591161008c578063effa5d6e11610071578063effa5d6e1461050e578063f206d32a14610521578063f77c47911461053457600080fd5b8063de287359146104d4578063eb9606df146104fb57600080fd5b8063c12c21c01461047f578063c1b9366f146104a6578063c752d247146104b9578063dc2b21c1146104c157600080fd5b8063a706efc411610114578063b53472ef116100f9578063b53472ef14610451578063b954d80914610464578063bee1babf1461047757600080fd5b8063a706efc414610436578063a70bc5421461043e57600080fd5b80638c83d0dd146103ea57806392eefe9b146103fd57806398acdd7714610410578063a460e1041461042357600080fd5b80633f4ba83a116101d85780635c975abb116101a75780636f307dc31161018c5780636f307dc3146103a85780638456cb59146103cf57806384edaa42146103d757600080fd5b80635c975abb1461037f578063625c513b1461039557600080fd5b80633f4ba83a1461033a578063456e0742146103425780634e48e9c71461035557806354fd4d501461036857600080fd5b806328afc97c1161022f5780632f7a1881116102145780632f7a18811461030c5780633d2ff001146103145780633e7c88d61461032757600080fd5b806328afc97c146102ba5780632954018c146102cd57600080fd5b806308c25f8f146102615780631495c7d2146102765780631c42130e1461028957806324147708146102a7575b600080fd5b61027461026f366004614032565b61054d565b005b610274610284366004614064565b610569565b6102916107cd565b60405161029e9190614081565b60405180910390f35b6102746102b5366004614064565b6107de565b6102746102c83660046140dc565b610810565b6102f47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161029e565b6102f4610cac565b610274610322366004614138565b610d30565b61027461033536600461419c565b610fdd565b610274611002565b610274610350366004614064565b611014565b610274610363366004614064565b611100565b61037161012d81565b60405190815260200161029e565b60005460ff16604051901515815260200161029e565b6102746103a33660046141ca565b611150565b6102f47f000000000000000000000000000000000000000000000000000000000000000081565b610274611376565b6102746103e5366004614064565b611386565b6102746103f8366004614032565b61139f565b61027461040b366004614064565b611424565b61027461041e366004614032565b6114af565b610274610431366004614064565b611534565b61027461165f565b61027461044c36600461419c565b611770565b61027461045f366004614064565b611782565b6102746104723660046141f2565b6118c5565b6102746118de565b6102f47f000000000000000000000000000000000000000000000000000000000000000081565b6102746104b43660046141ca565b6118f8565b6102916119c5565b6102746104cf3660046141f2565b6119d1565b6102f47f000000000000000000000000000000000000000000000000000000000000000081565b61027461050936600461420f565b611b40565b61027461051c366004614064565b611b59565b61027461052f36600461422c565b611eb4565b6000546102f4906201000090046001600160a01b031681565b610555611f60565b610566610560610cac565b82611f9f565b50565b80610573816120d5565b61057b612115565b600061058683612173565b6040517fff6875430000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063ff68754390602401602060405180830381865afa15801561060b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062f919061429d565b6001600160a01b03160361066f576040517f67cfe59500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516320084f1d60e21b81526001600160a01b038481166004830152600060248301527f000000000000000000000000000000000000000000000000000000000000000016906380213c7490604401600060405180830381600087803b1580156106d957600080fd5b505af11580156106ed573d6000803e3d6000fd5b50506040516320084f1d60e21b8152600060048201526001600160a01b0384811660248301527f00000000000000000000000000000000000000000000000000000000000000001692506380213c749150604401600060405180830381600087803b15801561075b57600080fd5b505af115801561076f573d6000803e3d6000fd5b5050505061078783600161222390919063ffffffff16565b50826001600160a01b0316816001600160a01b03167f3f688c7b4a117ceec70e927a9ed68836d3da0224eee121f856fc87ad5baa2a8060405160405180910390a3505050565b60606107d96001612238565b905090565b806107e8816120d5565b816107f28161224c565b6107fa6122b7565b61080b610805610cac565b846122f6565b505050565b610818611f60565b6000610822610cac565b9050806001600160a01b0316836001600160a01b03160361084257505050565b61084b8361240e565b6040517facb0e8450000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063acb0e84590602401600060405180830381600087803b1580156108c757600080fd5b505af11580156108db573d6000803e3d6000fd5b505050508115610c6a5761095083826001600160a01b031663478ade366040518163ffffffff1660e01b8152600401602060405180830381865afa158015610927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094b91906142ba565b612514565b600080826001600160a01b031663166bf9d96040518163ffffffff1660e01b81526004016040805180830381865afa158015610990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b491906142d7565b915091506109c38583836126bf565b6000836001600160a01b031663503931096040518163ffffffff1660e01b81526004016040805180830381865afa158015610a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2691906142d7565b915050610a338682611f9f565b610a3c866128f8565b610aa786856001600160a01b0316639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa29190614306565b61292d565b836001600160a01b031663b1836d326040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b09919061431f565b8015610b725750856001600160a01b031663b1836d326040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b72919061431f565b15610be257610be286856001600160a01b0316638f6204876040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdd919061433c565b6129f0565b6000846001600160a01b031663f6722f626040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c46919061429d565b90506001600160a01b03811615610c6157610c618782612b65565b50505050610c72565b610c72612c96565b6040516001600160a01b038416907f1cd439329e916b95ce297eb699326f2799c8de28be6bba10f28db1d9067778f190600090a2505b5050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632f7a18816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d0c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d9919061429d565b83610d3a8161224c565b610d42612115565b6040516352c5fe1160e01b8152600160048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906352c5fe11906024016040805180830381865afa158015610da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcd9190614359565b9150508061ffff168561ffff161115610df9576040516333c6608d60e01b815260040160405180910390fd5b8364ffffffffff164211610e0d5783610e0f565b425b6040517f783274380000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301529195506000917f00000000000000000000000000000000000000000000000000000000000000001690637832743890602401602060405180830381865afa158015610e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb89190614388565b6040516305e4642760e31b81526001600160a01b03898116600483015261ffff80841660248401528916604483015264ffffffffff8816606483015262ffffff871660848301529192507f000000000000000000000000000000000000000000000000000000000000000090911690632f2321389060a401600060405180830381600087803b158015610f4a57600080fd5b505af1158015610f5e573d6000803e3d6000fd5b50505050866001600160a01b03167fa8193c198aab4146e3640f414ba8473918c6d028f45b27fb08b185a16c15ce238288888862ffffff168a610fa191906143bb565b6040805161ffff958616815293909416602084015264ffffffffff9182168385015216606082015290519081900360800190a250505050505050565b81610fe7816120d5565b610fef611f60565b610ff883612cd4565b61080b8383612feb565b61100a613192565b6110126131d1565b565b61101c611f60565b6001600160a01b0381163014610566576110358161240e565b6040517ff30ba4990000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063f30ba49990602401600060405180830381600087803b1580156110b157600080fd5b505af11580156110c5573d6000803e3d6000fd5b50506040516001600160a01b03841692507f5a0b7d0f9c24b39256e112a0584b4c5ce38d8f1dee2e7c56f15b852604cdc8869150600090a250565b611108611f60565b61111181613223565b611147576040517fbfb4633c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61056681613344565b611158611f60565b604051632bdad0e360e11b81527f50524943455f4f5241434c4500000000000000000000000000000000000000006004820152602481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906357b5a1c690604401602060405180830381865afa1580156111e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120a919061429d565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128e919061429d565b6001600160a01b0316816001600160a01b0316036112aa575050565b6040517f530e784f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063530e784f90602401600060405180830381600087803b15801561132657600080fd5b505af115801561133a573d6000803e3d6000fd5b50506040516001600160a01b03841692507f88a686e0e341d9099f2f990c3aa759a86822142a67579064b43ded9354a256629150600090a25050565b61137e6122b7565b6110126134bd565b61138e611f60565b610566611399610cac565b826134fa565b6113a7612115565b60006113b1610cac565b90506000816001600160a01b031663166bf9d96040518163ffffffff1660e01b81526004016040805180830381865afa1580156113f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141691906142d7565b50905061080b8282856126bf565b61142c611f60565b6000546001600160a01b0382811662010000909204161461056657600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b03841690810291909117825560405190917fe253457d9ad994ca9682fc3bbc38c890dca73a2d5ecee3809e548bac8b00d7c691a250565b6114b7612115565b60006114c1610cac565b90506000816001600160a01b031663166bf9d96040518163ffffffff1660e01b81526004016040805180830381865afa158015611502573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061152691906142d7565b91505061080b8284836126bf565b61153c611f60565b6000611546610cac565b9050611553600383612223565b50604051630e25d6f160e21b81526001600160a01b0383811660048301528216906338975bc490602401602060405180830381865afa15801561159a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115be919061431f565b6115c6575050565b60405163c5d7ca3960e01b81526001600160a01b0382169063c5d7ca39906115f59085906000906004016143d9565b600060405180830381600087803b15801561160f57600080fd5b505af1158015611623573d6000803e3d6000fd5b50506040516001600160a01b03851692507fc03fe683aa5f2a3776871ebf04508ced24c0335e0d19abd72b6a0d1950e1e2559150600090a25050565b611667611f60565b6000611671610cac565b90506000816001600160a01b031663503931096040518163ffffffff1660e01b81526004016040805180830381865afa1580156116b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d691906142d7565b604051630103dc6b60e01b81526001600160801b0382166004820152600160248201529092506001600160a01b0384169150630103dc6b90604401600060405180830381600087803b15801561172b57600080fd5b505af115801561173f573d6000803e3d6000fd5b50506040517f45013665e7af2da20f8bbc745e6760467c3c18d820f7052ad772158ce360d92d925060009150a15050565b611778611f60565b610ca88282612feb565b8061178c816120d5565b816117968161224c565b61179e611f60565b60006117a8610cac565b905060006117b585613615565b905080826001600160a01b0316639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181a9190614306565b16600003611829575050505050565b604051631379834960e11b81526001600160a01b038316906326f30692906118589088906001906004016143d9565b600060405180830381600087803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b50506040516001600160a01b03881692507f14009112f2dcb15cad32dab6bf972d6d85286e4ae1178f27323ffe25359459e69150600090a25050505050565b6118cd612115565b6105666118d8610cac565b82612514565b6118e66122b7565b6110126118f1610cac565b6000612514565b611900611f60565b604051632bdad0e360e11b81527f424f545f4c4953540000000000000000000000000000000000000000000000006004820152602481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906357b5a1c690604401602060405180830381865afa15801561198e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b2919061429d565b9050610ca86119bf610cac565b82612b65565b60606107d96003612238565b6119d9611f60565b7f000000000000000000000000000000000000000000000000000000000000000060ff8216600003611a1e576040516347fbaa9760e01b815260040160405180910390fd5b806001600160a01b0316632c521c066040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8091906142ba565b60ff168260ff1603611a90575050565b6040517fdc2b21c100000000000000000000000000000000000000000000000000000000815260ff831660048201526001600160a01b0382169063dc2b21c190602401600060405180830381600087803b158015611aed57600080fd5b505af1158015611b01573d6000803e3d6000fd5b505060405160ff851681527f289338cf948e424769e26fe06f36f4b1e62b60837ad92f16d81f61607c89b6989250602001905060405180910390a15050565b611b48612115565b610566611b53610cac565b826129f0565b80611b63816120d5565b611b6b611f60565b6000611b7683612173565b90506001600160a01b0381163b611bb05760405163df4c572d60e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161480611c085750611bf3610cac565b6001600160a01b0316816001600160a01b0316145b80611c4457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b80611c675750611c52610cac565b6001600160a01b0316836001600160a01b0316145b15611c855760405163fc1a554360e01b815260040160405180910390fd5b6040517ffdd576450000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063fdd5764590602401602060405180830381865afa158015611d09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2d919061429d565b90506001600160a01b03811615611dd6576040516320084f1d60e21b81526001600160a01b038281166004830152600060248301527f000000000000000000000000000000000000000000000000000000000000000016906380213c7490604401600060405180830381600087803b158015611da857600080fd5b505af1158015611dbc573d6000803e3d6000fd5b50505050611dd481600161222390919063ffffffff16565b505b6040516320084f1d60e21b81526001600160a01b03858116600483015283811660248301527f000000000000000000000000000000000000000000000000000000000000000016906380213c7490604401600060405180830381600087803b158015611e4157600080fd5b505af1158015611e55573d6000803e3d6000fd5b50505050611e6d846001611f4290919063ffffffff16565b50836001600160a01b0316826001600160a01b03167f0bc09e53304ef58ff3ff8295411d9171c75ee4af48277db5fc605ab12e056bee60405160405180910390a350505050565b611ebc611f60565b61271061ffff8616101580611ee05750612710611ed98585614414565b61ffff1610155b80611efa5750612710611ef38383614414565b61ffff1610155b15611f18576040516347fbaa9760e01b815260040160405180910390fd5b611f3b8585611f298661271061442f565b85611f368661271061442f565b6136bd565b5050505050565b6000611f57836001600160a01b038416613a09565b90505b92915050565b611f6933613a58565b611012576040517f61081c1500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008290506000816001600160a01b031663503931096040518163ffffffff1660e01b81526004016040805180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200791906142d7565b915050806001600160801b0316836001600160801b0316036120295750505050565b604051630103dc6b60e01b81526001600160801b0384166004820152600060248201526001600160a01b03831690630103dc6b90604401600060405180830381600087803b15801561207a57600080fd5b505af115801561208e573d6000803e3d6000fd5b50506040516001600160801b03861681527f349a31f3899f92873d644a2bb70787ec009398cb92d694f8420a9f03c7e3b0b19250602001905060405180910390a150505050565b6001600160a01b038116610566576040517fb2335f2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000546201000090046001600160a01b0316331480159061213c575061213a33613a58565b155b15611012576040517f0129bb9900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061217e8261240e565b816001600160a01b031663bd90df706040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156121d8575060408051601f3d908101601f191682019092526121d59181019061429d565b60015b6121f55760405163e9eddd1760e01b815260040160405180910390fd5b90506001600160a01b03811661221e5760405163fc1a554360e01b815260040160405180910390fd5b919050565b6000611f57836001600160a01b038416613b01565b6060600061224583613bfb565b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031603610566576040517f700ca0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6122c033613c57565b611012576040517fd794b1e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600061230283613615565b905080826001600160a01b0316639fd12b776040518163ffffffff1660e01b8152600401602060405180830381865afa158015612343573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123679190614306565b16156123735750505050565b604051631379834960e11b81526001600160a01b038316906326f30692906123a29086906000906004016143d9565b600060405180830381600087803b1580156123bc57600080fd5b505af11580156123d0573d6000803e3d6000fd5b50506040516001600160a01b03861692507f9d65afef45c30b784a1e4621dbcbb194ebb6aabe16c9a4abce9ab1775a962b769150600090a250505050565b80612418816120d5565b6001600160a01b0382163b61244b5760405163df4c572d60e01b81526001600160a01b0383166004820152602401611ba7565b816001600160a01b031663c12c21c06040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156124a5575060408051601f3d908101601f191682019092526124a29181019061429d565b60015b6124c25760405163e9eddd1760e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161461080b5760405163e9eddd1760e01b815260040160405180910390fd5b6000829050806001600160a01b031663478ade366040518163ffffffff1660e01b8152600401602060405180830381865afa158015612557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257b91906142ba565b60ff168260ff160361258c57505050565b600080826001600160a01b031663166bf9d96040518163ffffffff1660e01b81526004016040805180830381865afa1580156125cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f091906142d7565b6040517f1656af9d0000000000000000000000000000000000000000000000000000000081526001600160801b0380841660048301528216602482015260ff8716604482015291935091506001600160a01b03841690631656af9d90606401600060405180830381600087803b15801561266957600080fd5b505af115801561267d573d6000803e3d6000fd5b505060405160ff871681527faebbd82c9dcdcd553331f5850bbdf5add33bf8fce5c7c76e2c9e7912ad5f15649250602001905060405180910390a15050505050565b806001600160801b0316826001600160801b0316111561270b576040517f9aadd6f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000839050600080826001600160a01b031663166bf9d96040518163ffffffff1660e01b81526004016040805180830381865afa158015612750573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277491906142d7565b91509150846001600160801b0316826001600160801b03161480156127aa5750836001600160801b0316816001600160801b0316145b156127b757505050505050565b826001600160a01b0316631656af9d8686866001600160a01b031663478ade366040518163ffffffff1660e01b8152600401602060405180830381865afa158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a91906142ba565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160801b03938416600482015292909116602483015260ff166044820152606401600060405180830381600087803b15801561289457600080fd5b505af11580156128a8573d6000803e3d6000fd5b5050604080516001600160801b03808a168252881660208201527fb2cc80ffa4c2f75731dbb99fcd29cccd7829c55d4cd5d6a884506b1435d6d1f3935001905060405180910390a1505050505050565b60006129046003613cc3565b905060005b8181101561080b5761292583612920600384613ccd565b6134fa565b600101612909565b8015610ca8576040517f4fc0e3a80000000000000000000000000000000000000000000000000000000081526000828103831660048301819052917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634fc0e3a890602401602060405180830381865afa1580156129b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dd919061429d565b90506129e984826122f6565b501861292d565b8164ffffffffff8216421180612a7557508164ffffffffff16816001600160a01b0316638f6204876040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6b919061433c565b64ffffffffff1610155b15612aac576040517fe4eaca7f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517feb9606df00000000000000000000000000000000000000000000000000000000815264ffffffffff831660048201526001600160a01b0382169063eb9606df90602401600060405180830381600087803b158015612b0d57600080fd5b505af1158015612b21573d6000803e3d6000fd5b505060405164ffffffffff851681527fb019cf1dc4b3caa72aa4723abcc271a2bb3138bee0a89cd911fb8980b0c93d569250602001905060405180910390a1505050565b6000829050806001600160a01b031663f6722f626040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcc919061429d565b6001600160a01b0316826001600160a01b031603612be957505050565b6040517f8ad1386e0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152821690638ad1386e90602401600060405180830381600087803b158015612c4557600080fd5b505af1158015612c59573d6000803e3d6000fd5b50506040516001600160a01b03851692507f93c2c5d02f328eae23f02b70bcaf858ad014f03c74e0a10cb57124d45ea3e5429150600090a2505050565b6000612ca26003613cc3565b905060005b81811015610ca857612ccb612cc3600360001984860301613ccd565b600390612223565b50600101612ca7565b6001600160a01b0381163b612d075760405163df4c572d60e01b81526001600160a01b0382166004820152602401611ba7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038216906370a0823190602401602060405180830381865afa925050508015612d80575060408051601f3d908101601f19168201909252612d7d91810190614306565b60015b612db6576040517f528ca31d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060006001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e44919061429d565b6040517f9dcb511a0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301529190911690639dcb511a90602401602060405180830381865afa158015612ea5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec9919061429d565b6001600160a01b031603612f09576040517f68d8c6d800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fd48bfca70000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063d48bfca790602401600060405180830381600087803b158015612f8557600080fd5b505af1158015612f99573d6000803e3d6000fd5b50505050612fa681613223565b15612fb457612fb481613344565b6040516001600160a01b038216907f7c3f95f8569977586927f95930461a261e2121e326fcb513242f9e5c8b8ea6dc90600090a250565b81612ff58161224c565b6040516352c5fe1160e01b8152600160048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906352c5fe11906024016040805180830381865afa15801561305c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130809190614359565b9150508061ffff168361ffff1611156130ac576040516333c6608d60e01b815260040160405180910390fd5b6040516305e4642760e31b81526001600160a01b03858116600483015261ffff851660248301819052604483015264ffffffffff6064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690632f2321389060a401600060405180830381600087803b15801561313257600080fd5b505af1158015613146573d6000803e3d6000fd5b505060405161ffff861681526001600160a01b03871692507fda5e841a0cb137f4a60661969e409f01ef7627723a4a929414e4f69b5475ee8c915060200160405180910390a250505050565b61319b33613cd9565b611012576040517f16e29ab700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6131d9613d45565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663be8da14b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a8919061429d565b90506001600160a01b0381166132c15750600092915050565b6040517fd9b94b060000000000000000000000000000000000000000000000000000000081526001600160a01b03848116600483015282169063d9b94b0690602401602060405180830381865afa158015613320573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612245919061431f565b8061334e8161224c565b600061335983613615565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e0f838246040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133df9190614306565b9050818116156133ef5750505050565b6040517f86dfa53600000000000000000000000000000000000000000000000000000000815281831760048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906386dfa53690602401600060405180830381600087803b15801561346b57600080fd5b505af115801561347f573d6000803e3d6000fd5b50506040516001600160a01b03871692507fff7d56250177b6941b86ddf2db6637adfc6d47f46540feec1bc0fd5f1326858b9150600090a250505050565b6134c5613d97565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586132063390565b81613506600383611f42565b50604051630e25d6f160e21b81526001600160a01b0383811660048301528216906338975bc490602401602060405180830381865afa15801561354d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613571919061431f565b1561357b57505050565b60405163c5d7ca3960e01b81526001600160a01b0382169063c5d7ca39906135aa9085906001906004016143d9565b600060405180830381600087803b1580156135c457600080fd5b505af11580156135d8573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b5318c4163fcef2999d30de8d1af689327f68fa51a148804fa6ed8f5f40ff49150600090a2505050565b6040517fd5c2f4860000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063d5c2f48690602401602060405180830381865afa158015613699573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5a9190614306565b60006136c9858561442f565b6040516352c5fe1160e01b8152600160048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906352c5fe11906024016040805180830381865afa158015613733573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137579190614359565b9150508061ffff168261ffff16146137d55761377282613dea565b60405161ffff831681526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016907fda5e841a0cb137f4a60661969e409f01ef7627723a4a929414e4f69b5475ee8c9060200160405180910390a25b60008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639af1d35a6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561383b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385f919061444a565b945094509450945094508461ffff168c61ffff1614801561388757508361ffff168b61ffff16145b801561389a57508261ffff168a61ffff16145b80156138ad57508161ffff168961ffff16145b80156138c057508061ffff168861ffff16145b156138d15750505050505050611f3b565b6040517ff206d32a00000000000000000000000000000000000000000000000000000000815261ffff808e166004830152808d166024830152808c166044830152808b166064830152891660848201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f206d32a9060a401600060405180830381600087803b15801561396f57600080fd5b505af1158015613983573d6000803e3d6000fd5b505050507f214e595f9b6bdb12147befdaaea117fe5a00b2e9217e2e646923f6092798e7de8c8c8c6127106139b8919061442f565b8c6139c58d61271061442f565b6040805161ffff96871681529486166020860152928516848401529084166060840152909216608082015290519081900360a00190a1505050505050505050505050565b6000818152600183016020526040812054613a5057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611f5a565b506000611f5a565b6040517f5f259aba0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690635f259aba906024015b602060405180830381865afa158015613add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5a919061431f565b60008181526001830160205260408120548015613bea576000613b256001836144b1565b8554909150600090613b39906001906144b1565b9050818114613b9e576000866000018281548110613b5957613b596144c4565b9060005260206000200154905080876000018481548110613b7c57613b7c6144c4565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613baf57613baf6144da565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611f5a565b6000915050611f5a565b5092915050565b606081600001805480602002602001604051908101604052809291908181526020018280548015613c4b57602002820191906000526020600020905b815481526020019060010190808311613c37575b50505050509050919050565b6040517f3a41ec640000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690633a41ec6490602401613ac0565b6000611f5a825490565b6000611f578383613ff3565b6040517fd4eb5db00000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063d4eb5db090602401613ac0565b60005460ff166110125760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401611ba7565b60005460ff16156110125760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401611ba7565b6040516305e4642760e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015261ffff831660248301819052604483015264ffffffffff6064830152600060848301527f00000000000000000000000000000000000000000000000000000000000000001690632f2321389060a401600060405180830381600087803b158015613e9057600080fd5b505af1158015613ea4573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663458936f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f2c91906142ba565b60ff16905060015b8181101561080b576040516352c5fe1160e01b81526001821b600482015260009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906352c5fe11906024016040805180830381865afa158015613fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fcb9190614359565b915091508461ffff168161ffff161115613fe957613fe98286612feb565b5050600101613f34565b600082600001828154811061400a5761400a6144c4565b9060005260206000200154905092915050565b6001600160801b038116811461056657600080fd5b60006020828403121561404457600080fd5b81356122458161401d565b6001600160a01b038116811461056657600080fd5b60006020828403121561407657600080fd5b81356122458161404f565b6020808252825182820181905260009190848201906040850190845b818110156140c25783516001600160a01b03168352928401929184019160010161409d565b50909695505050505050565b801515811461056657600080fd5b600080604083850312156140ef57600080fd5b82356140fa8161404f565b9150602083013561410a816140ce565b809150509250929050565b61ffff8116811461056657600080fd5b64ffffffffff8116811461056657600080fd5b6000806000806080858703121561414e57600080fd5b84356141598161404f565b9350602085013561416981614115565b9250604085013561417981614125565b9150606085013562ffffff8116811461419157600080fd5b939692955090935050565b600080604083850312156141af57600080fd5b82356141ba8161404f565b9150602083013561410a81614115565b6000602082840312156141dc57600080fd5b5035919050565b60ff8116811461056657600080fd5b60006020828403121561420457600080fd5b8135612245816141e3565b60006020828403121561422157600080fd5b813561224581614125565b600080600080600060a0868803121561424457600080fd5b853561424f81614115565b9450602086013561425f81614115565b9350604086013561426f81614115565b9250606086013561427f81614115565b9150608086013561428f81614115565b809150509295509295909350565b6000602082840312156142af57600080fd5b81516122458161404f565b6000602082840312156142cc57600080fd5b8151612245816141e3565b600080604083850312156142ea57600080fd5b82516142f58161401d565b602084015190925061410a8161401d565b60006020828403121561431857600080fd5b5051919050565b60006020828403121561433157600080fd5b8151612245816140ce565b60006020828403121561434e57600080fd5b815161224581614125565b6000806040838503121561436c57600080fd5b82516143778161404f565b602084015190925061410a81614115565b60006020828403121561439a57600080fd5b815161224581614115565b634e487b7160e01b600052601160045260246000fd5b64ffffffffff818116838216019080821115613bf457613bf46143a5565b6001600160a01b0383168152604081016002831061440757634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b61ffff818116838216019080821115613bf457613bf46143a5565b61ffff828116828216039080821115613bf457613bf46143a5565b600080600080600060a0868803121561446257600080fd5b855161446d81614115565b602087015190955061447e81614115565b604087015190945061448f81614115565b60608701519093506144a081614115565b608087015190925061428f81614115565b81810381811115611f5a57611f5a6143a5565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220d6e55b640c4d14fab7e5f0e5de5f4468ecf6c5f5abad4c132d671a1afc0f96c964736f6c63430008110033da5e841a0cb137f4a60661969e409f01ef7627723a4a929414e4f69b5475ee8c0000000000000000000000004bf7481fdf7b67a8206254badc15480a55bb25ab000000000000000000000000ea64ce0932ce7edf92a95c72cb8ce4f9c185e89a0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000002b5e3af16b188000000000000000000000000000000000000000000000000003635c9adc5dea000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001877737445544820436f7272656c61746564205469657220310000000000000000