0 txs
86 calls
constructor
constructor()
functions
canLiquidate
viewfunction canLiquidate(uint256 tokenId_, uint256 price_) view returns (bool liquidatable_)
canLiquidate
viewfunction canLiquidate(uint256 tokenId_) view returns (bool liquidatable_)
getLiquidationFee
viewfunction getLiquidationFee(uint256 positionSize_, uint256 currentPrice_) view returns (uint256 liqFee_)
getLiquidationFee
viewfunction getLiquidationFee(uint256 tokenId_) view returns (uint256 liquidationFee_)
getLiquidationMargin
viewfunction getLiquidationMargin(uint256 additionalSize_) view returns (uint256 liquidationMargin_)
getLiquidationMargin
viewfunction getLiquidationMargin(uint256 positionSize_, uint256 currentPrice_) view returns (uint256 lMargin_)
liquidationBufferRatio
viewfunction liquidationBufferRatio() view returns (uint128)
liquidationFeeLowerBound
viewfunction liquidationFeeLowerBound() view returns (uint256)
liquidationFeeRatio
viewfunction liquidationFeeRatio() view returns (uint128)
liquidationFeeUpperBound
viewfunction liquidationFeeUpperBound() view returns (uint256)
MODULE_KEY
viewfunction MODULE_KEY() view returns (bytes32)
vault
viewfunction vault() view returns (address)
initialize
nonpayablefunction initialize(address vault_, uint128 liquidationFeeRatio_, uint128 liquidationBufferRatio_, uint256 liquidationFeeLowerBound_, uint256 liquidationFeeUpperBound_)
liquidate
payablefunction liquidate(uint256 tokenID_, bytes[] priceUpdateData_) payable
liquidate
nonpayablefunction liquidate(uint256 tokenID_)
liquidate
payablefunction liquidate(uint256[] tokenID_, bytes[] priceUpdateData_) payable returns (uint256[] liquidatedIds_)
liquidate
nonpayablefunction liquidate(uint256[] tokenID_) returns (uint256[] liquidatedIds_)
setLiquidationBufferRatio
nonpayablefunction setLiquidationBufferRatio(uint128 newLiquidationBufferRatio_)
setLiquidationFeeBounds
nonpayablefunction setLiquidationFeeBounds(uint256 newLiquidationFeeLowerBound_, uint256 newLiquidationFeeUpperBound_)
setLiquidationFeeRatio
nonpayablefunction setLiquidationFeeRatio(uint128 newLiquidationFeeRatio_)
setVault
nonpayablefunction setVault(address vault_)
events
Initialized
event Initialized(uint64 version)
LiquidationBufferRatioModified
event LiquidationBufferRatioModified(uint256 oldRatio, uint256 newRatio)
LiquidationFeeBoundsModified
event LiquidationFeeBoundsModified(uint256 oldMin, uint256 oldMax, uint256 newMin, uint256 newMax)
LiquidationFeeRatioModified
event LiquidationFeeRatioModified(uint256 oldRatio, uint256 newRatio)
PositionLiquidated
event PositionLiquidated(uint256 tokenId, address liquidator, uint256 liquidationFee, uint256 closePrice, (int256 profitLoss, int256 accruedFunding, int256 marginAfterSettlement) positionSummary)
errors
CannotLiquidate
error CannotLiquidate(uint256 tokenId)
InvalidBounds
error InvalidBounds(uint256 lower, uint256 upper)
InvalidInitialization
error InvalidInitialization()
InvariantViolation
error InvariantViolation(string variableName)
ModuleKeyEmpty
error ModuleKeyEmpty()
NotInitializing
error NotInitializing()
OnlyOwner
error OnlyOwner(address msgSender)
Paused
error Paused(bytes32 moduleKey)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeCastOverflowedIntToUint
error SafeCastOverflowedIntToUint(int256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
ZeroAddress
error ZeroAddress(string variableName)
ZeroValue
error ZeroValue(string variableName)
creation bytecode
0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613233806100d96000396000f3fe60806040526004361061013a5760003560e01c80636817031b116100bb578063cbd8d6271161007f578063eda6b66011610059578063eda6b660146103a5578063f6614170146103c5578063fbfa77cf146103d857600080fd5b8063cbd8d62714610345578063cfe7110314610365578063d174dc691461038557600080fd5b80636817031b146102a25780639df411ee146102c2578063bf987856146102f2578063c49c6d7b14610305578063c631d84b1461032557600080fd5b80634026f72e116101025780634026f72e146101ea578063415f12401461020057806354e67b56146102205780635f3abb851461025f57806365cad8911461027557600080fd5b806314a184e71461013f5780631d4af655146101725780632fb6701a146101925780633b0fb841146101b45780633d23b9ca146101d4575b600080fd5b34801561014b57600080fd5b5061015f61015a366004612a17565b610410565b6040519081526020015b60405180910390f35b34801561017e57600080fd5b5061015f61018d366004612a39565b610453565b34801561019e57600080fd5b506101b26101ad366004612a69565b6105d3565b005b3480156101c057600080fd5b5061015f6101cf366004612a17565b61067a565b3480156101e057600080fd5b5061015f60005481565b3480156101f657600080fd5b5061015f60345481565b34801561020c57600080fd5b506101b261021b366004612a39565b6107eb565b34801561022c57600080fd5b5060325461024790600160801b90046001600160801b031681565b6040516001600160801b039091168152602001610169565b34801561026b57600080fd5b5061015f60335481565b34801561028157600080fd5b50610295610290366004612af4565b610861565b6040516101699190612b9a565b3480156102ae57600080fd5b506101b26102bd366004612bf2565b610c6d565b3480156102ce57600080fd5b506102e26102dd366004612a39565b610d71565b6040519015158152602001610169565b610295610300366004612c5b565b610eea565b34801561031157600080fd5b506101b2610320366004612a17565b611019565b34801561033157600080fd5b506102e2610340366004612a17565b6110b9565b34801561035157600080fd5b506101b2610360366004612ccc565b611277565b34801561037157600080fd5b50603254610247906001600160801b031681565b34801561039157600080fd5b506101b26103a0366004612a69565b6113d8565b3480156103b157600080fd5b5061015f6103c0366004612a39565b611477565b6101b26103d3366004612d23565b611662565b3480156103e457600080fd5b506001546103f8906001600160a01b031681565b6040516001600160a01b039091168152602001610169565b6032546000908190610433908590600160801b90046001600160801b0316611759565b905061043f848461067a565b6104499082612d85565b9150505b92915050565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b600482015260009182916001600160a01b039091169063aa10e9f090602401602060405180830381865afa1580156104af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d39190612d98565b6001600160a01b03166341976e09600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105589190612d98565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016040805180830381865afa15801561059b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bf9190612db5565b5090506105cc8382610410565b9392505050565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa15801561061c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106409190612d98565b6001600160a01b03161461066e57604051630543601560e11b81523360048201526024015b60405180910390fd5b61067781611778565b50565b600080600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f49190612d98565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107559190612dd9565b9050600061079061076783600a612ee3565b60325461078a908790610784908a906001600160801b0316611759565b90611759565b90611844565b9050600060335482116107a357816107a7565b6033545b9050600060345482106107ba57816107be565b6034545b9050856107cc85600a612ee3565b6107d69083612ef2565b6107e09190612f1f565b979650505050505050565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061082157610821612f33565b60200260200101818152505061083681610861565b9050805160011461085d5760405163192a0bc560e31b815260048101839052602401610665565b5050565b606061086b611859565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b916108a09160040190815260200190565b602060405180830381865afa1580156108bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e19190612f49565b1561090557600054604051630cb09dc760e01b815260040161066591815260200190565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa15801561095d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109819190612d98565b6001600160a01b031663529b128c600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a069190612d98565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152620151806024820152600160448201526064016040805180830381865afa158015610a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7d9190612db5565b50600154604051630aa10e9f60e41b81527f636f6e74726f6c6c65724d6f64756c650000000000000000000000000000000060048201529192506001600160a01b03169063aa10e9f090602401602060405180830381865afa158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0b9190612d98565b6001600160a01b031663146a89cc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b4557600080fd5b505af1158015610b59573d6000803e3d6000fd5b50505050825167ffffffffffffffff811115610b7757610b77612a84565b604051908082528060200260200182016040528015610ba0578160200160208202803683370190505b5091506000805b8451811015610c4657610bd3858281518110610bc557610bc5612f33565b6020026020010151846110b9565b15610c3e57610bfb858281518110610bed57610bed612f33565b6020026020010151846118a3565b848181518110610c0d57610c0d612f33565b6020026020010151848381518110610c2757610c27612f33565b6020908102919091010152610c3b82612f6b565b91505b600101610ba7565b506000818551610c569190612f84565b845103845250610c6891506121a59050565b919050565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015610cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cda9190612d98565b6001600160a01b031614610d0357604051630543601560e11b8152336004820152602401610665565b6001600160a01b038116610d425760405163eac0d38960e01b81526020600482015260056024820152641d985d5b1d60da1b6044820152606401610665565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b600482015260009182916001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015610dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df19190612d98565b6001600160a01b03166341976e09600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e769190612d98565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016040805180830381865afa158015610eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edd9190612db5565b5090506105cc83826110b9565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b60048201526060916001600160a01b031690339085908590849063aa10e9f090602401602060405180830381865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190612d98565b6001600160a01b03166308f9c88e348585856040518563ffffffff1660e01b8152600401610f9e93929190612fc0565b6000604051808303818588803b158015610fb757600080fd5b505af1158015610fcb573d6000803e3d6000fd5b505050505061100c89898080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061086192505050565b9998505050505050505050565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015611062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110869190612d98565b6001600160a01b0316146110af57604051630543601560e11b8152336004820152602401610665565b61085d82826121cb565b60015460405163eb02c30160e01b81526004810184905260009182916001600160a01b039091169063eb02c30190602401608060405180830381865afa158015611107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112b9190613074565b9050806040015160000361114357600091505061044d565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa15801561119d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c19190612d98565b6040805163d96dc84560e01b8152845160048201526020850151602482015290840151604482015260608401516064820152608481018690526001600160a01b03919091169063d96dc8459060a401606060405180830381865afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125191906130de565b90506000611263836040015186610410565b604090920151919091131595945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156112c25750825b905060008267ffffffffffffffff1660011480156112df5750303b155b9050811580156112ed575080155b1561130b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561133f57845468ff00000000000000001916680100000000000000001785555b61135d706c69717569646174696f6e4d6f64756c6560781b8b6122a8565b611365612339565b61136e89611778565b6113778861234b565b61138187876121cb565b83156113cc57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa158015611421573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114459190612d98565b6001600160a01b03161461146e57604051630543601560e11b8152336004820152602401610665565b6106778161234b565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b600482015260009182916001600160a01b039091169063aa10e9f090602401602060405180830381865afa1580156114d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f79190612d98565b6001600160a01b03166341976e09600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015611558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157c9190612d98565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016040805180830381865afa1580156115bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e39190612db5565b5060015460405163eb02c30160e01b8152600481018690529192506105cc916001600160a01b039091169063eb02c30190602401608060405180830381865afa158015611634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116589190613074565b604001518261067a565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b60048201526001600160a01b0390911690339084908490849063aa10e9f090602401602060405180830381865afa1580156116c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e59190612d98565b6001600160a01b03166308f9c88e348585856040518563ffffffff1660e01b815260040161171593929190612fc0565b6000604051808303818588803b15801561172e57600080fd5b505af1158015611742573d6000803e3d6000fd5b5050505050611750876107eb565b50505050505050565b6000670de0b6b3a764000061176e8385612ef2565b6105cc9190612f1f565b806001600160801b03166000036117d25760405163046c82ad60e41b815260206004820152601660248201527f6e65774c69717569646174696f6e466565526174696f000000000000000000006044820152606401610665565b603254604080516001600160801b03928316815291831660208301527fb77fb62e529811c9c38bc32304dee1281f065990483f4ab50000c833f384dea1910160405180910390a1603280546fffffffffffffffffffffffffffffffff19166001600160801b0392909216919091179055565b60008161176e670de0b6b3a764000085612ef2565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0080546001190161189d57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201526001600160a01b03909116908390600090839063aa10e9f090602401602060405180830381865afa158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190612d98565b90506000604051806080016040528061193d86612412565b8152602001836001600160a01b03166367f77e546040518163ffffffff1660e01b8152600401602060405180830381865afa158015611980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a4919061311b565b8152604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526020909101906001600160a01b0387169063aa10e9f090602401602060405180830381865afa158015611a01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a259190612d98565b6001600160a01b0316637bd35176866040518263ffffffff1660e01b8152600401611a5291815260200190565b606060405180830381865afa158015611a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9391906130de565b604001518152602001856001600160a01b031663aa10e9f0706c69717569646174696f6e4d6f64756c6560781b6040518263ffffffff1660e01b8152600401611ade91815260200190565b602060405180830381865afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f9190612d98565b6001600160a01b031663eda6b660866040518263ffffffff1660e01b8152600401611b4c91815260200190565b602060405180830381865afa158015611b69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8d919061311b565b9052600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201529192506000916001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015611bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c129190612d98565b60015460405163eb02c30160e01b8152600481018a90529192506000916001600160a01b039091169063eb02c30190602401608060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c859190613074565b6040805163d96dc84560e01b8152825160048201526020830151602482015290820151604482015260608201516064820152608481018990529091506000906001600160a01b0384169063d96dc8459060a401606060405180830381865afa158015611cf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1991906130de565b6040810151909150600080821315611e3d576000611d3b85604001518c61067a565b9050600081841115611d5d578192508184611d569190613134565b9050611d61565b8392505b60015485516001600160a01b03909116906337f3e0d290611d829084613134565b6040518263ffffffff1660e01b8152600401611da091815260200190565b600060405180830381600087803b158015611dba57600080fd5b505af1158015611dce573d6000803e3d6000fd5b5050600154604051636250216960e01b8152336004820152602481018790526001600160a01b03909116925063625021699150604401600060405180830381600087803b158015611e1e57600080fd5b505af1158015611e32573d6000803e3d6000fd5b505050505050611eaf565b60015483516001600160a01b03909116906337f3e0d290611e5e9085613134565b6040518263ffffffff1660e01b8152600401611e7c91815260200190565b600060405180830381600087803b158015611e9657600080fd5b505af1158015611eaa573d6000803e3d6000fd5b505050505b6001548451602080860151908701516001600160a01b039093169263e0a1ba379291611eda9161315b565b611ee390613183565b8760400151611ef190613183565b6040516001600160e01b031960e086901b168152600481019390935260248301919091526044820152606401600060405180830381600087803b158015611f3757600080fd5b505af1158015611f4b573d6000803e3d6000fd5b50506001546040516344b0345360e11b8152600481018f90526001600160a01b03909116925063896068a69150602401600060405180830381600087803b158015611f9557600080fd5b505af1158015611fa9573d6000803e3d6000fd5b5050604051630852cd8d60e31b8152600481018e90526001600160a01b03881692506342966c689150602401600060405180830381600087803b158015611fef57600080fd5b505af1158015612003573d6000803e3d6000fd5b5050604080518e815233602080830191909152818301869052606082018f90528751608083015287015160a08201529086015160c08201527f7ee73f366efbbd5d0b066abfe52c6469c7301dc21d6b1c909d7d436092892172925060e001905060405180910390a150505050506000604051806080016040528061208687612412565b8152602001846001600160a01b03166367f77e546040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ed919061311b565b815260200160008152602001600081525090506000856001600160a01b03166396528df06040518163ffffffff1660e01b8152600401602060405180830381865afa158015612140573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612164919061311b565b905061218384846060015185604001518660200151866020015161261e565b82518251612192919083612820565b61219b86612889565b5050505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b8015806121d6575081155b156122245760405163046c82ad60e41b815260206004820152601160248201527f6e65774c69717569646174696f6e4665650000000000000000000000000000006044820152606401610665565b8181101561224f576040516372170ded60e01b81526004810183905260248101829052604401610665565b6034546033546040805192835260208301919091528101839052606081018290527f167041fd23ec6f460de00890da3a8bf4482baac811052a3a04b9311f338df61f9060800160405180910390a1603491909155603355565b816122c65760405163673791e360e11b815260040160405180910390fd5b6001600160a01b0381166123055760405163eac0d38960e01b81526020600482015260056024820152641d985d5b1d60da1b6044820152606401610665565b6000919091556001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055565b612341612940565b61234961298e565b565b806001600160801b03166000036123a55760405163046c82ad60e41b815260206004820152601960248201527f6e65774c69717569646174696f6e427566666572526174696f000000000000006044820152606401610665565b603254604080516001600160801b03600160801b9093048316815291831660208301527fa16cc38a953858843ecc1c2c61198480980a33eb87b2899243032f3c88b9b982910160405180910390a1603280546001600160801b03928316600160801b029216919091179055565b600080826001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015612453573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124779190612d98565b6040516370a0823160e01b81526001600160a01b03858116600483015291909116906370a0823190602401602060405180830381865afa1580156124bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e3919061311b565b90506000836001600160a01b0316631cc5b7766040518163ffffffff1660e01b8152600401606060405180830381865afa158015612525573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254991906130de565b60000151846001600160a01b03166385820ba36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561258b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125af919061311b565b6125b9919061315b565b90508082121561260c5760405163015cf55b60e31b815260206004820152600e60248201527f636f6c6c61746572616c4e6574310000000000000000000000000000000000006044820152606401610665565b6126168183613134565b949350505050565b6000856001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561265e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612682919061311b565b9050806000036126925750612819565b60008085131561273f57858513156126dc57816126af8787613134565b6126c190670de0b6b3a764000061319f565b6126cb91906131cf565b6126d5908561315b565b9050612769565b8284146127385760405163015cf55b60e31b815260206004820152602360248201527f737461626c65436f6c6c61746572616c50657253686172654c6971756964617460448201526234b7b760e91b6064820152608401610665565b5050612819565b8161275286670de0b6b3a764000061319f565b61275c91906131cf565b612766908561315b565b90505b60006127878261277886612996565b6127829190613134565b6129e0565b90506000612794836129f1565b6127a683670de0b6b3a7640000612ef2565b6127b09190612f1f565b905064e8d4a510008111156128145760405163015cf55b60e31b815260206004820152602360248201527f737461626c65436f6c6c61746572616c50657253686172654c6971756964617460448201526234b7b760e91b6064820152608401610665565b505050505b5050505050565b818313806128365750612833818461315b565b82135b156128845760405163015cf55b60e31b815260206004820152600e60248201527f636f6c6c61746572616c4e6574320000000000000000000000000000000000006044820152606401610665565b505050565b6000816001600160a01b0316631cc5b7766040518163ffffffff1660e01b8152600401606060405180830381865afa1580156128c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ed91906130de565b6020015110156106775760405163015cf55b60e31b815260206004820152601f60248201527f676c6f62616c41766572616765507269636549734e6f744e65676174697665006044820152606401610665565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1661234957604051631afcd79f60e31b815260040160405180910390fd5b6121a5612940565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156129dc5760405163123baf0360e11b815260048101839052602401610665565b5090565b6000808212156129dc575060000390565b6000808212156129dc57604051635467221960e11b815260048101839052602401610665565b60008060408385031215612a2a57600080fd5b50508035926020909101359150565b600060208284031215612a4b57600080fd5b5035919050565b80356001600160801b0381168114610c6857600080fd5b600060208284031215612a7b57600080fd5b6105cc82612a52565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715612abd57612abd612a84565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612aec57612aec612a84565b604052919050565b600060208284031215612b0657600080fd5b813567ffffffffffffffff811115612b1d57600080fd5b8201601f81018413612b2e57600080fd5b803567ffffffffffffffff811115612b4857612b48612a84565b8060051b612b5860208201612ac3565b91825260208184018101929081019087841115612b7457600080fd5b6020850194505b838510156107e057843580835260209586019590935090910190612b7b565b602080825282518282018190526000918401906040840190835b81811015612bd2578351835260209384019390920191600101612bb4565b509095945050505050565b6001600160a01b038116811461067757600080fd5b600060208284031215612c0457600080fd5b81356105cc81612bdd565b60008083601f840112612c2157600080fd5b50813567ffffffffffffffff811115612c3957600080fd5b6020830191508360208260051b8501011115612c5457600080fd5b9250929050565b60008060008060408587031215612c7157600080fd5b843567ffffffffffffffff811115612c8857600080fd5b612c9487828801612c0f565b909550935050602085013567ffffffffffffffff811115612cb457600080fd5b612cc087828801612c0f565b95989497509550505050565b600080600080600060a08688031215612ce457600080fd5b8535612cef81612bdd565b9450612cfd60208701612a52565b9350612d0b60408701612a52565b94979396509394606081013594506080013592915050565b600080600060408486031215612d3857600080fd5b83359250602084013567ffffffffffffffff811115612d5657600080fd5b612d6286828701612c0f565b9497909650939450505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561044d5761044d612d6f565b600060208284031215612daa57600080fd5b81516105cc81612bdd565b60008060408385031215612dc857600080fd5b505080516020909101519092909150565b600060208284031215612deb57600080fd5b815160ff811681146105cc57600080fd5b6001815b6001841115612e3757808504811115612e1b57612e1b612d6f565b6001841615612e2957908102905b60019390931c928002612e00565b935093915050565b600082612e4e5750600161044d565b81612e5b5750600061044d565b8160018114612e715760028114612e7b57612e97565b600191505061044d565b60ff841115612e8c57612e8c612d6f565b50506001821b61044d565b5060208310610133831016604e8410600b8410161715612eba575081810a61044d565b612ec76000198484612dfc565b8060001904821115612edb57612edb612d6f565b029392505050565b60006105cc60ff841683612e3f565b808202811582820484141761044d5761044d612d6f565b634e487b7160e01b600052601260045260246000fd5b600082612f2e57612f2e612f09565b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612f5b57600080fd5b815180151581146105cc57600080fd5b600060018201612f7d57612f7d612d6f565b5060010190565b8181038181111561044d5761044d612d6f565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0384168152604060208201819052810182905260006060600584901b830181019083018583601e1936839003015b8782101561306657868503605f19018452823581811261301457600080fd5b890160208101903567ffffffffffffffff81111561303157600080fd5b80360382131561304057600080fd5b61304b878284612f97565b96505050602083019250602084019350600182019150612ff5565b509298975050505050505050565b6000608082840312801561308757600080fd5b506040516000906080810167ffffffffffffffff811182821017156130ae576130ae612a84565b60409081528451825260208086015190830152848101519082015260609384015193810193909352509092915050565b600060608284031280156130f157600080fd5b506130fa612a9a565b82518152602080840151908201526040928301519281019290925250919050565b60006020828403121561312d57600080fd5b5051919050565b818103600083128015838313168383128216171561315457613154612d6f565b5092915050565b808201828112600083128015821682158216171561317b5761317b612d6f565b505092915050565b6000600160ff1b820161319857613198612d6f565b5060000390565b80820260008212600160ff1b841416156131bb576131bb612d6f565b818105831482151761044d5761044d612d6f565b6000826131de576131de612f09565b600160ff1b8214600019841416156131f8576131f8612d6f565b50059056fea264697066735822122050aa29db18228c33ac765ce24e15a8fe3cc52fac69d1f1ba40ca0c731a8e463c64736f6c634300081c0033