298 txs
1.1k calls
constructor
constructor(uint32 _startTimestamp, address _weth, address _titanX, address _lotusBnB, address _edenBnb, (address _v3Router, address _v3Factory, address _owner) _params)
functions
getCurrentInterval
viewfunction getCurrentInterval() view returns (uint32 _lastInterval, uint256 _amountAllocated, uint32 _missedIntervals, uint32 _lastIntervalStartTimestamp, bool updated)
getTwapAmount
viewfunction getTwapAmount(address tokenIn, address tokenOut, uint24 poolTier, uint256 amount) view returns (uint256 twapAmount, uint224 slippage)
intervals
viewfunction intervals(uint32 interval) view returns (uint256 amountAllocated, uint256 amountBurned)
lastBurnedInterval
viewfunction lastBurnedInterval() view returns (uint32)
lastBurnedIntervalStartTimestamp
viewfunction lastBurnedIntervalStartTimestamp() view returns (uint32)
lastIntervalNumber
viewfunction lastIntervalNumber() view returns (uint32)
lastSnapshot
viewfunction lastSnapshot() view returns (uint32)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
slippageAdmin
viewfunction slippageAdmin() view returns (address)
slippageConfigs
viewfunction slippageConfigs(address pool) view returns (uint224 slippage, uint32 twapLookback)
startTimeStamp
viewfunction startTimeStamp() view returns (uint32)
swapCap
viewfunction swapCap() view returns (uint256)
toDistribute
viewfunction toDistribute() view returns (uint256)
totalWETHDistributed
viewfunction totalWETHDistributed() view returns (uint256)
uniswapV3Router
viewfunction uniswapV3Router() view returns (address)
v3Factory
viewfunction v3Factory() view returns (address)
weth
viewfunction weth() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
changeSlippageAdmin
nonpayablefunction changeSlippageAdmin(address _new)
changeSlippageConfig
nonpayablefunction changeSlippageConfig(address pool, uint224 _newSlippage, uint32 _newLookBack)
changeSwapCap
nonpayablefunction changeSwapCap(uint256 _newSwapCap)
distributeWETH
nonpayablefunction distributeWETH(uint256 _amount)
renounceOwnership
nonpayablefunction renounceOwnership()
swapWETHToTitanXAndDistribute
nonpayablefunction swapWETHToTitanXAndDistribute(uint32 _deadline)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
BuyAndBurn
event BuyAndBurn(uint256 indexed wethAmount, uint256 indexed titanXAmount, address indexed caller)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
SlippageAdminChanged
event SlippageAdminChanged(address indexed oldAdmin, address indexed newAdmin)
SlippageConfigChanged
event SlippageConfigChanged(address indexed pool, uint224 indexed newSlippage, uint32 indexed newLookback)
errors
Address0
error Address0()
Amount0
error Amount0()
BuyAndBurn__OnlyEOA
error BuyAndBurn__OnlyEOA()
Bytes0
error Bytes0()
Expired
error Expired()
GreaterThan
error GreaterThan(uint256 a, uint256 b)
IntervalAlreadyBurned
error IntervalAlreadyBurned()
MustStartAt5PMUTC
error MustStartAt5PMUTC()
NotStartedYet
error NotStartedYet()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SwapActions__InvalidLookBack
error SwapActions__InvalidLookBack()
SwapActions__InvalidSlippage
error SwapActions__InvalidSlippage()
SwapActions__OnlySlippageAdmin
error SwapActions__OnlySlippageAdmin()
T
error T()
creation bytecode
0x610160604052348015610010575f5ffd5b50604051612fd0380380612fd083398101604081905261002f91610156565b604081015181906001600160a01b03811661006357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61006c816100d0565b5080516001600160a01b039081166080526020820151811660a052604090910151600280546001600160a01b0319169183169190911790555f196005559283166101205250811661014052908116610100521660e05263ffffffff1660c05261023b565b600180546001600160a01b03191690556100e9816100ec565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114610151575f5ffd5b919050565b5f5f5f5f5f5f86880361010081121561016d575f5ffd5b875163ffffffff81168114610180575f5ffd5b965061018e6020890161013b565b955061019c6040890161013b565b94506101aa6060890161013b565b93506101b86080890161013b565b92506060609f19820112156101cb575f5ffd5b50604051606081016001600160401b03811182821017156101fa57634e487b7160e01b5f52604160045260245ffd5b60405261020960a0890161013b565b815261021760c0890161013b565b602082015261022860e0890161013b565b6040820152809150509295509295509295565b60805160a05160c05160e051610100516101205161014051612cbf6103115f395f8181610633015261079901525f81816106e9015261080c01525f818161058a01528181610665015261071801525f818161022301528181610568015281816105ce01528181610ae0015281816116a1015261173701525f818161045c015281816108e60152818161094401528181610a7801528181610e6f01528181610f7901528181611037015261108101525f81816102f50152610cb701525f81816101d10152818161110b01526112490152612cbf5ff3fe608060405234801561000f575f5ffd5b5060043610610187575f3560e01c80637c887c59116100d9578063c6179cad11610093578063e30c39781161006e578063e30c397814610433578063f2fde38b14610444578063f38d00f014610457578063fb861ac11461047e575f5ffd5b8063c6179cad14610395578063d1837eca146103a8578063e121ce41146103d8575f5ffd5b80637c887c59146102f0578063867dcd51146103175780638da5cb5b1461032e5780639f47f0481461033e578063ad1b63f414610351578063bf34a8c31461038c575f5ffd5b806344e43c98116101445780636d4014e81161011f5780636d4014e8146102b6578063715018a6146102c9578063782ee170146102d157806379ba5097146102e8575f5ffd5b806344e43c981461025a578063457c7afa1461029a5780635311135e146102ad575f5ffd5b806302df9df11461018b578063090f8ad4146101a75780632c76d7a6146101cc5780633a237aa01461020b5780633fc8cef31461021e5780634391236414610245575b5f5ffd5b61019460055481565b6040519081526020015b60405180910390f35b6004546101b79063ffffffff1681565b60405163ffffffff909116815260200161019e565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161019e565b6002546101f3906001600160a01b031681565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b6102586102533660046123d3565b610495565b005b6102626108d8565b6040805163ffffffff96871681526020810195909552928516928401929092529092166060820152901515608082015260a00161019e565b6102586102a8366004612402565b6109f9565b61019460085481565b6102586102c436600461241d565b610a67565b610258610b2a565b6004546101b790600160201b900463ffffffff1681565b610258610b3d565b6101f37f000000000000000000000000000000000000000000000000000000000000000081565b6004546101b790600160401b900463ffffffff1681565b5f546001600160a01b03166101f3565b61025861034c366004612434565b610b86565b61037761035f3660046123d3565b60066020525f90815260409020805460019091015482565b6040805192835260208301919091520161019e565b61019460075481565b6102586103a336600461241d565b610c92565b6103bb6103b6366004612487565b610caf565b604080519283526001600160e01b0390911660208301520161019e565b61040f6103e6366004612402565b60036020525f90815260409020546001600160e01b03811690600160e01b900463ffffffff1682565b604080516001600160e01b03909316835263ffffffff90911660208301520161019e565b6001546001600160a01b03166101f3565b610258610452366004612402565b610df8565b6101b77f000000000000000000000000000000000000000000000000000000000000000081565b6004546101b790600160601b900463ffffffff1681565b61049d610e68565b3332146104bd576040516360c3c2b760e11b815260040160405180910390fd5b600454600160201b900463ffffffff165f9081526006602052604090206001810154156104fd576040516331bbcb2160e11b815260040160405180910390fd5b610505610f72565b6005548154111561053f5760055481545f91610520916124f0565b90508060085f8282546105339190612509565b90915550506005548255505b80545f906105549066354a6ba7a180006110c9565b8254600184018190559091505f906105bf907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906105b59086906124f0565b5f612710896110f4565b90506105f56001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633846112d6565b5f61061c8261060d6002670de0b6b3a7640000612530565b67ffffffffffffffff166110c9565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063095ea7b3906044016020604051808303815f875af11580156106ad573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d1919061256e565b5060405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af115801561075e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610782919061256e565b50604051630c371c6b60e21b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906330dc71ac906024015f604051808303815f87803b1580156107e2575f5ffd5b505af11580156107f4573d5f5f3e3d5ffd5b5050604051630c371c6b60e21b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692506330dc71ac91506024015f604051808303815f87803b158015610857575f5ffd5b505af1158015610869573d5f5f3e3d5ffd5b505060048054600160401b63ffffffff600160201b830416026bffffffff00000000000000001990911617905550508354339083906108a99086906124f0565b6040517f1b3ed074dce570943c9d4e66776a060e8ac73af4f6b002482b09e561d90f038c905f90a45050505050565b5f808080804263ffffffff167f000000000000000000000000000000000000000000000000000000000000000063ffffffff16111561092457505f9350839250829150819050806109f2565b6004545f9063ffffffff16156109425760045463ffffffff16610964565b7f00000000000000000000000000000000000000000000000000000000000000005b90505f6109718242612587565b60045490915063ffffffff161580610990575061012c63ffffffff8216115b156109ef576109a48163ffffffff1661133a565b91985096509450909250829061012c63ffffffff82161180156109ce575060045463ffffffff1615155b6109d8575f6109db565b60015b6109e89060ff16866125a3565b9450600192505b50505b9091929394565b80610a03816117c9565b610a0b6117f0565b6002546040516001600160a01b038085169216907fe29b0c9a6487aafa3c3ceb89f97f492476d5d1b3c03dbbdd4e1c004d8bd83ef4905f90a350600280546001600160a01b0319166001600160a01b0392909216919091179055565b80610a718161181c565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164263ffffffff16118015610ac6575060045461012c90610abe9063ffffffff1642612587565b63ffffffff16115b15610ad357610ad3610e68565b610b086001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308561183c565b610b10610f72565b8160085f828254610b219190612509565b90915550505050565b610b326117f0565b610b3b5f61187b565b565b60015433906001600160a01b03168114610b7a5760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b610b838161187b565b50565b8063ffffffff16610b968161181c565b610b9e611894565b60148263ffffffff161115610bc6576040516330c067a960e01b815260040160405180910390fd5b670de0b6b3a76400006001600160e01b0384161115610bf8576040516338fd8f3960e21b815260040160405180910390fd5b8163ffffffff16836001600160e01b0316856001600160a01b03167f6b866971e730de54469a032413d79dc0037a7da3f92641b3a839ecc013a9c73e60405160405180910390a4506040805180820182526001600160e01b03938416815263ffffffff92831660208083019182526001600160a01b039096165f90815260039096529190942093519051909116600160e01b029116179055565b610c9a611894565b8015610ca65780610ca9565b5f195b60055550565b5f5f5f610ce67f0000000000000000000000000000000000000000000000000000000000000000610ce18989896118d3565b611949565b6001600160a01b0381165f908152600360209081526040918290208251808401909352546001600160e01b0381168352600160e01b900463ffffffff1690820181905291925090158015610d42575080516001600160e01b0316155b15610d855760405180604001604052806702c68af0bb140000670de0b6b3a7640000610d6e91906125bf565b67ffffffffffffffff168152600f60209091015290505b5f8160200151603c610d9791906125df565b90505f610da384611a2f565b90508163ffffffff168163ffffffff161015610dbd578091505b5f610dc88584611be7565b5090505f610dd582611e16565b855197509050610de7818a8e8e612130565b975050505050505094509492505050565b610e006117f0565b600180546001600160a01b0383166001600160a01b03199091168117909155610e305f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164263ffffffff161015610eb557604051631864d7ab60e21b815260040160405180910390fd5b600454600160601b900463ffffffff165f03610ed357610ed3610f72565b5f5f5f5f5f610ee06108d8565b945094509450945094508015610f6b57610efc61012c846125df565b610f0690836125a3565b6004805463ffffffff191663ffffffff9283161781556040805180820182528781525f6020808301828152958b16808352600690915292902090518155925160019390930192909255805467ffffffff000000001916600160201b9092029190911790555b5050505050565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000000164263ffffffff161080610fd157504260045463ffffffff91821691610fc991600160601b900416620151806125a3565b63ffffffff16115b15610fd857565b600454600160601b900463ffffffff161580159061101c57504260045463ffffffff9182169161101391600160601b9004166202a3006125a3565b63ffffffff1611155b15611026575f6008555b600880546007555f9081905561105c7f000000000000000000000000000000000000000000000000000000000000000042612587565b90505f61106c6201518083612605565b905061107b81620151806125df565b6110a5907f00000000000000000000000000000000000000000000000000000000000000006125a3565b6004600c6101000a81548163ffffffff021916908363ffffffff1602179055505050565b5f815f190483118202156110e45763c4c5d7f55f526004601cfd5b50670de0b6b3a764000091020490565b60405163095ea7b360e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018690525f919088169063095ea7b3906044016020604051808303815f875af1158015611163573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611187919061256e565b506040516bffffffffffffffffffffffff19606089811b821660208401526001600160e81b031960e887901b16603484015288901b1660378201525f90604b0160405160208183030381529060405290505f5f6111e68a8a888b610caf565b915091505f875f146111f8578761120b565b61120b83836001600160e01b03166110c9565b6040805160a08101825286815230602082015263ffffffff891681830152606081018c905260808101839052905163c04b8d5960e01b8152919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c04b8d599061128690849060040161262c565b6020604051808303815f875af11580156112a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c691906126b5565b9c9b505050505050505050505050565b6040516001600160a01b0383811660248301526044820183905261133591859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061220f565b505050565b5f5f5f6113468461227b565b600454909150611364908290600160201b900463ffffffff166125a3565b61136f9060016125a3565b604051630bb270ed60e21b815263ffffffff421660048201529093505f90735dcd2315a462f0046641b2118e106fbb47d133d390632ec9c3b490602401602060405180830381865af41580156113c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113eb91906126cc565b60045490915063ffffffff165f811561147a57604051630bb270ed60e21b815263ffffffff83166004820152735dcd2315a462f0046641b2118e106fbb47d133d390632ec9c3b490602401602060405180830381865af4158015611451573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147591906126cc565b61147c565b825b60075490915063ffffffff808316908516036114d1576114a161012c620151806126e7565b61ffff166114b08660016125a3565b6114c09063ffffffff168361270c565b6114ca9190612723565b9550611637565b604051630ac51d8960e11b815263ffffffff8416600482015283905f90735dcd2315a462f0046641b2118e106fbb47d133d39063158a3b1290602401602060405180830381865af4158015611528573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154c91906126cc565b90505f61012c61155c8484612587565b6115669190612605565b905061157761012c620151806126e7565b61ffff1661158b63ffffffff83168661270c565b6115959190612723565b61159f908a612509565b98505f8163ffffffff168963ffffffff1610156115bc575f6115d1565b6115c6828a612587565b6115d19060016125a3565b63ffffffff1690506115e861012c620151806126e7565b61ffff1681116116225761160161012c620151806126e7565b61ffff1681600854611613919061270c565b61161d9190612723565b611626565b6008545b611630908b612509565b9950505050505b600454600160201b900463ffffffff165f90815260066020908152604080832081518083019092528054825260010154918101829052919015801561167c5750815115155b611686575f611689565b81515b6040516370a0823160e01b81523060048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156116ee573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061171291906126b5565b61171c828a612509565b11156117af576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611784573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a891906126b5565b97506117bc565b6117b98189612509565b97505b5050505050509193909250565b6001600160a01b038116610b83576040516359c662df60e11b815260040160405180910390fd5b5f546001600160a01b03163314610b3b5760405163118cdaa760e01b8152336004820152602401610b71565b805f03610b8357604051635a53a6e960e01b815260040160405180910390fd5b6040516001600160a01b0384811660248301528381166044830152606482018390526118759186918216906323b872dd90608401611303565b50505050565b600180546001600160a01b0319169055610b83816122ac565b6002546001600160a01b03163314806118b657505f546001600160a01b031633145b610b3b576040516371dd489b60e11b815260040160405180910390fd5b604080516060810182525f8082526020820181905291810191909152826001600160a01b0316846001600160a01b0316111561190d579192915b6040518060600160405280856001600160a01b03168152602001846001600160a01b031681526020018362ffffff1681525090505b9392505050565b5f81602001516001600160a01b0316825f01516001600160a01b03161061196e575f5ffd5b815160208084015160408086015181516001600160a01b0395861681860152949092168482015262ffffff90911660608085019190915281518085038201815260808501909252815191909201206001600160f81b031960a08401529085901b6bffffffffffffffffffffffff191660a183015260b58201527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d582015260f50160408051601f1981840301815291905280516020909101209392505050565b5f5f5f836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611a6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a929190612747565b5050509350935050505f8161ffff1611611ad35760405162461bcd60e51b81526020600482015260026024820152614e4960f01b6044820152606401610b71565b5f806001600160a01b03861663252c09d784611af08760016127da565b611afa91906127f4565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401608060405180830381865afa158015611b37573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5b9190612828565b93505050915080611bd35760405163252c09d760e01b81525f60048201526001600160a01b0387169063252c09d790602401608060405180830381865afa158015611ba8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bcc9190612828565b5091935050505b611bdd8242612587565b9695505050505050565b5f5f8263ffffffff165f03611c235760405162461bcd60e51b8152602060048201526002602482015261042560f41b6044820152606401610b71565b6040805160028082526060820183525f9260208301908036833701905050905083815f81518110611c5657611c56612891565b602002602001019063ffffffff16908163ffffffff16815250505f81600181518110611c8457611c84612891565b602002602001019063ffffffff16908163ffffffff16815250505f5f866001600160a01b031663883bdbfd846040518263ffffffff1660e01b8152600401611ccc91906128a5565b5f60405180830381865afa158015611ce6573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d0d91908101906129b4565b915091505f825f81518110611d2457611d24612891565b602002602001015183600181518110611d3f57611d3f612891565b6020026020010151611d519190612a79565b90505f825f81518110611d6657611d66612891565b602002602001015183600181518110611d8157611d81612891565b602090810291909101015103905063ffffffff8816611da08184612aa6565b97505f8360060b128015611dbf5750611db98184612ae2565b60060b15155b15611dd25787611dce81612b03565b9850505b63ffffffff8916640100000000600160c01b03602084901b16611dfc6001600160a01b0383612b24565b611e069190612b55565b9750505050505050509250929050565b5f5f5f8360020b12611e2b578260020b611e32565b8260020b5f035b9050620d89e8811115611e58576040516315e4079d60e11b815260040160405180910390fd5b5f816001165f03611e6d57600160801b611e7f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611eb3576ffff97272373d413259a46990580e213a0260801c5b6004821615611ed2576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611ef1576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611f10576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611f2f576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611f4e576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611f6d576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611f8d576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611fad576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611fcd576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611fed576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561200d576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561202d576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561204d576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561206d576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561208e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156120ae576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156120cd576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156120ea576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561210957805f19816121055761210561251c565b0490505b600160201b81061561211c57600161211e565b5f5b60ff16602082901c0192505050919050565b5f6fffffffffffffffffffffffffffffffff6001600160a01b038616116121ac575f61216660026001600160a01b038816612c66565b9050826001600160a01b0316846001600160a01b03161061219557612190600160c01b86836122fb565b6121a4565b6121a48186600160c01b6122fb565b915050612207565b5f6121c56001600160a01b03871680600160401b6122fb565b9050826001600160a01b0316846001600160a01b0316106121f4576121ef600160801b86836122fb565b612203565b6122038186600160801b6122fb565b9150505b949350505050565b5f5f60205f8451602086015f885af18061222e576040513d5f823e3d81fd5b50505f513d91508115612245578060011415612252565b6001600160a01b0384163b155b1561187557604051635274afe760e01b81526001600160a01b0385166004820152602401610b71565b5f61228861012c83612723565b60045490915063ffffffff16156122a757806122a381612c74565b9150505b919050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f838302815f1985870982811083820303915050805f0361232f578382816123255761232561251c565b0492505050611942565b8084116123465761234660038515026011186123b1565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b634e487b715f52806020526024601cfd5b63ffffffff81168114610b83575f5ffd5b5f602082840312156123e3575f5ffd5b8135611942816123c2565b6001600160a01b0381168114610b83575f5ffd5b5f60208284031215612412575f5ffd5b8135611942816123ee565b5f6020828403121561242d575f5ffd5b5035919050565b5f5f5f60608486031215612446575f5ffd5b8335612451816123ee565b925060208401356001600160e01b038116811461246c575f5ffd5b9150604084013561247c816123c2565b809150509250925092565b5f5f5f5f6080858703121561249a575f5ffd5b84356124a5816123ee565b935060208501356124b5816123ee565b9250604085013562ffffff811681146124cc575f5ffd5b9396929550929360600135925050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115612503576125036124dc565b92915050565b80820180821115612503576125036124dc565b634e487b7160e01b5f52601260045260245ffd5b5f67ffffffffffffffff8316806125495761254961251c565b8067ffffffffffffffff84160491505092915050565b805180151581146122a7575f5ffd5b5f6020828403121561257e575f5ffd5b6119428261255f565b63ffffffff8281168282160390811115612503576125036124dc565b63ffffffff8181168382160190811115612503576125036124dc565b67ffffffffffffffff8281168282160390811115612503576125036124dc565b63ffffffff81811683821602908116908181146125fe576125fe6124dc565b5092915050565b5f63ffffffff83168061261a5761261a61251c565b8063ffffffff84160491505092915050565b602081525f825160a0602084015280518060c08501525f5b8181101561266157602081840181015160e0878401015201612644565b505f84820160e0015260208501516001600160a01b038116604086015291506040850151606085015260608501516080850152608085015160a085015260e0601f19601f8301168501019250505092915050565b5f602082840312156126c5575f5ffd5b5051919050565b5f602082840312156126dc575f5ffd5b8151611942816123c2565b5f62ffffff8316806126fb576126fb61251c565b8062ffffff84160491505092915050565b8082028115828204841417612503576125036124dc565b5f826127315761273161251c565b500490565b805161ffff811681146122a7575f5ffd5b5f5f5f5f5f5f5f60e0888a03121561275d575f5ffd5b8751612768816123ee565b8097505060208801518060020b811461277f575f5ffd5b955061278d60408901612736565b945061279b60608901612736565b93506127a960808901612736565b925060a088015160ff811681146127be575f5ffd5b91506127cc60c0890161255f565b905092959891949750929550565b61ffff8181168382160190811115612503576125036124dc565b5f61ffff8316806128075761280761251c565b8061ffff84160691505092915050565b8051600681900b81146122a7575f5ffd5b5f5f5f5f6080858703121561283b575f5ffd5b8451612846816123c2565b935061285460208601612817565b92506040850151612864816123ee565b91506128726060860161255f565b905092959194509250565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b818110156128e257835163ffffffff168352602093840193909201916001016128be565b509095945050505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156129165761291661287d565b604052919050565b5f67ffffffffffffffff8211156129375761293761287d565b5060051b60200190565b5f82601f830112612950575f5ffd5b815161296361295e8261291e565b6128ed565b8082825260208201915060208360051b860101925085831115612984575f5ffd5b602085015b838110156129aa57805161299c816123ee565b835260209283019201612989565b5095945050505050565b5f5f604083850312156129c5575f5ffd5b825167ffffffffffffffff8111156129db575f5ffd5b8301601f810185136129eb575f5ffd5b80516129f961295e8261291e565b8082825260208201915060208360051b850101925087831115612a1a575f5ffd5b6020840193505b82841015612a4357612a3284612817565b825260209384019390910190612a21565b80955050505050602083015167ffffffffffffffff811115612a63575f5ffd5b612a6f85828601612941565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff82131715612503576125036124dc565b5f8160060b8360060b80612abc57612abc61251c565b667fffffffffffff1982145f1982141615612ad957612ad96124dc565b90059392505050565b5f8260060b80612af457612af461251c565b808360060b0791505092915050565b5f8160020b627fffff198103612b1b57612b1b6124dc565b5f190192915050565b6001600160c01b03818116838216818102909216918183048114821517612b4d57612b4d6124dc565b505092915050565b5f6001600160c01b03831680612b6d57612b6d61251c565b6001600160c01b03929092169190910492915050565b6001815b6001841115612bbe57808504811115612ba257612ba26124dc565b6001841615612bb057908102905b60019390931c928002612b87565b935093915050565b5f82612bd457506001612503565b81612be057505f612503565b8160018114612bf65760028114612c0057612c1c565b6001915050612503565b60ff841115612c1157612c116124dc565b50506001821b612503565b5060208310610133831016604e8410600b8410161715612c3f575081810a612503565b612c4b5f198484612b83565b805f1904821115612c5e57612c5e6124dc565b029392505050565b5f61194260ff841683612bc6565b5f63ffffffff821680612b1b57612b1b6124dc56fea264697066735822122055dbc03fef822c9367592b47a09703a3dae1bebbbf4df504ddcf4b858ae08d8f64736f6c634300081b003300000000000000000000000000000000000000000000000000000000679fb2a0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000f19308f923582a6f7c465e5ce7a9dc1bec6665b1000000000000000000000000fa7fb02ef0e934c6c2106617ebbbd0b7a01f57d50000000000000000000000001681eb21026104fa63121fd517e065cec21a4b4c000000000000000000000000e592427a0aece92de3edee1f18e0157c058615640000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f9840000000000000000000000005da227386e0fd73329fe3923394913eca3a624f7