0 txs
1 call
constructor
No constructor.
functions
isPositionLiquidatable
nonpayablefunction isPositionLiquidatable(uint128 accountId, uint128 poolId, address collateralType) returns (bool)
isVaultLiquidatable
nonpayablefunction isVaultLiquidatable(uint128 poolId, address collateralType) returns (bool)
liquidate
nonpayablefunction liquidate(uint128 accountId, uint128 poolId, address collateralType, uint128 liquidateAsAccountId) returns (tuple liquidationData)
liquidateToTreasury
nonpayablefunction liquidateToTreasury(uint128 accountId, uint128 poolId, address collateralType) returns (tuple liquidationData)
liquidateVault
nonpayablefunction liquidateVault(uint128 poolId, address collateralType, uint128 liquidateAsAccountId, uint256 maxUsd) returns (tuple liquidationData)
events
Liquidation
event Liquidation(uint128 indexed accountId, uint128 indexed poolId, address indexed collateralType, (uint256 debtLiquidated, uint256 collateralLiquidated, uint256 amountRewarded) liquidationData, uint128 liquidateAsAccountId, address sender)
VaultLiquidation
event VaultLiquidation(uint128 indexed poolId, address indexed collateralType, (uint256 debtLiquidated, uint256 collateralLiquidated, uint256 amountRewarded) liquidationData, uint128 liquidateAsAccountId, address sender)
errors
AccountNotFound
error AccountNotFound(uint128 accountId)
CannotScaleEmptyMapping
error CannotScaleEmptyMapping()
EmptyDistribution
error EmptyDistribution()
EmptyRevertReason
error EmptyRevertReason()
Errors
error Errors(bytes[] errors)
FeatureUnavailable
error FeatureUnavailable(bytes32 which)
IneligibleForLiquidation
error IneligibleForLiquidation(uint256 collateralValue, int256 debt, uint256 currentCRatio, uint256 cratio)
InsufficientMappedAmount
error InsufficientMappedAmount()
InvalidParameter
error InvalidParameter(string parameter, string reason)
MarketNotFound
error MarketNotFound(uint128 marketId)
MismatchAssociatedSystemKind
error MismatchAssociatedSystemKind(bytes32 expected, bytes32 actual)
MustBeVaultLiquidated
error MustBeVaultLiquidated()
OverflowInt128ToUint128
error OverflowInt128ToUint128()
OverflowInt256ToInt128
error OverflowInt256ToInt128()
OverflowInt256ToUint256
error OverflowInt256ToUint256()
OverflowUint128ToInt128
error OverflowUint128ToInt128()
OverflowUint256ToInt256
error OverflowUint256ToInt256()
OverflowUint256ToUint128
error OverflowUint256ToUint128()
OverflowUint256ToUint32
error OverflowUint256ToUint32()
OverflowUint256ToUint64
error OverflowUint256ToUint64()
OverflowUint32ToInt32
error OverflowUint32ToInt32()
OverflowUint64ToInt64
error OverflowUint64ToInt64()
PositionOutOfBounds
error PositionOutOfBounds()
creation bytecode
0x608060405234801561001057600080fd5b50615297806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80632a5354d21461005c5780632fa7bb65146100845780633e033a06146100975780637d8a4140146100b7578063b49a3f9d146100ca575b600080fd5b61006f61006a366004614a3a565b6100dd565b60405190151581526020015b60405180910390f35b61006f610092366004614a6d565b61012b565b6100aa6100a5366004614ab0565b61017c565b60405161007b9190614b04565b6100aa6100c5366004614b25565b610578565b6100aa6100d8366004614a6d565b6109d3565b6000806100e984610d3e565b905060006100f78285610db4565b905060006101058386610ded565b9150506000821215801561011f575061011f858383610e4d565b93505050505b92915050565b60008061013784610d3e565b90506000610146828588610e80565b90506000610155838689610eb9565b9150506000821215801561016f575061016f858383610e4d565b93505050505b9392505050565b6101a060405180606001604052806000815260200160008152602001600081525090565b6101b5686c697175696461746560b81b610f14565b6101be82610f48565b5061021d753234b9b0b13632a837b7b62634b8bab4b230ba34b7b760511b856040516020016102009291909182526001600160801b0316602082015260400190565b604051602081830303815290604052805190602001206000610f8d565b1561024457604051634bab873760e11b815260040161023b90614b70565b60405180910390fd5b600061024f84610f99565b9050600061028d61025f87610d3e565b6001600160a01b03871660009081526008919091016020908152604080832080548452600301909152902090565b905060006102a6868961029f8a610d3e565b9190610e80565b90506000806102c0888b6102b98c610d3e565b9190610eb9565b6020880182905290925090506000831315806102e457506102e2888483610e4d565b155b15610343578083600085131561030c5761030761030086611007565b849061102e565b61030f565b60005b60028801546040516305ece12f60e51b8152600481019490945260248401929092526044830152606482015260840161023b565b61034c83611007565b8652600061037a6001600160801b038c1660009081526002870160205260409020546001600160801b031690565b60018601549091506001600160801b03168190036103ab57604051632603071d60e01b815260040160405180910390fd5b60038087015460408901526103c190860161104d565b8760400151106103e457604051632603071d60e01b815260040160405180910390fd5b61042c60405180606001604052808d6001600160801b031681526020018c6001600160801b031681526020018b6001600160a01b03168152506104268c610d3e565b9061109c565b5061043e91508690508c600080611671565b610457896000603261044f8f6116c9565b929190611720565b5061048961046888604001516118c4565b61047589602001516118c4565b61047f9190614bd3565b60038701906118ee565b6104ab8b61049a89600001516118c4565b6104a390614bf3565b8791906119ea565b506104c36104bc88600001516118c4565b8690611a7b565b6104d6896104d08c610d3e565b90611ad1565b5061050a87604001516104e88a6116c9565b6001600160a01b038c1660009081526006919091016020526040902090611b4a565b886001600160a01b03168a6001600160801b03168c6001600160801b03167fe6c1b26644f880854bf954d4186be9f0b2d06d50fa0484b596e79d409c07a5fd8a8c610553611b67565b60405161056293929190614c0f565b60405180910390a4505050505050949350505050565b61059c60405180606001604052806000815260200160008152602001600081525090565b6105b66d1b1a5c5d5a59185d1955985d5b1d60921b610f14565b6105bf83610f48565b50610601753234b9b0b13632a837b7b62634b8bab4b230ba34b7b760511b866040516020016102009291909182526001600160801b0316602082015260400190565b1561061f57604051634bab873760e11b815260040161023b90614b70565b816000036106875760408051634bab873760e11b8152600481019190915260066044820152651b585e155cd960d21b606482015260806024820152601560848201527406d75737420626520686967686572207468616e203605c1b60a482015260c40161023b565b600061069286610d3e565b9050600061069f86610f99565b6001600160a01b038716600090815260088401602052604081209192506106c68489610db4565b905060006106d4858a610ded565b9150506106e2898383610e4d565b610737578082600084136106f7576000610703565b61070361030085611007565b60028701546040516305ece12f60e51b8152600481019490945260248401929092526044830152606482015260840161023b565b600061074283611007565b90508781116108145780875261076a610765672aa9a22a37b5b2b760c11b611ba4565b611c02565b6001600160a01b0316639dc29fac610780611b67565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401600060405180830381600087803b1580156107c857600080fd5b505af11580156107dc573d6000803e3d6000fd5b5050855460009081526003870160205260409020610800925090505b60030161104d565b602088015261080f868b611c24565b610932565b87875261082e610765672aa9a22a37b5b2b760c11b611ba4565b6001600160a01b0316639dc29fac610844611b67565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018b9052604401600060405180830381600087803b15801561088c57600080fd5b505af11580156108a0573d6000803e3d6000fd5b505085546000908152600380880160205260409091208a51909350849250906108ca90840161104d565b6108d49190614c4f565b6108de9190614c7c565b60208901528751610902906108f2906118c4565b6108fb90614bf3565b8290611a7b565b61092561091289602001516118c4565b61091b90614bf3565b60038301906118ee565b61092f878c611ad1565b50505b61096587602001516109438b6116c9565b6001600160a01b038d1660009081526006919091016020526040902090611b4a565b602087015160408801526001600160a01b038a166001600160801b038c167f1834a7cc9d14f9bfa482df5c0404dadd1b8ec123b41f082e76ae28a3b2ea68d5898c6109ae611b67565b6040516109bd93929190614c0f565b60405180910390a3505050505050949350505050565b6109f760405180606001604052806000815260200160008152602001600081525090565b610a16726c6971756964617465546f547265617375727960681b610f14565b610a57753234b9b0b13632a837b7b62634b8bab4b230ba34b7b760511b846040516020016102009291909182526001600160801b0316602082015260400190565b15610a7557604051634bab873760e11b815260040161023b90614b70565b6000610a96701d1c99585cdd5c9e5058d8dbdd5b9d1259607a1b6000610f8d565b9050806001600160801b0316600003610ac257604051634bab873760e11b815260040161023b90614c90565b600080610ae16d1d1c99585cdd5c9e541bdbdb125960921b6000610f8d565b9050806001600160801b0316600003610b0d57604051634bab873760e11b815260040161023b90614cdf565b610b1961025f82610d3e565b9150506000610b2785610f99565b90506000610b65610b3788610d3e565b6001600160a01b03881660009081526008919091016020908152604080832080548452600301909152902090565b90506000610b77878a61029f8b610d3e565b9050600080610b8a898c6102b98d610d3e565b60208a018290529092509050600083131580610bae5750610bac898483610e4d565b155b15610bca578083600085131561030c5761030761030086611007565b610bd383611007565b8852604080516060810182526001600160801b03808e1682528c1660208201526001600160a01b038b1691810191909152610c11906104268c610d3e565b50610c2391508590508c600080611671565b610c34896000603261044f8f6116c9565b50610c4e898960200151610c478a6116c9565b9190611c56565b6020880151610c84906001600160801b03891690610c6f60038a0183611c7a565b610c799190614d2b565b600389019190611cc8565b50610ca78b610c968a600001516118c4565b610c9f90614bf3565b8691906119ea565b50610cc187610cb98a600001516118c4565b8891906119ea565b50610ccf896104d08c610d3e565b50886001600160a01b03168a6001600160801b03168c6001600160801b03167fe6c1b26644f880854bf954d4186be9f0b2d06d50fa0484b596e79d409c07a5fd8b8b610d19611b67565b604051610d2893929190614c0f565b60405180910390a4505050505050509392505050565b60008082604051602001610d9591906040808252601b908201527f696f2e73796e7468657469782e73796e7468657469782e506f6f6c000000000060608201526001600160801b0391909116602082015260800190565b60408051601f1981840301815291905280516020909101209392505050565b6000610dc08383611d56565b50610dca83611ec2565b6001600160a01b0382166000908152600884016020526040902061017590612004565b6001600160a01b038116600090815260088301602052604081208190610e129061201f565b9150600080610e2b6000610e2587610f99565b9061203a565b91509150610e38816121ce565b610e4282856121de565b925050509250929050565b6000808313610e5e57506000610175565b610e6784610f99565b60020154610e7761030085611007565b10949350505050565b6000610e8c8484611d56565b506001600160a01b03831660009081526008850160205260409020610eb190836121f3565b949350505050565b6001600160a01b038216600090815260088401602052604081208190610edf908461220f565b9150600080610ef184610e2588610f99565b91509150610efe816121ce565b610f0882856121de565b92505050935093915050565b610f2581610f20611b67565b61222b565b610f4557604051637e023fb760e01b81526004810182905260240161023b565b50565b600080610f54836116c9565b60018101549091506001600160a01b0316610125576040516301c52d9360e31b81526001600160801b038416600482015260240161023b565b60006101758383612271565b60008082604051602001610d9591906040808252602e908201527f696f2e73796e7468657469782e73796e7468657469782e436f6c6c617465726160608201526d3621b7b73334b3bab930ba34b7b760911b60808201526001600160a01b0391909116602082015260a00190565b60008082121561102a5760405163029f024d60e31b815260040160405180910390fd5b5090565b600081611043670de0b6b3a764000085614c4f565b6101759190614c7c565b8054600090676765c793fa10079d601b1b906001600160801b0381169061108890611083908490600160801b9004600f0b614d3e565b611007565b6110929190614c4f565b6101259190614c7c565b6060806000806110ad86600c015490565b6001600160401b038111156110c4576110c4614d5e565b6040519080825280602002602001820160405280156110ed578160200160208202803683370190505b5060408681015160068901546001600160a01b03909116600081815260078b0160205292832054939450926001600160801b03918216929116905b600c8a015481101561140857600061114e611144836001614d2b565b600c8d01906122c7565b6000818152600e8d01602052604090208054919250906001600160a01b03166111785750506113f6565b61118d611188611083838861232c565b6126a7565b6001820180546010906111b1908490600160801b90046001600160801b0316614d74565b82546101009290920a6001600160801b0381810219909316918316021790915560008881526002840160205260408120546001850154919350611213926112039291811691600160801b900416614d94565b86906001600160801b03166121de565b9050600061125b8e60080160008f604001516001600160a01b03166001600160a01b031681526020019081526020016000208054600090815260039091016020526040902090565b6001908101549084015460008a8152600286016020526040902080546001600160801b03600160801b90930483166001600160801b03199091161790558a519116915084908a90879081106112b2576112b2614db4565b60209081029190910101528115806112c8575080155b156112d657505050506113f6565b8260000160009054906101000a90046001600160a01b03168e60080160008f604001516001600160a01b03166001600160a01b03168152602001908152602001600020600401600086815260200190815260200160002060000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061136a611188828461102e90919063ffffffff16565b8e60080160008f604001516001600160a01b03166001600160a01b03168152602001908152602001600020600401600086815260200190815260200160002060010160108282829054906101000a90046001600160801b03166113cd9190614d74565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505050505b8061140081614dca565b915050611128565b505050506040858101516001600160a01b031660009081526008880160205290812081906114379088856126d1565b9150915060008061149b896114788c60080160008d604001516001600160a01b03166001600160a01b0316815260200190815260200160002060050161272a565b6040808d01516001600160a01b0316600090815260088f016020522091906126d1565b91509150815184516114ad9190614d2b565b6001600160401b038111156114c4576114c4614d5e565b6040519080825280602002602001820160405280156114ed578160200160208202803683370190505b509750805183516114fe9190614d2b565b6001600160401b0381111561151557611515614d5e565b60405190808252806020026020018201604052801561153e578160200160208202803683370190505b50965060005b88518110156115ca578451811061158057828551826115639190614de3565b8151811061157357611573614db4565b602002602001015161159b565b84818151811061159257611592614db4565b60200260200101515b8982815181106115ad576115ad614db4565b6020908102919091010152806115c281614dca565b915050611544565b5060005b8751811015611661578351811061160a57818451826115ed9190614de3565b815181106115fd576115fd614db4565b6020026020010151611625565b83818151811061161c5761161c614db4565b60200260200101515b88828151811061163757611637614db4565b6001600160a01b03909216602092830291909101909101528061165981614dca565b9150506115ce565b5050915193505050509250925092565b6001600160801b0383166116858585612786565b50611694600386018285611cc8565b5060008181526004860160205260409020546116c19082906116b690856121de565b6001880191906127fa565b505050505050565b60008082604051602001610d9591906040808252601e908201527f696f2e73796e7468657469782e73796e7468657469782e4163636f756e74000060608201526001600160801b0391909116602082015260800190565b6001600160a01b038316600090815260068501602052604081206003810180549091839061174f908787612885565b915050806000036117665760009350505050610eb1565b6001600160a01b038716600090815260068901602052604081205461178b8a8a612b10565b6117959190614d2b565b9050861580156117ad57508515806117ad5750828610155b80156117b857508082115b156118b857835460005b818110156118575761180a84848884815481106117e1576117e1614db4565b60009182526020909120015461180091906001600160801b0316614c4f565b6111889190614c7c565b86828154811061181c5761181c614db4565b600091825260209091200180546001600160801b0319166001600160801b03929092169190911790558061184f81614dca565b9150506117c2565b508954604080516001600160801b0390921682526001600160a01b038b1660208301528101839052606081018490527ff0a0e39a26580b0a52daf2e0179695c3fbad3585ec250ca1b8eb4a6cec832b809060800160405180910390a1819250505b50979650505050505050565b60006001600160ff1b0382111561102a5760405163677c430560e11b815260040160405180910390fd5b806000036118fa575050565b81546001600160801b0316600081900361192757604051630d6a884960e41b815260040160405180910390fd5b600061193e676765c793fa10079d601b1b84614df6565b9050600061194b836118c4565b6119559083614e26565b905061196081612ba1565b8554869060109061197c908490600160801b9004600f0b614e54565b92506101000a8154816001600160801b030219169083600f0b6001600160801b03160217905550676765c793fa10079d601b1b6119b890614bf3565b8554600160801b9004600f0b12156119e357604051635dc8c68b60e01b815260040160405180910390fd5b5050505050565b6001600160801b03821660009081526005840160205260408120805490839083611a148385614d3e565b90915550611a23905083612ba1565b85548690601090611a3f908490600160801b9004600f0b614e54565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055508281611a729190614d3e565b95945050505050565b611a886001830182612bdd565b611a9181612ba1565b82548390600090611aa6908490600f0b614e54565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505050565b6000806000611aeb670de0b6b3a7640000610e2586610f99565b91509150611af8816121ce565b6001600160a01b03841660009081526008860160205260408120611b1c9084612c99565b509050611b36600687016001600160a01b038716836127fa565b50611b4086611ec2565b5090949350505050565b80826000016000828254611b5e9190614d2b565b90915550505050565b600073e2c5658cc5c448b48141168f3e475df8f65a1e3e33148015611b8d575060143610155b15611b9f575060131936013560601c90565b503390565b6040805160208101829052602a60608201527f696f2e73796e7468657469782e636f72652d6d6f64756c65732e4173736f63696080820152696174656453797374656d60b01b60a0820152908101829052600090819060c001610d95565b6000611c168264065726332360dc1b612cd8565b50546001600160a01b031690565b6001600160a01b03811660009081526008830160205260409020611c4790612d20565b611c518282611ad1565b505050565b6001600160a01b03821660009081526006840160205260409020611c519082611b4a565b81546000906001600160801b0316808203611c99576000915050610125565b80611ca38561104d565b6000858152600187016020526040902054611cbe9190614c4f565b610eb19190614c7c565b6000611cd48483612d36565b60008481526001860160205260409020548554919250611d0c91611d029084906001600160801b0316614d2b565b6111889190614de3565b84546001600160801b0319166001600160801b0391909116178455611d30816126a7565b6000938452600190940160205260409092206001600160801b0393909316909255919050565b815460058301546000916001600160801b03169082906001600160401b03811115611d8357611d83614d5e565b604051908082528060200260200182016040528015611db657816020015b6060815260200190600190039081611da15790505b50905060005b6005860154811015611e5b576000611e01876005018381548110611de257611de2614db4565b60009182526020909120600290910201546001600160801b0316612d85565b9050611e12816402540be3ff612ddc565b9050838381518110611e2657611e26614db4565b6020908102919091010152611e3b8185612eb5565b611e459086614d3e565b9450508080611e5390614dca565b915050611dbc565b50611e6581612f3a565b611e6f8584613087565b6001600160a01b03841615611eba576001600160a01b038416611eb8611e9860068801836130d5565b6001600160a01b03871660009081526008890160205260409020906130fd565b505b505092915050565b60048101546001600160801b03166000819003611edd575050565b600080611ee984613119565b915091506000611ef7613165565b54905060005b60058601548110156116c1576000866005018281548110611f2057611f20614db4565b60009182526020822060029091020180549092506001600160801b03600160801b909104169087611f518389614c4f565b611f5b9190614c7c565b8354909150600090611f75906001600160801b0316612d85565b9050600080826010015411611f8a5786611f90565b81601001545b8254909150600090611fb0906001600160801b031683600f8c900b6131de565b6001870154909150600f0b808212611fc85780611fca565b815b87548e54919350611fe9916001600160801b0391821691168488613245565b50505050505050508080611ffc90614dca565b915050611efd565b805460009081526003820160205260408120610125906132a0565b805460009081526003820160205260408120610125906107f8565b6000606060006120486132c6565b6040805160208101825291546001600160a01b03168252805160018082528183019092529192506000919081602001602082028036833750506040805160018082528183019092529293506000929150602080830190803683370190505090506373697a6560e01b826000815181106120c3576120c3614db4565b6020026020010181815250508560001b816000815181106120e6576120e6614db4565b60209081029190910101528251600480890154604051636d51285f60e11b81526001600160a01b039093169263daa250be9261212792918791879101614ebc565b608060405180830381865afa925050508015612160575060408051601f3d908101601f1916820190925261215d91810190614ee7565b60015b6121a3573d80801561218e576040519150601f19603f3d011682016040523d82523d6000602084013e612193565b606091505b506000955093506121c792505050565b80516121ae90611007565b6040518060200160405280600081525095509550505050505b9250929050565b805115610f4557610f4581613317565b6000670de0b6b3a76400006110438385614c4f565b8154600090815260038301602052604081206101759083612786565b8154600090815260038301602052604081206101759083613342565b6000806122378461335a565b6001810154909150610100900460ff1615612256576000915050610125565b600181015460ff1680610eb15750610eb160028201846133b3565b6040805160208082018390526006606083015265436f6e66696760d01b6080808401919091528284018690528351808403909101815260a09092019092528051910120805490816122c0578291505b5092915050565b60008115806122d65750825482115b156122f45760405163eb9bc44760e01b815260040160405180910390fd5b6000612301600184614de3565b905083600001818154811061231857612318614db4565b906000526020600020015491505092915050565b6003820154600090600f0b1580612341575081155b1561234e57506000610125565b60038301544290600090600160801b90046001600160401b031682101561237a57600092505050610125565b6003850154600160c01b900463ffffffff161580156123b957506003850154600160801b81046001600160401b0316600160e01b90910463ffffffff16105b156123e0576123d96123ca856118c4565b6003870154600f0b5b906133d5565b90506125af565b600385015461240c90600160c01b810463ffffffff1690600160801b90046001600160401b0316614f5a565b6001600160401b031685600301601c9054906101000a900463ffffffff1663ffffffff1610156125af576003850154600090600160801b81046001600160401b0316600160e01b90910463ffffffff16106124e157600386015461247c90600160c01b900463ffffffff166133f4565b60038781015491900b906124bf906124b190600160801b81046001600160401b031690600160e01b900463ffffffff16614f7a565b6001600160401b0316613421565b60038801546124d49160070b90600f0b614df6565b6124de9190614e26565b90505b6003860154600f81900b9061251390600160c01b810463ffffffff1690600160801b90046001600160401b0316614f5a565b6001600160401b031684101561258a57600387015461253e90600160c01b900463ffffffff166133f4565b60038881015491900b9061256b9061256690600160801b90046001600160401b031687614de3565b6118c4565b600389015461257d9190600f0b614df6565b6125879190614e26565b90505b6125a0612596876118c4565b6123d38484614bd3565b6125aa9084614d3e565b925050505b60038501546125db90600160c01b810463ffffffff1690600160801b90046001600160401b0316614f5a565b6001600160401b0316821061266f576004850180546003870180546bffffffffffffffffffffffff60801b1916600160801b8084046001600160401b03160263ffffffff60c01b191617600160c01b80840463ffffffff1602176001600160801b0319166001600160801b0383161790556001600160e01b0319169055612662858561232c565b61266c9082614d3e565b90505b61267882613455565b60038601805463ffffffff92909216600160e01b026001600160e01b0390921691909117905591505092915050565b60006001600160801b0382111561102a57604051637d5864af60e11b815260040160405180910390fd5b825460009081526003840160209081526040808320600181015486516001600160801b039081168652600290920190935292205460609283928116911661271b878787858561347c565b9350935050505b935093915050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561277a57602002820191906000526020600020905b815481526020019060010190808311612766575b50505050509050919050565b60008061279f600185016001600160801b0385166130d5565b90506127ac8484836119ea565b91506127b781612ba1565b845485906000906127cc908490600f0b614f9a565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505092915050565b6000612806848461361f565b60008481526001860160205260408120919250612822846126a7565b825487549192506001600160801b039081169161284191849116614d74565b61284b9190614d94565b86546001600160801b03199081166001600160801b0392831617885583541690821617825561287b86838661363a565b5050509392505050565b600080600061289342613681565b60038701549091508086106128b057600080935093505050612722565b8415806128c65750806128c38688614d2b565b10155b156128d8576128d58682614de3565b94505b856000805b87811015612aec57846001600160401b03168a600301848154811061290457612904614db4565b600091825260209091200154600160801b90046001600160401b031611612a96577f8010cd0bb6d7e8c6b90d190ae9aa57b948406fc741828e4a12c68e31f1e705818a600301848154811061295b5761295b614db4565b60009182526020909120015460038c0180546001600160801b03909216918690811061298957612989614db4565b60009182526020918290200154604080516001600160801b039094168452600160801b9091046001600160401b0316918301919091520160405180910390a160038a0180546129da90600190614de3565b815481106129ea576129ea614db4565b906000526020600020018a6003018481548110612a0957612a09614db4565b600091825260209091208254910180546001600160801b039092166001600160801b031983168117825592546001600160c01b0319909216909217600160801b918290046001600160401b031690910217905560038a01805480612a6f57612a6f614fc7565b600082815260209020810160001990810180546001600160c01b0319169055019055612ada565b896003018381548110612aab57612aab614db4565b600091825260209091200154612aca906001600160801b031683614d2b565b915082612ad681614dca565b9350505b80612ae481614dca565b9150506128dd565b5081612af8888a614d2b565b612b029190614de3565b999098509650505050505050565b6001600160a01b0381166000908152600683016020526040812081906001908101905b612b3c826136ab565b8111611b40576000612b5161118884846136b5565b90506000612b5e82610d3e565b8854909150600090612b7c9083908a906001600160801b0316610eb9565b509050612b898187614d2b565b95505050508080612b9990614dca565b915050612b33565b600060016001607f1b0319821280612bbf575060016001607f1b0382135b1561102a57604051634022cc0360e01b815260040160405180910390fd5b80600003612be9575050565b81546001600160801b03166000819003612c1657604051633b182f5560e01b815260040160405180910390fd5b6000612c2d676765c793fa10079d601b1b84614df6565b90506000612c3a836118c4565b612c449083614e26565b9050612c4f81612ba1565b85548690601090612c6b908490600160801b9004600f0b614e54565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505050505050565b8154600090815260038301602052604081208190612cc384612cbd8360030161104d565b906121de565b9250612cce816132a0565b9150509250929050565b6002820154818114801590612cf95750681d5b9b585b9859d95960ba1b8114155b15611c515760405162d5319f60e31b8152600481018390526024810182905260440161023b565b8054816000612d2e83614dca565b919050555050565b8154600090612d6790612d5f90676765c793fa10079d601b1b90600160801b9004600f0b614e54565b600f0b6136c7565b6001600160801b0316611043676765c793fa10079d601b1b84614c4f565b60008082604051602001610d9591906040808252601d908201527f696f2e73796e7468657469782e73796e7468657469782e4d61726b657400000060608201526001600160801b0391909116602082015260800190565b60006060600080612dec866136ed565b8051919350915015612e05576000935091506121c79050565b6003860154600090612e1a90600f0b84614bd3565b90506000612e298883896137c4565b91505080158015612e465750600a8801546001600160801b031615155b15612e97576003880154612e6b90612e6190600f0b86614bd3565b600a8a0190612bdd565b612e7484612ba1565b6003890180546001600160801b0319166001600160801b03929092169190911790555b60408051602081019091526000815290159890975095505050505050565b600080612ece600a85016001600160801b0385166130d5565b6001600160801b038085166000908152600c870160205260409020549192508291612f0191600160801b90910416613b9e565b600f0b612f0e9190614d3e565b6001600160801b039384166000908152600c909501602052604090942080549093169092555090919050565b6000805b8251811015612f8a576000838281518110612f5b57612f5b614db4565b6020026020010151511115612f785781612f7481614dca565b9250505b80612f8281614dca565b915050612f3e565b508015613083576000816001600160401b03811115612fab57612fab614d5e565b604051908082528060200260200182016040528015612fde57816020015b6060815260200190600190039081612fc95790505b5090506000805b845181101561306757600085828151811061300257613002614db4565b60200260200101515111156130555784818151811061302357613023614db4565b602002602001015183838061303790614dca565b94508151811061304957613049614db4565b60200260200101819052505b8061305f81614dca565b915050612fe5565b5081604051630b42fd1760e01b815260040161023b9190614fdd565b5050565b61309081612ba1565b60048301546130a99190600160801b9004600f0b614e54565b6004830180546001600160801b03928316600160801b0292169190911790556130836006830182612bdd565b600081815260018301602052604081208054610eb190859083906001600160801b031661363a565b8154600090815260038301602052604090206130839082611a7b565b60068101546001600160801b031660008161313557600061315e565b61315e613159613144846118c4565b6004860154600160801b9004600f0b906133d5565b612ba1565b9050915091565b6000806040516020016131c0906020808252602e908201527f696f2e73796e7468657469782e73796e7468657469782e53797374656d506f6f60408201526d3621b7b73334b3bab930ba34b7b760911b606082015260800190565b60408051601f19818403018152919052805160209091012092915050565b6000806131ea85612d85565b905060006131fa82600a01613bd1565b90506000851561321b57613216670de0b6b3a76400008761102e565b613225565b670de0b6b3a76400005b905084613231826118c4565b61323b9084614d3e565b61016f9190614bd3565b60008061325186612d85565b60018101549091506001600160a01b031661328a5760405163784060f560e11b81526001600160801b038716600482015260240161023b565b61329681868587613beb565b9695505050505050565b80546000906132bd90600160801b8104600f90810b91900b614e54565b600f0b92915050565b6000806040516020016131c09060208082526024908201527f696f2e73796e7468657469782e73796e7468657469782e4f7261636c654d616e60408201526330b3b2b960e11b606082015260800190565b8051600081900361333b5760405163123b260360e01b815260040160405180910390fd5b8060208301fd5b6000610175600384016001600160801b038416611c7a565b6040805160208101829052602560608201527f696f2e73796e7468657469782e636f72652d6d6f64756c65732e46656174757260808201526465466c616760d81b60a0820152908101829052600090819060c001610d95565b6001600160a01b03811660009081526001830160205260408120541515610175565b6000816133ea670de0b6b3a764000085614df6565b6101759190614e26565b6000637fffffff63ffffffff8316111561102a57604051630299decb60e01b815260040160405180910390fd5b6000677fffffffffffffff6001600160401b038316111561102a57604051633340f63360e11b815260040160405180910390fd5b600063ffffffff82111561102a576040516334bee0b960e01b815260040160405180910390fd5b60608084516001600160401b0381111561349857613498614d5e565b6040519080825280602002602001820160405280156134c1578160200160208202803683370190505b50915084516001600160401b038111156134dd576134dd614d5e565b604051908082528060200260200182016040528015613506578160200160208202803683370190505b50905060005b85518110156136145785818151811061352757613527614db4565b60200260200101516000801b031561360257600088600401600088848151811061355357613553614db4565b602090810291909101810151825281019190915260400160002080549091506001600160a01b031680613587575050613602565b8084848151811061359a5761359a614db4565b60200260200101906001600160a01b031690816001600160a01b0316815250506135e18a8a8a86815181106135d1576135d1614db4565b6020026020010151848b8b613e2a565b8584815181106135f3576135f3614db4565b60200260200101818152505050505b8061360c81614dca565b91505061350c565b509550959350505050565b60008181526001830160205260408120610175908490614014565b60006136468484614014565b9050811561365f578354600160801b9004600f0b613662565b60005b83546001600160801b03918216600160801b0291161790925550919050565b60006001600160401b0382111561102a576040516372b1c34f60e01b815260040160405180910390fd5b6000610125825490565b60006101756136c484846122c7565b90565b60008082600f0b121561102a5760405163144ec41160e21b815260040160405180910390fd5b600060606000806136fd8561407e565b9150915060008061370d87614138565b91509150600083511180613722575060008151115b1561378a57604080518082018252848152602081018390529051630b42fd1760e01b916137519160240161506f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915294506137bb565b613793826118c4565b6002880154600f0b6137a4866118c4565b6137ae9190614d3e565b6137b89190614bd3565b95505b50505050915091565b600080836000036137da57506000905080612722565b6000806000808713156137fa57506001915050600486016007870161380a565b5060001991505060078601600487015b60005b86811015613b465761381e83614222565b15613b4657600061382e84614245565b9050600061383c888b614bd3565b1380156138545750600a8a01546001600160801b0316155b806138a65750600a8a01546001600160801b0316158015906138a657506138848a61387f898c614bd3565b614264565b85600f0b6138929190614df6565b81602001516138a0906150ec565b600f0b12155b156138b15750613b46565b6138bb84846142bb565b600a8a01546001600160801b0316156139455760006139246138df8c600a01613bd1565b60208401516138ed896150ec565b6138f79190615112565b600f0b6139049190614bd3565b600a8d015461391b906001600160801b0316613b9e565b600f0b906142ec565b9050613933600a8c0182612bdd565b61393d8189614d3e565b975050613995565b613975613159600961396f84602001518961395f906150ec565b6139699190615112565b600f0b90565b90614301565b600a8b0180546001600160801b03928316600160801b0292169190911790555b6000891315613a975780516001600160801b039081166000908152600b8c01602052604090205416613a095760405162461bcd60e51b815260206004820152601e60248201527f6e6f20736861726573206265666f7265206163746f722072656d6f76616c0000604482015260640161023b565b8051600090613a2b90611083906001600160801b0316600a8e019060006127fa565b9050613a36816126a7565b82516001600160801b039081166000908152600c8e016020526040902080549091601091613a6d918591600160801b900416614d74565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555050613b33565b80516001600160801b039081166000908152600b8c0160205260409020541615613b035760405162461bcd60e51b815260206004820152601b60248201527f6163746f722068617320736861726573206265666f7265206164640000000000604482015260640161023b565b80516001600160801b039081166000818152600c8d016020526040902054613b3192600a8e019291166127fa565b505b5080613b3e81614dca565b91505061380d565b613b4f86612ba1565b60038a018054600090613b66908490600f0b614e54565b92506101000a8154816001600160801b030219169083600f0b6001600160801b03160217905550868114945050505050935093915050565b600060016001607f1b036001600160801b038316111561102a57604051634593782f60e11b815260040160405180910390fd5b805460009061012590600160801b9004600f0b600961431b565b600080613bf88686614335565b90506000613c068787614361565b9050613c11856126a7565b6001600160801b038781166000908152600c8a016020526040812080546001600160801b03191693909216929092179055613c51613159600a8a01613bd1565b905085600003613c7c57613c686004890188614387565b50613c766007890188614387565b50613ce2565b80600f0b851215613cb15760009550613c986004890188614387565b50613c7687613ca687612ba1565b60078b0191906143c1565b613cd287613cbe87612ba1565b613cc7906150ec565b60048b0191906143c1565b50613ce06007890188614387565b505b6000613cfb600a8a016001600160801b038a16896127fa565b6001600160801b03808a166000908152600c8c0160205260409020549192508291613d2e91600160801b90910416613b9e565b600f0b613d3b9190614d3e565b6001600160801b03808a166000908152600c8c0160205260409020805490911690559450600f82900b861315613dbf57613d796131598a8989614485565b60028a018054601090613d97908490600160801b9004600f0b614e54565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505b81600f0b831315613e1e57613dd86131598a8686614485565b60028a018054601090613df6908490600160801b9004600f0b614f9a565b92506101000a8154816001600160801b030219169083600f0b6001600160801b031602179055505b50505050949350505050565b60008481526004878101602090815260408084208951928a01518a8301519251639a99916f60e01b81526001600160801b03948516958101959095529290921660248401526001600160a01b03908116604484015260648301859052909190861690639a99916f90608401600060405180830381600087803b158015613eaf57600080fd5b505af1158015613ec3573d6000803e3d6000fd5b50505050613ee0611188611083868461232c90919063ffffffff16565b600182018054601090613f04908490600160801b90046001600160801b0316614d74565b82546101009290920a6001600160801b038181021990931691831602179091558851811660009081526002840160205260409020546001840154613f6b935061118892613f5b92811691600160801b900416614d94565b85906001600160801b03166121de565b87516001600160801b039081166000908152600284016020526040902080549091601091613fa2918591600160801b900416614d74565b82546101009290920a6001600160801b038181021990931691831602179091556001830154895182166000908152600290940160205260408085208054600160801b9384900485166001600160801b031990911617905599518216845298909220549790970416979650505050505050565b80548254600091829161403b91600160801b90819004600f90810b9291909104900b614f9a565b8354600f9190910b915060009061405a906001600160801b0316613b9e565b61406790600f0b83614df6565b9050611a72676765c793fa10079d601b1b82614e26565b6001810154815460405163bcec0d0f60e01b81526001600160801b0390911660048201526000916060916001600160a01b039091169063bcec0d0f90602401602060405180830381865afa9250505080156140f6575060408051601f3d908101601f191682019092526140f391810190615132565b60015b614131573d808015614124576040519150601f19603f3d011682016040523d82523d6000602084013e614129565b606091505b509050915091565b9150915091565b600060606000805b600d85015481101561421957600085600d01828154811061416357614163614db4565b600091825260208083206040805180820190915260029093020180546001600160a01b0316808452600190910154918301919091529092506141a490610f99565b905081602001516000036141b9575050614207565b6000806141ca83856020015161203a565b80519193509150156141e6576000999098509650505050505050565b60208401516141f69083906121de565b6142009087614d2b565b9550505050505b8061421181614dca565b915050614140565b50939092509050565b6001810154600090614235576000610125565b6001828101546101259190614de3565b60408051808201909152600080825260208201526101258260016144b0565b600a8201546000906001600160801b03166142805760006142a5565b600a8301546142a59061429b906001600160801b0316613b9e565b8390600f0b6133d5565b6142b184600a01613bd1565b6101759190614d3e565b60006142c683614539565b90506142e6816000015182602001516142de906150ec565b8491906143c1565b50505050565b6000670de0b6b3a76400006133ea8385614df6565b600061431161256683600a61522f565b6101759084614df6565b600061432b61256683600a61522f565b6101759084614e26565b60006101756001600160801b0383166000908152600b850160205260409020546001600160801b031690565b60006143706004840183614558565b6020015161437d906150ec565b600f0b9392505050565b60408051808201909152600080825260208201526001600160801b0382166000908152600284016020526040902054610175908490614592565b604080518082019091526000808252602082015260018401546000036143ea576143ea8461472b565b60408051808201909152600080825260208201526144088585614387565b5084546001600160801b03168560006144208361523b565b82546101009290920a6001600160801b03818102199093169183160217909155600187810180548201808255600091909152604080518082019091529288168352600f87900b6020840152919350610eb192508791849161448091614de3565b61477b565b6000806144a161449786600a01613bd1565b6110839085614bd3565b9050611a7261256682866121de565b6040805180820190915260008082526020820152600183015482106144e8576040805180820190915260008082526020820152610175565b8260010182815481106144fd576144fd614db4565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b918101919091529392505050565b6040805180820190915260008082526020820152610125826001614592565b60408051808201909152600080825260208201526001600160801b03821660009081526002840160205260409020546101759084906144b0565b60408051808201909152600080825260208201526001830154821015806145b7575081155b156145d657506040805180820190915260008082526020820152610125565b60008360010183815481106145ed576145ed614db4565b6000918252602080832060408051808201825293909101546001600160801b038116808552600160801b909104600f0b84840152845260028801909152822082905560018087018054929450916146449190614de3565b8154811061465457614654614db4565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b9181019190915260018601805491925090806146a0576146a0614fc7565b6000828152602081208201600019908101919091550190556001850154841015614723576146cf85828661477b565b614723858660010186815481106146e8576146e8614db4565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b9181019190915286614846565b509392505050565b6001810154600003610f4557604080518082019091526000808252602080830182815260019485018054958601815583529120915190516001600160801b03908116600160801b02911617910155565b60018114806147c8575060018301614794600283614c7c565b815481106147a4576147a4614db4565b6000918252602091829020015490830151600160801b909104600f90810b91900b13155b156147d857611c518383836149ac565b61483683600181016147eb600285614c7c565b815481106147fb576147fb614db4565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b91810191909152836149ac565b611c518383614480600285614c7c565b60018301546000614858836002614c4f565b90508082116148715761486c8585856149ac565b6119e3565b600085600101828154811061488857614888614db4565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b9181019190915290506148ca826001614d2b565b8311801561491457508060200151600f0b866001018360016148ec9190614d2b565b815481106148fc576148fc614db4565b600091825260209091200154600160801b9004600f0b135b15614971576001860161492683614dca565b9250828154811061493957614939614db4565b6000918252602091829020604080518082019091529101546001600160801b0381168252600160801b9004600f0b9181019190915290505b8460200151600f0b8160200151600f0b13614996576149918686866149ac565b6116c1565b6149a18682866149ac565b6116c1868684614846565b818360010182815481106149c2576149c2614db4565b600091825260208083208451948201516001600160801b03908116600160801b0295811695909517920191909155935190911681526002909301909152604090912055565b80356001600160801b0381168114614a1e57600080fd5b919050565b80356001600160a01b0381168114614a1e57600080fd5b60008060408385031215614a4d57600080fd5b614a5683614a07565b9150614a6460208401614a23565b90509250929050565b600080600060608486031215614a8257600080fd5b614a8b84614a07565b9250614a9960208501614a07565b9150614aa760408501614a23565b90509250925092565b60008060008060808587031215614ac657600080fd5b614acf85614a07565b9350614add60208601614a07565b9250614aeb60408601614a23565b9150614af960608601614a07565b905092959194509250565b81518152602080830151908201526040808301519082015260608101610125565b60008060008060808587031215614b3b57600080fd5b614b4485614a07565b9350614b5260208601614a23565b9250614b6060408601614a07565b9396929550929360600135925050565b6040808252600690820152651c1bdbdb125960d21b6060820152608060208201819052601590820152741b1a5c5d5a59185d1a5bdb9cc8191a5cd8589b1959605a1b60a082015260c00190565b634e487b7160e01b600052601160045260246000fd5b81810360008312801583831316838312821617156122c0576122c0614bbd565b6000600160ff1b8201614c0857614c08614bbd565b5060000390565b8351815260208085015190820152604093840151938101939093526001600160801b039190911660608301526001600160a01b0316608082015260a00190565b808202811582820484141761012557610125614bbd565b634e487b7160e01b600052601260045260246000fd5b600082614c8b57614c8b614c66565b500490565b6040815260116040820152701d1c99585cdd5c9e5058d8dbdd5b9d1259607a1b60608201526080602082015260006101256080830160078152661b9bdd081cd95d60ca1b602082015260400190565b60408152600e60408201526d1d1c99585cdd5c9e541bdbdb125960921b60608201526080602082015260006101256080830160078152661b9bdd081cd95d60ca1b602082015260400190565b8082018082111561012557610125614bbd565b8082018281126000831280158216821582161715611eba57611eba614bbd565b634e487b7160e01b600052604160045260246000fd5b6001600160801b038181168382160190808211156122c0576122c0614bbd565b6001600160801b038281168282160390808211156122c0576122c0614bbd565b634e487b7160e01b600052603260045260246000fd5b600060018201614ddc57614ddc614bbd565b5060010190565b8181038181111561012557610125614bbd565b80820260008212600160ff1b84141615614e1257614e12614bbd565b818105831482151761012557610125614bbd565b600082614e3557614e35614c66565b600160ff1b821460001984141615614e4f57614e4f614bbd565b500590565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561012557610125614bbd565b600081518084526020808501945080840160005b83811015614eb157815187529582019590820190600101614e95565b509495945050505050565b838152606060208201526000614ed56060830185614e81565b82810360408401526132968185614e81565b600060808284031215614ef957600080fd5b604051608081018181106001600160401b0382111715614f2957634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b6001600160401b038181168382160190808211156122c0576122c0614bbd565b6001600160401b038281168282160390808211156122c0576122c0614bbd565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561012557610125614bbd565b634e487b7160e01b600052603160045260246000fd5b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b8381101561506157888603603f1901855282518051808852835b8181101561503a578281018a01518982018b0152890161501f565b508781018901849052601f01601f1916909601870195509386019391860191600101615005565b509398975050505050505050565b6020808252600090606083018382018584805b60028110156150df57601f198089870301855283518051808852845b818110156150b9578281018a01518982018b0152890161509e565b508781018901859052601f01909116909501860194509285019291850191600101615082565b5092979650505050505050565b600081600f0b60016001607f1b0319810361510957615109614bbd565b60000392915050565b600082600f0b82600f0b0280600f0b91508082146122c0576122c0614bbd565b60006020828403121561514457600080fd5b5051919050565b600181815b8085111561518657816000190482111561516c5761516c614bbd565b8085161561517957918102915b93841c9390800290615150565b509250929050565b60008261519d57506001610125565b816151aa57506000610125565b81600181146151c057600281146151ca576151e6565b6001915050610125565b60ff8411156151db576151db614bbd565b50506001821b610125565b5060208310610133831016604e8410600b8410161715615209575081810a610125565b615213838361514b565b806000190482111561522757615227614bbd565b029392505050565b6000610175838361518e565b60006001600160801b0380831681810361525757615257614bbd565b600101939250505056fea264697066735822122009f00e62f2daebf455f069c37530052cc2ac46e668da29b38c480a971ab6192b64736f6c63430008110033