4 txs
17 calls
constructor
constructor(address utilsAdr, address holdingAdr, address _tokenContractAdr)
functions
automator
viewfunction automator() view returns (address)
config
viewfunction config() view returns (address base, address quote, uint80 cashOutPrice, uint80 buyBackPrice, uint24 minTradePercent, uint256 tokenId)
correctPriceDirection
purefunction correctPriceDirection(address base, address quote, uint160 sqrtPriceX96) pure returns (uint160 sqrtPriceX96Corrected)
GAS_GRANT
viewfunction GAS_GRANT() view returns (uint256)
getDesiredAction
viewfunction getDesiredAction(uint160 price) view returns (uint8 action)
getPriceFromSqrtPriceX96
purefunction getPriceFromSqrtPriceX96(int8 decimalDiff, uint160 sqrtPriceX96) pure returns (uint80 price_12Decimals)
getSqrtPriceX96FromPrice
purefunction getSqrtPriceX96FromPrice(int8 decimalDiff, uint80 price_12Decimals) pure returns (uint160 sqrtPriceX96)
holdingContract
viewfunction holdingContract() view returns (address)
mulDiv
purefunction mulDiv(uint256 a, uint256 b, uint256 denominator) pure returns (uint256 result)
owner
viewfunction owner() view returns (address)
shouldExecute
viewfunction shouldExecute(uint256 handle) view returns (bool)
sqrt
purefunction sqrt(uint256 x) pure returns (uint128)
state
viewfunction state() view returns (address tokenHeld, uint80 lastTradedPrice, uint80 bestObservedPrice, bool direction, bool providingLiquidity, bool waiting)
taskId
viewfunction taskId() view returns (uint256)
tokenContractAdr
viewfunction tokenContractAdr() view returns (address)
utils
viewfunction utils() view returns (address)
execute
nonpayablefunction execute(uint256 handle)
onDeposit
nonpayablefunction onDeposit(uint256 howMuch)
prepareWithdraw
nonpayablefunction prepareWithdraw(uint256 amtEth)
prepareWithdrawAll
nonpayablefunction prepareWithdrawAll()
renounceOwnership
nonpayablefunction renounceOwnership()
rescueEth
nonpayablefunction rescueEth()
rescueTokens
nonpayablefunction rescueTokens(address token)
setConfig
nonpayablefunction setConfig(address base, address quote, uint80 cashOutPrice, uint80 buyBackPrice, uint80 liquidityLowPrice, uint80 liquidityHighPrice, uint24 minTradePercent)
setHoldingContract
nonpayablefunction setHoldingContract(address holdingAdr)
setToken
nonpayablefunction setToken(address _tokenContractAdr)
setUtils
nonpayablefunction setUtils(address utilsAdr)
startAutomation
nonpayablefunction startAutomation()
stopAutomation
nonpayablefunction stopAutomation()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AutomationStarted
event AutomationStarted(uint80 price)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SawBetterPrice
event SawBetterPrice(uint80 price)
TradeExecuted
event TradeExecuted(address targetToken, uint80 price)
errors
No errors.
creation bytecode
0x60e060405273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4860805273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260a05273f94e7d0710709388bce3161c32b4eea56d3f91cc60c052600180546001600160a01b03191673aaa000e1b72bf8dfa74c958e19e925c0bfae9ded1790555f600255348015610081575f80fd5b506040516136833803806136838339810160408190526100a091610153565b6100a9336100e9565b600480546001600160a01b03199081166001600160a01b039485161790915560038054821694841694909417909355600580549093169116179055610193565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461014e575f80fd5b919050565b5f805f60608486031215610165575f80fd5b61016e84610138565b925061017c60208501610138565b915061018a60408501610138565b90509250925092565b60805160a05160c0516134836102005f395f50505f8181610c0801528181610c4501528181610d5301528181610dfa015281816123620152818161246101526124a901525f8181610c81015281816123e90152818161243101528181612544015261257401526134835ff3fe608060405234801561000f575f80fd5b50600436106101d0575f3560e01c806369953501116100fe578063aa9a09121161009e578063c1f36c681161006e578063c1f36c6814610508578063ce31a06b14610510578063f2fde38b14610518578063fe0d94c11461052b575f80fd5b8063aa9a091214610443578063b1abe10314610456578063b3a579431461045e578063c19d93fb14610471575f80fd5b80637a3dfdad116100d95780637a3dfdad146103ed5780637e223c52146104185780638287ccb4146104205780638da5cb5b14610433575f80fd5b80636995350114610340578063715018a61461035357806379502c551461035b575f80fd5b80631fba9eda116101745780635a29638d116101445780635a29638d146102dc5780635d52f9fc146102ef5780635dd8d67814610302578063677342ce14610315575f80fd5b80631fba9eda1461029a5780632413d155146102ad5780633322b23d146102c0578063382e4781146102c9575f80fd5b8063111ffe5e116101af578063111ffe5e14610231578063144fa6d7146102495780631cb785411461025c5780631f3e51fd14610287575f80fd5b8062ae3bf8146101d4578063048e92f6146101e9578063082e2ffe14610211575b5f80fd5b6101e76101e2366004612be1565b61053e565b005b6101fc6101f7366004612bfc565b61063c565b60405190151581526020015b60405180910390f35b61022461021f366004612be1565b610778565b6040516102089190612c27565b61023b6213d62081565b604051908152602001610208565b6101e7610257366004612be1565b610a1a565b60015461026f906001600160a01b031681565b6040516001600160a01b039091168152602001610208565b6101e7610295366004612be1565b610a44565b61026f6102a8366004612c73565b610a6e565b60055461026f906001600160a01b031681565b61023b60025481565b6101e76102d7366004612bfc565b610ab6565b60035461026f906001600160a01b031681565b60045461026f906001600160a01b031681565b6101e7610310366004612ca4565b610b9d565b610328610323366004612bfc565b6111b8565b6040516001600160801b039091168152602001610208565b6101e761034e366004612be1565b61132c565b6101e7611356565b600854600954600a54600b546103a3936001600160a01b039081169390811692600160a01b9091046001600160501b039081169290821691600160501b900462ffffff169086565b604080516001600160a01b0397881681529690951660208701526001600160501b03938416948601949094529116606084015262ffffff16608083015260a082015260c001610208565b6104006103fb366004612d34565b611369565b6040516001600160501b039091168152602001610208565b6101e76113fd565b6101e761042e366004612bfc565b6115ce565b5f546001600160a01b031661026f565b61023b610451366004612d69565b611650565b6101e76116fb565b61026f61046c366004612d92565b6117ff565b6006546007546104be916001600160a01b038116916001600160501b03600160a01b90920482169181169060ff600160501b8204811691600160581b8104821691600160601b9091041686565b604080516001600160a01b0390971687526001600160501b0395861660208801529490931693850193909352151560608401529015156080830152151560a082015260c001610208565b6101e761183f565b6101e76119bd565b6101e7610526366004612be1565b6119fc565b6101e7610539366004612bfc565b611a72565b610546612112565b806001600160a01b031663a9059cbb6105665f546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a0823190602401602060405180830381865afa1580156105a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105cc9190612dda565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610614573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106389190612df1565b5050565b5f6002545f0361064e57506001919050565b60015460408051632ed5090160e21b815290515f926001600160a01b03169163bb5424049160048083019260209291908290030181865afa158015610695573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106b99190612e10565b905042816001600160a01b031663976217cd6002546040518263ffffffff1660e01b81526004016106ec91815260200190565b61012060405180830381865afa158015610708573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072c9190612eb5565b60a00151101561073f5750600192915050565b5f61074861216b565b6001600160501b031690505f61075d82610778565b600681111561076e5761076e612c13565b1415949350505050565b6007545f90600160601b900460ff16156107f1576009546103e86001600160501b03600160a01b909204821602166001600160a01b036103e38402161180156107df5750600a546103e86001600160501b0391821602166001600160a01b036103ed840216105b156107ec57506006919050565b610a13565b600754600160581b900460ff161561085257600954600160a01b90046001600160501b03166001600160a01b038316101561082e57506003919050565b600a546001600160501b03166001600160a01b03831611156107ec57506004919050565b600754600160501b900460ff16801561088b57506007546001600160501b03166103e8026001600160a01b039081166103e38402909116115b1561089857506005919050565b600754600160501b900460ff161580156108d257506007546001600160501b03166103e8026001600160a01b039081166103ed8402909116105b156108df57506005919050565b600754600160501b900460ff1661098757600a545f90621e84809061091390600160501b900462ffffff16620f4240612f56565b60095460075462ffffff929092169161093f916001600160501b03600160a01b90910481169116612f71565b6001600160501b03166109529190612f90565b61095c9190612fe3565b9050806001600160a01b0316836001600160a01b031611156109815750600292915050565b50610a13565b600a545f90621e8480906109aa90600160501b900462ffffff16620f4240613010565b600a5460075462ffffff92909216916109cf916001600160501b039081169116612f71565b6001600160501b03166109e29190612f90565b6109ec9190612fe3565b9050806001600160a01b0316836001600160a01b03161015610a115750600192915050565b505b505f919050565b610a22612112565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b610a4c612112565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f80610a986001600160501b038416600160c01b610a8d87600c61302b565b61045190600a61312e565b9050610aa3816111b8565b6001600160801b03169150505b92915050565b6005546001600160a01b03163314610acc575f80fd5b6004546001600160a01b03163181118015610af157506006546001600160a01b031615155b15610b9a576004546006546001600160a01b0391821691638172047991165f5f19610b1d85318761313c565b6040516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152604483015260648201526084015b60408051808303815f875af1158015610b73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b97919061314f565b50505b50565b610ba5612112565b600b5415610c065760048054600b54604051634a2539c360e01b8152928301526001600160a01b031690634a2539c3906024015f604051808303815f87803b158015610bef575f80fd5b505af1158015610c01573d5f803e3d5ffd5b505050505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614158015610cb757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b0316148015610cb557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316145b155b15610e7f575f60045f9054906101000a90046001600160a01b03166001600160a01b0316639ba692496040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d0d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d319190613171565b600354604051633d7e854360e11b81526001600160a01b038b811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526001600160801b0384166044830152929350911690637afd0a86906064016020604051808303815f875af1158015610db3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd79190612e10565b50600354604051633d7e854360e11b81526001600160a01b0389811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301526001600160801b038416604483015290911690637afd0a86906064016020604051808303815f875af1158015610e58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7c9190612e10565b50505b600354604051633d7e854360e11b81526001600160a01b03898116600483015288811660248301525f60448301819052921690637afd0a86906064016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb9190612e10565b6004549091506001600160a01b039081163190881615801590610f235750655af3107a400081115b15610fac5760048054604051638172047960e01b81525f928101929092526001600160a01b038a81166024840152604483018490525f196064840152169063817204799060840160408051808303815f875af1158015610f85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa9919061314f565b50505b600480546040516370a0823160e01b81526001600160a01b03918216928101929092525f91908a16906370a0823190602401602060405180830381865afa158015610ff9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101d9190612dda565b6004805460405163350793e160e11b81526001600160a01b03878116938201939093528d831660248201528c831660448201526001600160501b03808b1660648301528916608482015260a481018490529293505f92911690636a0f27c29060c40160408051808303815f875af115801561109a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110be9190613197565b506040805160c0810182526001600160a01b039d8e168082529c909d1660208e018190526001600160501b039b8c16918e0182905299909a1660608d0181905262ffffff9690961660808d0181905260a0909c01819052600880546001600160a01b0319908116909c179055600980547fffff00000000000000000000000000000000000000000000000000000000000016909917600160a01b909a02999099179097555050600a80546cffffffffffffffffffffffffff1916909217600160501b909802979097179055505050600b5560078054600160581b6bff00000000000000000000001990911617905560068054909116905550565b5f815f036111c757505f919050565b816001600160801b82106111e05760809190911c9060401b5b6801000000000000000082106111fb5760409190911c9060201b5b64010000000082106112125760209190911c9060101b5b6201000082106112275760109190911c9060081b5b610100821061123b5760089190911c9060041b5b6010821061124e5760049190911c9060021b5b6008821061125a5760011b5b600181858161126b5761126b612fcf565b048201901c9050600181858161128357611283612fcf565b048201901c9050600181858161129b5761129b612fcf565b048201901c905060018185816112b3576112b3612fcf565b048201901c905060018185816112cb576112cb612fcf565b048201901c905060018185816112e3576112e3612fcf565b048201901c905060018185816112fb576112fb612fcf565b0491909101901c5f61130d82866131b8565b905080821061131c578061131e565b815b95945050505050565b919050565b611334612112565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b61135e612112565b6113675f61218e565b565b5f80835f0b126113bc576113b561138d6001600160a01b038416630e8d4a516131cb565b61139885600a61312e565b6113ab906001600160a01b0386166131cb565b600160b41b611650565b9050610ab0565b6113b56113d66001600160a01b038416630e8d4a516131cb565b6001600160a01b03841660b46113eb876131e2565b6113f690600a61312e565b901b611650565b611405612112565b60015460408051632ed5090160e21b815290515f926001600160a01b03169163bb5424049160048083019260209291908290030181865afa15801561144c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114709190612e10565b90506002545f14806114f4575060025460405163976217cd60e01b815260048101919091526001600160a01b0382169063976217cd9060240161012060405180830381865afa1580156114c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e99190612eb5565b610100015160ff1615155b6115375760405162461bcd60e51b815260206004820152600f60248201526e416c72656164792072756e6e696e6760881b60448201526064015b60405180910390fd5b5f61154061216b565b6007805469ffffffffffffffffffff19166001600160501b0383169081179091556006805469ffffffffffffffffffff60a01b1916600160a01b909202919091179055905061158e826121dd565b6040516001600160501b03821681527ff12c538904fa9fe594295f2c4046a3fb31971aa9b8559708d17db8d1103cc86a9060200160405180910390a15050565b6005546001600160a01b031633146115e4575f80fd5b624c4b40811015801561160157506006546001600160a01b031615155b15610b9a5760048054600654604051638172047960e01b81525f938101939093526001600160a01b039081166024840152604483018490525f1960648401521690638172047990608401610b58565b5f80805f19858709858702925082811083820303915050805f03611684575f8411611679575f80fd5b5082900490506116f4565b80841161168f575f80fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b611703612112565b5f6002556001546001600160a01b031663a9059cbb6117295f546001600160a01b031690565b6001546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561176f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117939190612dda565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156117db573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9a9190612df1565b5f826001600160a01b0316846001600160a01b031610156118215750806116f4565b6118386001600160a01b038316600160c01b6131b8565b90506116f4565b6005546001600160a01b03163314611855575f80fd5b600b54156118b65760048054600b54604051630ca6a90560e21b8152928301526001600160a01b03169063329aa414906024015f604051808303815f87803b15801561189f575f80fd5b505af11580156118b1573d5f803e3d5ffd5b505050505b6006546001600160a01b03161561136757600480546006546040516370a0823160e01b81526001600160a01b03928316938101849052638172047992909116905f9082906370a0823190602401602060405180830381865afa15801561191e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119429190612dda565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201525f19606482015260840160408051808303815f875af1158015611999573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610638919061314f565b6119c5612112565b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610b9a573d5f803e3d5ffd5b611a04612112565b6001600160a01b038116611a695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161152e565b610b9a8161218e565b6002545f03611a7e5750565b5f611a8761216b565b90505f611a9c826001600160501b0316610778565b90506005816006811115611ab257611ab2612c13565b03611b10576007805469ffffffffffffffffffff19166001600160501b0384169081179091556040519081527f9aa54d3e86f75cc1d8ac502d5a25d5c0563481537f37787aebdc54a27d1568979060200160405180910390a16120a0565b6004816006811115611b2457611b24612c13565b1480611b4157506003816006811115611b3f57611b3f612c13565b145b15611ef65760048054600b54604051630ca6a90560e21b8152928301526001600160a01b03169063329aa414906024015f604051808303815f87803b158015611b88575f80fd5b505af1158015611b9a573d5f803e3d5ffd5b505f925060049150611ba99050565b826006811115611bbb57611bbb612c13565b03611ce957600954600480546040516370a0823160e01b81526001600160a01b0391821692810192909252909116906370a0823190602401602060405180830381865afa158015611c0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c329190612dda565b60048054600954600854604051638172047960e01b81526001600160a01b039283169481019490945281166024840152604483018490525f196064840152929350919091169063817204799060840160408051808303815f875af1158015611c9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cc0919061314f565b5050600854600680546001600160a01b0319166001600160a01b03909216919091179055611e0e565b600854600480546040516370a0823160e01b81526001600160a01b0391821692810192909252909116906370a0823190602401602060405180830381865afa158015611d37573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5b9190612dda565b60048054600854600954604051638172047960e01b81526001600160a01b039283169481019490945281166024840152604483018490525f196064840152929350919091169063817204799060840160408051808303815f875af1158015611dc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de9919061314f565b5050600954600680546001600160a01b0319166001600160a01b039092169190911790555b506004546001600160a01b031631655af3107a400081118015611e3b57506006546001600160a01b031615155b15611ef0576004546006546001600160a01b03918216916381720479915f9116600a611e688660096131cb565b611e7291906131b8565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201525f19606482015260840160408051808303815f875af1158015611ec9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eed919061314f565b50505b506120a0565b6006816006811115611f0a57611f0a612c13565b03611f2a57600780546cff000000000000000000000000191690556120a0565b5f816006811115611f3d57611f3d612c13565b146120a0576004546001600160a01b031631655af3107a400081111561201257600454600980546001600160a01b03928316926381720479925f9290911690600a90611f8a9087906131cb565b611f9491906131b8565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201525f19606482015260840160408051808303815f875af1158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f919061314f565b50505b60048054600b5460405162a2d35760e51b8152928301526001600160a01b03169063145a6ae0906024015f604051808303815f87803b158015612053575f80fd5b505af1158015612065573d5f803e3d5ffd5b5050600780546cffff000000000000000000000019166c010100000000000000000000001790555050600680546001600160a01b0319169055505b60015460408051632ed5090160e21b81529051610b97926001600160a01b03169163bb5424049160048083019260209291908290030181865afa1580156120e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061210d9190612e10565b6121dd565b5f546001600160a01b031633146113675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161152e565b6008546009545f91612189916001600160a01b039182169116612351565b905090565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516347e25f2160e01b81526213d62060048201525f906001600160a01b038316906347e25f2190602401602060405180830381865afa158015612224573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122489190612dda565b60015460405163095ea7b360e01b81526001600160a01b0385811660048301526024820184905292935091169063095ea7b3906044016020604051808303815f875af115801561229a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122be9190612df1565b5060405163bc0d984d60e01b8152306004820181905260248201525f60448201819052606482018390526213d620608483015260a48201526001600160a01b0383169063bc0d984d9060c4016020604051808303815f875af1158015612326573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061234a9190612dda565b6002555050565b5f6001600160a01b038216612384577f000000000000000000000000000000000000000000000000000000000000000091505b5f836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e591906131fe565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361245f5761245761242e600683613217565b857f000000000000000000000000000000000000000000000000000000000000000060786125d1565b915050610ab0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036124cf576124576124a6601283613217565b857f000000000000000000000000000000000000000000000000000000000000000060786125d1565b5f6006820390505f6006856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612515573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061253991906131fe565b0390505f61256a83887f000000000000000000000000000000000000000000000000000000000000000060786125d1565b90505f61259a83887f000000000000000000000000000000000000000000000000000000000000000060786125d1565b9050806001600160501b0316826001600160501b031664e8d4a5100002816125c4576125c4612fcf565b0498975050505050505050565b60035460405163bc501ee760e01b81526001600160a01b03858116600483015284811660248301525f92839291169063bc501ee790604401602060405180830381865afa158015612624573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126489190612e10565b6040805160028082526060820183529293505f92909160208301908036833701905050905083815f8151811061268057612680613237565b602002602001019063ffffffff16908163ffffffff16815250505f816001815181106126ae576126ae613237565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81525f906001600160a01b0384169063883bdbfd906126f190859060040161324b565b5f60405180830381865afa15801561270b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127329190810190613329565b5090505f8563ffffffff1660060b825f8151811061275257612752613237565b60200260200101518360018151811061276d5761276d613237565b60200260200101510360060b8161278657612786612fcf565b0590505f612798898961046c856127b2565b90506127a48a82611369565b9a9950505050505050505050565b5f805f8360020b126127c7578260020b6127d4565b8260020b6127d4906133f5565b90506127e3620d89e71961340f565b62ffffff1681111561281b5760405162461bcd60e51b81526020600482015260016024820152601560fa1b604482015260640161152e565b5f816001165f0361283057600160801b612842565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561288157608061287c826ffff97272373d413259a46990580e213a6131cb565b901c90505b60048216156128ab5760806128a6826ffff2e50f5f656932ef12357cf3c7fdcc6131cb565b901c90505b60088216156128d55760806128d0826fffe5caca7e10e4e61c3624eaa0941cd06131cb565b901c90505b60108216156128ff5760806128fa826fffcb9843d60f6159c9db58835c9266446131cb565b901c90505b6020821615612929576080612924826fff973b41fa98c081472e6896dfb254c06131cb565b901c90505b604082161561295357608061294e826fff2ea16466c96a3843ec78b326b528616131cb565b901c90505b608082161561297d576080612978826ffe5dee046a99a2a811c461f1969c30536131cb565b901c90505b6101008216156129a85760806129a3826ffcbe86c7900a88aedcffc83b479aa3a46131cb565b901c90505b6102008216156129d35760806129ce826ff987a7253ac413176f2b074cf7815e546131cb565b901c90505b6104008216156129fe5760806129f9826ff3392b0822b70005940c7a398e4b70f36131cb565b901c90505b610800821615612a29576080612a24826fe7159475a2c29b7443b29c7fa6e889d96131cb565b901c90505b611000821615612a54576080612a4f826fd097f3bdfd2022b8845ad8f792aa58256131cb565b901c90505b612000821615612a7f576080612a7a826fa9f746462d870fdf8a65dc1f90e061e56131cb565b901c90505b614000821615612aaa576080612aa5826f70d869a156d2a1b890bb3df62baf32f76131cb565b901c90505b618000821615612ad5576080612ad0826f31be135f97d08fd981231505542fcfa66131cb565b901c90505b62010000821615612b01576080612afc826f09aa508b5b7a84e1c677de54f3e99bc96131cb565b901c90505b62020000821615612b2c576080612b27826e5d6af8dedb81196699c329225ee6046131cb565b901c90505b62040000821615612b56576080612b51826d2216e584f5fa1ea926041bedfe986131cb565b901c90505b62080000821615612b7e576080612b79826b048a170391f7dc42444e8fa26131cb565b901c90505b5f8460020b1315612b9757612b94815f196131b8565b90505b612ba664010000000082613427565b15612bb2576001612bb4565b5f5b612bc59060ff16602083901c61343a565b949350505050565b6001600160a01b0381168114610b9a575f80fd5b5f60208284031215612bf1575f80fd5b81356116f481612bcd565b5f60208284031215612c0c575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b6020810160078310612c4757634e487b7160e01b5f52602160045260245ffd5b91905290565b80355f81900b8114611327575f80fd5b80356001600160501b0381168114611327575f80fd5b5f8060408385031215612c84575f80fd5b612c8d83612c4d565b9150612c9b60208401612c5d565b90509250929050565b5f805f805f805f60e0888a031215612cba575f80fd5b8735612cc581612bcd565b96506020880135612cd581612bcd565b9550612ce360408901612c5d565b9450612cf160608901612c5d565b9350612cff60808901612c5d565b9250612d0d60a08901612c5d565b915060c088013562ffffff81168114612d24575f80fd5b8091505092959891949750929550565b5f8060408385031215612d45575f80fd5b612d4e83612c4d565b91506020830135612d5e81612bcd565b809150509250929050565b5f805f60608486031215612d7b575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215612da4575f80fd5b8335612daf81612bcd565b92506020840135612dbf81612bcd565b91506040840135612dcf81612bcd565b809150509250925092565b5f60208284031215612dea575f80fd5b5051919050565b5f60208284031215612e01575f80fd5b815180151581146116f4575f80fd5b5f60208284031215612e20575f80fd5b81516116f481612bcd565b634e487b7160e01b5f52604160045260245ffd5b604051610120810167ffffffffffffffff81118282101715612e6357612e63612e2b565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715612e9257612e92612e2b565b604052919050565b805161132781612bcd565b805160ff81168114611327575f80fd5b5f610120828403128015612ec7575f80fd5b50612ed0612e3f565b612ed983612e9a565b8152612ee760208401612e9a565b602082015260408381015190820152606080840151908201526080808401519082015260a0808401519082015260c0808401519082015260e08084015190820152612f356101008401612ea5565b6101008201529392505050565b634e487b7160e01b5f52601160045260245ffd5b62ffffff8181168382160190811115610ab057610ab0612f42565b6001600160501b038181168382160190811115610ab057610ab0612f42565b5f6001600160a01b0382166001600160a01b0384166001600160a01b038183021692508183048114821517612fc757612fc7612f42565b505092915050565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160a01b03831680612ffb57612ffb612fcf565b806001600160a01b0384160491505092915050565b62ffffff8281168282160390811115610ab057610ab0612f42565b5f81810b9083900b01607f8113607f1982121715610ab057610ab0612f42565b6001815b60018411156130865780850481111561306a5761306a612f42565b600184161561307857908102905b60019390931c92800261304f565b935093915050565b5f8261309c57506001610ab0565b816130a857505f610ab0565b81600181146130be57600281146130c8576130e4565b6001915050610ab0565b60ff8411156130d9576130d9612f42565b50506001821b610ab0565b5060208310610133831016604e8410600b8410161715613107575081810a610ab0565b6131135f19848461304b565b805f190482111561312657613126612f42565b029392505050565b5f6116f460ff84168361308e565b81810381811115610ab057610ab0612f42565b5f8060408385031215613160575f80fd5b505080516020909101519092909150565b5f60208284031215613181575f80fd5b81516001600160801b03811681146116f4575f80fd5b5f80604083850312156131a8575f80fd5b82519150612c9b60208401612ea5565b5f826131c6576131c6612fcf565b500490565b8082028115828204841417610ab057610ab0612f42565b5f81810b608081016131f6576131f6612f42565b5f0392915050565b5f6020828403121561320e575f80fd5b6116f482612ea5565b5f82810b9082900b03607f198112607f82131715610ab057610ab0612f42565b634e487b7160e01b5f52603260045260245ffd5b602080825282518282018190525f918401906040840190835b8181101561328857835163ffffffff16835260209384019390920191600101613264565b509095945050505050565b5f67ffffffffffffffff8211156132ac576132ac612e2b565b5060051b60200190565b5f82601f8301126132c5575f80fd5b81516132d86132d382613293565b612e69565b8082825260208201915060208360051b8601019250858311156132f9575f80fd5b602085015b8381101561331f57805161331181612bcd565b8352602092830192016132fe565b5095945050505050565b5f806040838503121561333a575f80fd5b825167ffffffffffffffff811115613350575f80fd5b8301601f81018513613360575f80fd5b805161336e6132d382613293565b8082825260208201915060208360051b85010192508783111561338f575f80fd5b6020840193505b828410156133bf5783518060060b81146133ae575f80fd5b825260209384019390910190613396565b80955050505050602083015167ffffffffffffffff8111156133df575f80fd5b6133eb858286016132b6565b9150509250929050565b5f600160ff1b820161340957613409612f42565b505f0390565b5f8160020b627fffff1981036131f6576131f6612f42565b5f8261343557613435612fcf565b500690565b80820180821115610ab057610ab0612f4256fea2646970667358221220f324f454400c0a5f87cfbf25a6083df853678d998d75f7956a597f7417a9707564736f6c634300081a0033000000000000000000000000c97b6f6dc641c0f59c724657b91569af00c28b7d0000000000000000000000007d02c1c43a188c6cebafd2a59919f9b936289673000000000000000000000000877df422bf6f792430fe82126e3d794bc2ae4b5a