6 txs
50 calls
constructor
constructor(address _pm, address _posManagerAdapter, address _hook)
functions
incentiveData
viewfunction incentiveData(bytes32 pid, address token) view returns (uint256 rewardRate, uint256 periodFinish, uint256 remaining)
incentiveDataBatch
viewfunction incentiveDataBatch(bytes32 pid, address[] tokens) view returns (uint256[] rewardRates, uint256[] finishes, uint256[] remainings)
incentives
viewfunction incentives(bytes32, address) view returns (uint128 rewardRate, uint64 periodFinish, uint64 lastUpdate, uint128 remaining)
isHook
viewfunction isHook(address) view returns (bool)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
pendingRewardsByTokenId
viewfunction pendingRewardsByTokenId(uint256 tokenId, address token) view returns (uint256 amount)
pendingRewardsByTokenIdBatch
viewfunction pendingRewardsByTokenIdBatch(uint256 tokenId, address[] tokens) view returns (uint256[] amounts)
pendingRewardsOwner
viewfunction pendingRewardsOwner(bytes32 pid, address owner) view returns (tuple[] list)
pendingRewardsOwnerBatch
viewfunction pendingRewardsOwnerBatch(bytes32[] pids, address owner) view returns (tuple[][] lists)
POOL_MANAGER
viewfunction POOL_MANAGER() view returns (address)
poolRewards
viewfunction poolRewards(bytes32) view returns (uint128 liquidity, int24 tick, uint64 lastUpdated)
poolTokensOf
viewfunction poolTokensOf(bytes32 pid) view returns (address[] list)
positionManagerAdapter
viewfunction positionManagerAdapter() view returns (address)
positionRewards
viewfunction positionRewards(bytes32, address) view returns (uint256 rewardsPerLiquidityLastX128, uint256 rewardsAccrued)
queuedTokensOf
viewfunction queuedTokensOf(bytes32 pid) view returns (address[] tokens, uint256[] amounts)
whitelist
viewfunction whitelist(address) view returns (bool)
acceptOwnership
nonpayablefunction acceptOwnership()
claim
nonpayablefunction claim(uint256 tokenId, address token, address to) returns (uint256 amount)
claimAllForOwner
nonpayablefunction claimAllForOwner(bytes32[] pids, address owner)
createIncentive
nonpayablefunction createIncentive(tuple key, address rewardToken, uint256 amount)
initPool
nonpayablefunction initPool(tuple key, int24 initialTick)
notifyBurnWithContext
nonpayablefunction notifyBurnWithContext(uint256, bytes32 positionKey, bytes32 poolIdRaw, address ownerAddr, int24 currentTick, int24 tickLower, int24 tickUpper, uint128 liquidity)
notifyModifyLiquidityWithContext
nonpayablefunction notifyModifyLiquidityWithContext(uint256, bytes32 positionKey, bytes32 poolIdRaw, int24 currentTick, int24 tickLower, int24 tickUpper, int256 liquidityChange, uint128 liquidityAfter)
notifySubscribeWithContext
nonpayablefunction notifySubscribeWithContext(uint256 tokenId, bytes32 positionKey, bytes32 poolIdRaw, int24 currentTick, int24 tickLower, int24 tickUpper, uint128 liquidity, address owner)
notifyUnsubscribeWithContext
nonpayablefunction notifyUnsubscribeWithContext(uint256 tokenId, bytes32 positionKey, bytes32 poolIdRaw, int24 tickLower, int24 tickUpper, uint128 liquidity)
pokePool
nonpayablefunction pokePool(tuple key)
renounceOwnership
nonpayablefunction renounceOwnership()
setHook
nonpayablefunction setHook(address hook, bool enabled)
setPositionManagerAdapter
nonpayablefunction setPositionManagerAdapter(address _adapter)
setWhitelist
nonpayablefunction setWhitelist(address token, bool ok)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Claimed
event Claimed(address indexed user, address indexed token, uint256 amount)
HookAuthorised
event HookAuthorised(address hook, bool enabled)
IncentiveActivated
event IncentiveActivated(bytes32 indexed pid, address indexed token, uint256 amount, uint256 rate)
IncentiveDeactivated
event IncentiveDeactivated(bytes32 indexed pid, address indexed token)
IncentiveQueued
event IncentiveQueued(bytes32 indexed pid, address indexed token, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
PositionManagerAdapterUpdated
event PositionManagerAdapterUpdated(address newAdapter)
WhitelistSet
event WhitelistSet(address indexed token, bool allowed)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AlreadySet
error AlreadySet()
FailedInnerCall
error FailedInnerCall()
InsufficientIncentive
error InsufficientIncentive()
NotAllowed
error NotAllowed()
NotAuthorized
error NotAuthorized()
NotHook
error NotHook()
NotSubscriber
error NotSubscriber()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
PoolNotInitialized
error PoolNotInitialized()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAddress
error ZeroAddress()
ZeroAmount
error ZeroAmount()
creation bytecode
0x60a060405234801561000f575f80fd5b5060405161544938038061544983398101604081905261002e9161015b565b338061005357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61005c816100dc565b506001600160a01b03838116608052600280546001600160a01b03191684831617905581165f81815260036020908152604091829020805460ff191660019081179091558251938452908301527f969bb7542263e82515f30263de146111e882f6d42fc244c9624a924b2d197790910160405180910390a15050506101a5565b600180546001600160a01b03191690556100f5816100f8565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100f5575f80fd5b5f805f6060848603121561016d575f80fd5b835161017881610147565b602085015190935061018981610147565b604085015190925061019a81610147565b809150509250925092565b6080516152856101c45f395f81816102e2015261190301526152855ff3fe608060405234801561000f575f80fd5b50600436106101e7575f3560e01c806385e84a1011610109578063aff854681161009e578063e30c39781161006e578063e30c397814610624578063e32cc1c714610635578063eb53404d14610648578063f2fde38b14610668575f80fd5b8063aff85468146104fc578063c0e8d3841461050f578063c981328e1461058a578063d267652914610602575f80fd5b806396657955116100d957806396657955146103f05780639b19251a14610410578063a88848d414610442578063adcdf98914610462575f80fd5b806385e84a1014610398578063885e463e146103ab5780638da5cb5b146103be5780639048cfea146103ce575f80fd5b806362308e851161017f578063715018a61161014f578063715018a61461035557806373af1f4b1461035d57806379ba50971461037d578063833e8db114610385575f80fd5b806362308e85146102dd57806367b2b5351461031c57806369a5d8ca1461032f5780636cef460b14610342575f80fd5b80633130c24a116101ba5780633130c24a146102915780633756bca6146102a457806353d6fd59146102b75780635b92a5f0146102ca575f80fd5b80632048e384146101eb57806321c3d46a146102005780632ab722151461022a5780632cd1b11314610270575b5f80fd5b6101fe6101f93660046148a4565b61067b565b005b61021361020e3660046148be565b6106ce565b604051610221929190614948565b60405180910390f35b61025b610238366004614989565b600660209081525f92835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610221565b61028361027e3660046149b7565b61081b565b604051908152602001610221565b6101fe61029f3660046149f6565b610a10565b6101fe6102b2366004614a7b565b610c67565b6101fe6102c5366004614ad0565b610df6565b6101fe6102d8366004614afc565b610e5c565b6103047f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610221565b6101fe61032a366004614b3b565b610edf565b61028361033d366004614989565b610f80565b600254610304906001600160a01b031681565b6101fe610f92565b61037061036b3660046148be565b610fa5565b6040516102219190614b9a565b6101fe611075565b6101fe610393366004614ad0565b6110bb565b6101fe6103a6366004614c7e565b61114c565b6101fe6103b9366004614ca9565b61125f565b5f546001600160a01b0316610304565b6103e16103dc366004614d25565b611328565b60405161022193929190614d6d565b6104036103fe366004614989565b6114f9565b6040516102219190614dea565b61043261041e366004614afc565b600c6020525f908152604090205460ff1681565b6040519015158152602001610221565b610455610450366004614a7b565b611505565b6040516102219190614dfc565b6104bd610470366004614989565b600460209081525f9283526040808420909152908252902080546001909101546001600160801b038083169267ffffffffffffffff600160801b8204811693600160c01b90920416911684565b60405161022194939291906001600160801b03948516815267ffffffffffffffff93841660208201529190921660408201529116606082015260800190565b6101fe61050a366004614e5f565b6115b1565b61055861051d3660046148be565b60056020525f90815260409020600101546001600160801b03811690600160801b810460020b90600160981b900467ffffffffffffffff1683565b604080516001600160801b03909416845260029290920b602084015267ffffffffffffffff1690820152606001610221565b6105e7610598366004614989565b5f9182526004602090815260408084206001600160a01b03939093168452919052902080546001909101546001600160801b0380831693600160801b90930467ffffffffffffffff1692911690565b60408051938452602084019290925290820152606001610221565b610432610610366004614afc565b60036020525f908152604090205460ff1681565b6001546001600160a01b0316610304565b6101fe610643366004614ed5565b61168d565b61065b610656366004614d25565b6117e6565b6040516102219190614f5c565b6101fe610676366004614afc565b61188d565b335f9081526003602052604090205460ff166106aa576040516318e59f8760e31b815260040160405180910390fd5b6106cb6106c66106bf36849003840184614f6e565b60a0902090565b6118fd565b50565b5f818152601060205260409020805460609182918067ffffffffffffffff8111156106fb576106fb614bac565b604051908082528060200260200182016040528015610724578160200160208202803683370190505b5093508067ffffffffffffffff81111561074057610740614bac565b604051908082528060200260200182016040528015610769578160200160208202803683370190505b5092505f5b81811015610813575f83828154811061078957610789614f88565b905f5260205f20015f9054906101000a90046001600160a01b03169050808683815181106107b9576107b9614f88565b6001600160a01b039283166020918202929092018101919091525f898152601182526040808220938516825292909152205485518690849081106107ff576107ff614f88565b60209081029190910101525060010161076e565b505050915091565b6002546040516331a9108f60e11b8152600481018590525f9182916001600160a01b0390911690636352211e90602401602060405180830381865afa158015610866573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061088a9190614f9c565b9050336001600160a01b038216146108ce576040517fea8e4eb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254604051637ba03aad60e01b8152600481018790525f916001600160a01b031690637ba03aad9060240160c060405180830381865afa158015610915573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109399190614fb7565b5090505f6109488260a0902090565b90505f61095e88835f9182526020526040902090565b9050610969826118fd565b610974828289611948565b5f818152600960209081526040808320805486855260059093529083209092916109af91908b90600281810b9163010000009004900b611a15565b5f8481526006602090815260408083206001600160a01b038e1684528252808320878452600890925290912054919250906109f59082906001600160801b031684611b51565b50610a01848b8b611b84565b9b9a5050505050505050505050565b6001600160a01b0382165f908152600c602052604090205460ff1680610a535750610a3e6020840184614afc565b6001600160a01b0316826001600160a01b0316145b80610a7e5750610a696040840160208501614afc565b6001600160a01b0316826001600160a01b0316145b610a9b57604051631eb49d6d60e11b815260040160405180910390fd5b805f03610ad4576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ae76106bf36869003860186614f6e565b5f81815260056020526040812060010154919250600160981b90910467ffffffffffffffff169003610b45576040517f486aa30700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b5a6001600160a01b038416333085611c1b565b5f818152600b60205260408120905b815460ff9081169082161015610c1957846001600160a01b0316826001018260ff1660038110610b9b57610b9b614f88565b01546001600160a01b031603610c11575f610bb7848787611c97565b604080518781526001600160801b03831660208201529192506001600160a01b0388169186917fa7d24926a85187e46071dbd8587ace433e1417bfc29b75e99027cba6d0ba2d0d910160405180910390a350505050505050565b600101610b69565b508054600360ff9091161015610c5557805460ff16610c3981600161505c565b825460ff191660ff919091161782555f610bb784878785611e0a565b610c60828585611f04565b5050505050565b815f5b81811015610c60575f858583818110610c8557610c85614f88565b602090810292909201355f8181526007845260408082206001600160a01b038a168352909452928320805491945092909150819003610cc657505050610dee565b5f838152600b602052604081205460ff169003610ce557505050610dee565b610cee836118fd565b5f5b81811015610de9575f838281548110610d0b57610d0b614f88565b5f918252602080832090910154808352600a909152604082205490925090819003610d37575050610de1565b6002546040516331a9108f60e11b8152600481018390526001600160a01b0390911690636352211e90602401602060405180830381865afa925050508015610d9c575060408051601f3d908101601f19168201909252610d9991810190614f9c565b60015b610da7575050610de1565b896001600160a01b0316816001600160a01b031614610dc857505050610de1565b50610dd38683612031565b610dde86838b612152565b50505b600101610cf0565b505050505b600101610c6a565b610dfe61229f565b6001600160a01b0382165f818152600c6020908152604091829020805460ff191685151590811790915591519182527f0aa5ec5ffdc7f6f9c4d0dded489d7450297155cb2f71cb771e02427f7dff4f51910160405180910390a25050565b610e6461229f565b6001600160a01b038116610e8b5760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f582ec7d55fe2da1a8f783baf37c5a38008a41c8cf5eaf7b8a448ee7ed9770cbf9060200160405180910390a150565b6002546001600160a01b03163314610f0a5760405163251cb70160e11b815260040160405180910390fd5b83610f1581876122cb565b6001600160801b03821615610f3d575f818152600560205260409020610f3d9085858561239e565b505f948552600e6020908152604080872080546001600160801b039094166001600160801b03199485161790556008909152909420805490941690935550505050565b5f610f8b8383612464565b9392505050565b610f9a61229f565b610fa35f6126a0565b565b5f818152600b6020526040902080546060919060ff168067ffffffffffffffff811115610fd457610fd4614bac565b604051908082528060200260200182016040528015610ffd578160200160208202803683370190505b5092505f5b8160ff168160ff16101561106d57826001018160ff166003811061102857611028614f88565b015484516001600160a01b0390911690859060ff841690811061104d5761104d614f88565b6001600160a01b0390921660209283029190910190910152600101611002565b505050919050565b60015433906001600160a01b031681146110b25760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b6106cb816126a0565b6110c361229f565b6001600160a01b0382166110ea5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382165f81815260036020908152604091829020805460ff19168515159081179091558251938452908301527f969bb7542263e82515f30263de146111e882f6d42fc244c9624a924b2d197790910160405180910390a15050565b335f9081526003602052604090205460ff1661117b576040516318e59f8760e31b815260040160405180910390fd5b60a082205f8181526005602052604090206001810154600160981b900467ffffffffffffffff16156111d9576040517fa741a04500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810180547fffffffffff0000000000000000000000ffffffffffffffffffffffffffffffff16600160801b62ffffff86160267ffffffffffffffff60981b191617600160981b4267ffffffffffffffff160217905550606092909201515f928352600d6020526040909220805462ffffff191662ffffff9093169290921790915550565b6002546001600160a01b0316331461128a5760405163251cb70160e11b815260040160405180910390fd5b5f87815260086020526040902080546001600160801b0319166001600160801b038316179055856112bb81876126b9565b5f6112c584612b1e565b90505f8082600f0b12156112eb576112dc82615075565b6112e690856150a2565b6112f5565b6112f582856150c1565b9050611304838b898985612b3f565b61131b83888861131389612b1e565b5f8a13612bd9565b5050505050505050505050565b60608080838067ffffffffffffffff81111561134657611346614bac565b60405190808252806020026020018201604052801561136f578160200160208202803683370190505b5093508067ffffffffffffffff81111561138b5761138b614bac565b6040519080825280602002602001820160405280156113b4578160200160208202803683370190505b5092508067ffffffffffffffff8111156113d0576113d0614bac565b6040519080825280602002602001820160405280156113f9578160200160208202803683370190505b5091505f5b818110156114ee575f8881526004602052604081208189898581811061142657611426614f88565b905060200201602081019061143b9190614afc565b6001600160a01b0316815260208101919091526040015f20805487519192506001600160801b03169087908490811061147657611476614f88565b602090810291909101015280548551600160801b90910467ffffffffffffffff16908690849081106114aa576114aa614f88565b6020908102919091010152600181015484516001600160801b03909116908590849081106114da576114da614f88565b6020908102919091010152506001016113fe565b505093509350939050565b6060610f8b8383612d14565b6060828067ffffffffffffffff81111561152157611521614bac565b60405190808252806020026020018201604052801561155457816020015b606081526020019060019003908161153f5790505b5091505f5b818110156115a85761158386868381811061157657611576614f88565b9050602002013585612d14565b83828151811061159557611595614f88565b6020908102919091010152600101611559565b50509392505050565b6002546001600160a01b031633146115dc5760405163251cb70160e11b815260040160405180910390fd5b856115e781866126b9565b6115f48189868686612b3f565b6001600160801b0382161561162a5761162a81858561161b866001600160801b0316612e7d565b61162490615075565b5f612bd9565b6116378189886001612ea9565b6116466007600883898c612f42565b5050505f9485525050600960209081526040808520805465ffffffffffff19169055600a8252808520859055600e90915290922080546001600160801b0319169055505050565b6002546001600160a01b031633146116b85760405163251cb70160e11b815260040160405180910390fd5b5f868152600b6020526040902086906116d76007600884868d89613023565b604080518082018252600288810b825287900b60208083019182525f8d81526009825284812093518454935162ffffff90811663010000000265ffffffffffff1990951691161792909217909255600a909152208a905561173882886126b9565b611757828787611750886001600160801b0316612e7d565b6001612bd9565b5f5b815460ff908116908216101561131b575f826001018260ff166003811061178257611782614f88565b01545f8581526005602052604081206001600160a01b039092169250906117ab90838b8b611a15565b905080156117dc575f8c81526006602090815260408083206001600160a01b03861684529091528120828155600101555b5050600101611759565b6060818067ffffffffffffffff81111561180257611802614bac565b60405190808252806020026020018201604052801561182b578160200160208202803683370190505b5091505f5b818110156115a8576118688686868481811061184e5761184e614f88565b90506020020160208101906118639190614afc565b612464565b83828151811061187a5761187a614f88565b6020908102919091010152600101611830565b61189561229f565b600180546001600160a01b0383166001600160a01b031990911681179091556118c55f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6119287f0000000000000000000000000000000000000000000000000000000000000000836130a1565b50505090505f6119378261316c565b905061194383826126b9565b505050565b5f828152600f602090815260408083206001600160a01b03851684529091529020548015611a0f575f8381526006602090815260408083206001600160a01b0386168452909152812080549091906119a090846150e0565b905080156119ea575f858152600e60205260409020546119cf9082906001600160801b0316600160801b613431565b826001015f8282546119e191906150f3565b90915550508282555b50505f838152600f602090815260408083206001600160a01b03861684529091528120555b50505050565b5f8160020b8360020b12611a2a57505f611b49565b6001850154600284810b600160801b909204900b1215611a915750600281810b5f908152818601602081815260408084206001600160a01b03891680865260019182018452828620549689900b865293835281852093855292909201905290205403611b49565b6001850154600283810b600160801b909204900b12611af75750600282810b5f908152818601602081815260408084206001600160a01b03891680865260019182018452828620549688900b865293835281852093855292909201905290205403611b49565b50600282810b5f908152818601602081815260408084206001600160a01b03891680865260019182018452828620549688900b8652938352818520938552929092018152818320549088905291205403035b949350505050565b82545f908203611b6f816001600160801b038616600160801b613431565b60018601805482019055929094555092915050565b5f8381526006602090815260408083206001600160a01b0386168452909152812060010180549190558015610f8b57611bc76001600160a01b03841683836134cd565b826001600160a01b0316826001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051611c0c91815260200190565b60405180910390a39392505050565b6040516001600160a01b038481166024830152838116604483015260648201839052611a0f9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506134fe565b5f8381526004602090815260408083206001600160a01b0386168452909152812080546001600160801b031615611cd157611cd1856118fd565b80545f90600160801b900467ffffffffffffffff16421015611d625781545f90611d0d904290600160801b900467ffffffffffffffff166150e0565b8354909150611d25906001600160801b031682615106565b9150818511611d60576040517fcee1c9a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b5f611d6d82866150f3565b9050611d7c62093a8082615131565b83546001600160801b0319166001600160801b0391909116178355611da462093a80426150f3565b83546001600160801b03908116600160801b67ffffffffffffffff938416026001600160c01b031617600160c01b42939093169290920291909117808555600190940180546001600160801b031916928216929092179091559190911695945050505050565b5f8481526004602090815260408083206001600160a01b03871684529091528120611e3862093a8085615131565b81546001600160801b0319166001600160801b0382161782559150611e6062093a80426150f3565b81546001600160801b03908116600160801b67ffffffffffffffff938416026001600160c01b031617600160c01b429390931692909202919091178255600180830180546001600160801b031916928716929092179091555f878152600b6020526040902086910160ff851660038110611edc57611edc614f88565b0180546001600160a01b0319166001600160a01b039290921691909117905550949350505050565b5f8381526012602090815260408083206001600160a01b038616845290915290205460ff16611fb6575f83815260106020526040902054600311611f5b57604051631eb49d6d60e11b815260040160405180910390fd5b5f8381526010602090815260408083208054600180820183559185528385200180546001600160a01b0319166001600160a01b03881690811790915587855260128452828520908552909252909120805460ff191690911790555b5f8381526011602090815260408083206001600160a01b038616845290915281208054839290611fe79084906150f3565b90915550506040518181526001600160a01b0383169084907f772744633299dbe544a342d917595322aa044489d327b1117b98154861a96ec99060200160405180910390a3505050565b5f828152600b602052604081208054909160ff909116905b8160ff168160ff161015610c60575f836001018260ff166003811061207057612070614f88565b01545f868152600f602090815260408083206001600160a01b03909416808452939091528120549192508190036120a857505061214a565b5f8681526006602090815260408083206001600160a01b0386168452909152812080549091906120d890846150e0565b90508015612122575f888152600e60205260409020546121079082906001600160801b0316600160801b613431565b826001015f82825461211991906150f3565b90915550508282555b5050505f858152600f602090815260408083206001600160a01b039094168352929052908120555b600101612049565b5f838152600b6020908152604080832085845260098352818420600884528285205488865260059094529184208154919492936001600160801b031692909160ff16905b8160ff168160ff161015612294575f866001018260ff16600381106121bd576121bd614f88565b01545f8a81526006602090815260408083206001600160a01b039094168084529390915281208854929350916122059087908590600281810b9163010000009004900b611a15565b9050612212828883611b51565b506001820180545f9091558015612285576122376001600160a01b0385168c836134cd565b836001600160a01b03168b6001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838360405161227c91815260200190565b60405180910390a35b50505050806001019050612196565b505050505050505050565b5f546001600160a01b03163314610fa35760405163118cdaa760e01b81523360048201526024016110a9565b5f828152600b602052604081208054909160ff909116908190036122ef5750505050565b5f848152600560205260408120600181015490916001600160801b03821691600160981b900467ffffffffffffffff169042908061232d84846150e0565b90505f5b8760ff168160ff161015612362576123508b8a898d858b8b8b8a613578565b1561235a57600192505b600101612331565b5081156123925760018601805467ffffffffffffffff60981b1916600160981b67ffffffffffffffff8616021790555b50505050505050505050565b6001600160801b03811615611a0f575f6123c0826001600160801b0316612e7d565b6123c990615075565b90506123d78585835f613700565b50506123e68584836001613700565b50506001850154600160801b9004600290810b9085900b1380159061241c57506001850154600284810b600160801b909204900b125b15610c60576001850154612439906001600160801b03168261378c565b6001860180546001600160801b03929092166001600160801b03199092169190911790555050505050565b6002546040516331a9108f60e11b8152600481018490525f916001600160a01b031690636352211e90602401602060405180830381865afa9250505080156124c9575060408051601f3d908101601f191682019092526124c691810190614f9c565b60015b6124d457505f61269a565b600254604051637ba03aad60e01b8152600481018690525f916001600160a01b031690637ba03aad9060240160c060405180830381865afa15801561251b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061253f9190614fb7565b5090505f61254e8260a0902090565b90505f61256487835f9182526020526040902090565b5f8181526006602090815260408083206001600160a01b038b1684528252808320848452600890925290912054919250906001600160801b03168015612617575f838152600960209081526040808320805488855260059093529083209092916125df91908c90600281810b9163010000009004900b611a15565b845490915081036125fe816001600160801b038616600160801b613431565b856001015461260d91906150f3565b9950505050612693565b5f838152600f602090815260408083206001600160a01b038c168452909152902054801561268a5782545f858152600e60205260409020549082039061266c9082906001600160801b0316600160801b613431565b846001015461267b91906150f3565b9850505050505050505061269a565b82600101549750505b5050505050505b92915050565b600180546001600160a01b03191690556106cb816137b3565b5f828152600b602052604081208054909160ff909116908190036126dd5750505050565b5f8481526005602052604081206001810154909167ffffffffffffffff600160981b90920482169142919060ff86169081111561271c5761271c614bac565b604051908082528060200260200182016040528015612745578160200160208202803683370190505b5090505f8560ff1667ffffffffffffffff81111561276557612765614bac565b60405190808252806020026020018201604052801561278e578160200160208202803683370190505b5090505f5b8660ff168160ff1610156128be575f886001018260ff16600381106127ba576127ba614f88565b015484516001600160a01b0390911691508190859060ff85169081106127e2576127e2614f88565b6001600160a01b039283166020918202929092018101919091525f8d815260048252604080822093851682529290915290812080546001600160801b03161561288e5780545f90600160801b900467ffffffffffffffff168810612858578154600160801b900467ffffffffffffffff1661285a565b875b90508881111561288c575f61286f8a836150e0565b83549091506128889082906001600160801b0316615106565b9350505b505b81858560ff16815181106128a4576128a4614f88565b602002602001018181525050505050806001019050612793565b505f898152600d60205260409020546128e09086908490849060020b8c613802565b5f5b8660ff168160ff161015612392575f886001018260ff166003811061290957612909614f88565b01545f8c81526004602090815260408083206001600160a01b039094168084529390915281208054929350916001600160801b0316900361294b575050612b16565b80545f9061296a90600160c01b900467ffffffffffffffff16886150e0565b90508015612b125781545f90600160801b900467ffffffffffffffff16881161299357876129a7565b8254600160801b900467ffffffffffffffff165b8354909150600160c01b900467ffffffffffffffff16811115612a685782546129e190600160c01b900467ffffffffffffffff16826150e0565b83549092505f906129fb906001600160801b031684615106565b60018501549091506001600160801b0316811115612a23575060018301546001600160801b03165b6001840180548291905f90612a429084906001600160801b03166150c1565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505b825467ffffffffffffffff808a16600160c01b026001600160c01b0390921691909117808555600160801b90041688101580612aaf575060018301546001600160801b0316155b15612b10576001830180546001600160801b031990811690915583541683556040516001600160a01b038516908f907f3ef0ee625515d981a459bcc24e3b944e532ef12d9f9d1032625c397f66e0a8ee905f90a3612b0e8e868a613931565b505b505b5050505b6001016128e2565b80600f81900b8114612b3a57612b3a6393dafdf160e01b613bcc565b919050565b5f858152600b602090815260408083206005909252822081549192909160ff16905b8160ff168160ff161015612294575f846001018260ff1660038110612b8857612b88614f88565b01545f8a81526006602090815260408083206001600160a01b03909416808452939091528120919250612bbd86848c8c611a15565b9050612bca828983611b51565b50505050806001019050612b61565b60608115612cad575f868152600b60205260409020805460ff168067ffffffffffffffff811115612c0c57612c0c614bac565b604051908082528060200260200182016040528015612c35578160200160208202803683370190505b5092505f5b8160ff168160ff161015612ca557826001018160ff1660038110612c6057612c60614f88565b015484516001600160a01b0390911690859060ff8416908110612c8557612c85614f88565b6001600160a01b0390921660209283029190910190910152600101612c3a565b505050612cbd565b50604080515f8152602081019091525b60408051608081018252600287810b825286810b602080840191909152600f87900b838501525f8a8152600d82528481205490920b60608401528982526005905291909120612d0c9183613bd4565b505050505050565b5f828152600b6020526040902080546060919060ff168067ffffffffffffffff811115612d4357612d43614bac565b604051908082528060200260200182016040528015612d8757816020015b604080518082019091525f8082526020820152815260200190600190039081612d615790505b505f8681526007602090815260408083206001600160a01b03891684529091528120805492955091905b8360ff168160ff161015612e72575f856001018260ff1660038110612dd857612dd8614f88565b01546001600160a01b031690505f805b84811015612e2957612e15868281548110612e0557612e05614f88565b905f5260205f200154848d613d84565b612e1f90836150f3565b9150600101612de8565b506040518060400160405280836001600160a01b0316815260200182815250888460ff1681518110612e5d57612e5d614f88565b60209081029190910101525050600101612db1565b505050505092915050565b5f6f800000000000000000000000000000008210612ea557612ea56393dafdf160e01b613bcc565b5090565b5f848152600b602052604081208054909160ff909116905b8160ff168160ff161015612f39575f836001018260ff1660038110612ee857612ee8614f88565b01546001600160a01b03169050612f00878288611b84565b508415612f30575f8781526006602090815260408083206001600160a01b03851684529091528120818155600101555b50600101612ec1565b50505050505050565b5f8181526020858152604080832080546001600160801b03191690558583528782528083206001600160a01b03861684529091528120805490915b818110156130195783838281548110612f9857612f98614f88565b905f5260205f200154036130115782612fb26001846150e0565b81548110612fc257612fc2614f88565b905f5260205f200154838281548110612fdd57612fdd614f88565b905f5260205f20018190555082805480612ff957612ff9615150565b600190038181905f5260205f20015f90559055613019565b600101612f7d565b5050505050505050565b5f828152602086905260408120546001600160801b03169003613070575f848152602087815260408083206001600160a01b03871684528252822080546001810182559083529120018290555b5f9182526020949094526040902080546001600160801b0319166001600160801b0390941693909317909255505050565b5f805f805f6130af86613ea6565b6040517f1e2eaeaf000000000000000000000000000000000000000000000000000000008152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa158015613110573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131349190615164565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b5f73fffd8963efd1fc6a506488495d951d51639616826401000276a21983016001600160a01b031611156131c4576131c47f614875240000000000000000000000000000000000000000000000000000000083613ee2565b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b16805f6131ee82613ef7565b60ff1690506080811061320957607f810383901c9150613213565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461342257886001600160a01b031661340782613f82565b6001600160a01b0316111561341c5781613424565b80613424565b815b9998505050505050505050565b5f838302815f1985870982811083820303915050808411613450575f80fd5b805f0361346257508290049050610f8b565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6040516001600160a01b0383811660248301526044820183905261194391859182169063a9059cbb90606401611c50565b5f6135126001600160a01b03841683614253565b905080515f14158015613536575080806020019051810190613534919061517b565b155b15611943576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016110a9565b5f80896001018760ff166003811061359257613592614f88565b01545f8c81526004602090815260408083206001600160a01b039094168084529390915281208054929350916001600160801b031615613636578154600160801b900467ffffffffffffffff1686116135f8575080546001600160801b03168402613636565b8154600160801b900467ffffffffffffffff1687101561363657508054600160801b810467ffffffffffffffff168790036001600160801b03909116025b6001600160a01b0383165f90815260208c905260409020548390821580159061366757506001600160801b038a1615155b156136c8575f6136846001600160801b038c16608086901b615131565b905080156136c6576001965061369a81836150f3565b9150818e5f015f856001600160a01b03166001600160a01b031681526020019081526020015f20819055505b505b5f9b8c52600f60209081526040808e206001600160a01b039097168e5295905293909a209290925550909a9950505050505050505050565b600283810b5f9081529085016020526040812080548291906001600160801b03811690600160801b9004600f0b613737828861378c565b6001600160801b0380821615908416151415955093505f866137625761375d8883615196565b61376c565b61376c88836151d5565b90508060801b6001600160801b0386161784555050505094509492505050565b6001600160801b038216600f82900b01608081901c1561269a576393dafdf15f526004601cfd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001850154600160981b900467ffffffffffffffff165f0361387a576001850180547fffffffffff0000000000000000000000ffffffffffffffffffffffffffffffff16600160801b62ffffff84160267ffffffffffffffff60981b191617600160981b4267ffffffffffffffff1602179055610c60565b60018501805467ffffffffffffffff4216600160981b0267ffffffffffffffff60981b19821681179092556001600160801b039182169116171561390c5783515f5b8181101561390957613901878783815181106138da576138da614f88565b60200260200101518784815181106138f4576138f4614f88565b6020026020010151614260565b6001016138bc565b50505b6001850154600282810b600160801b909204900b14610c6057610c60858383876142ce565b5f8381526010602052604081205b805415613bc2575f815f8154811061395957613959614f88565b5f91825260208220015483546001600160a01b03909116925061397e906001906150e0565b905080156139ea5782818154811061399857613998614f88565b5f91825260208220015484546001600160a01b039091169185916139be576139be614f88565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505b828054806139fa576139fa615150565b5f828152602080822083015f1990810180546001600160a01b03191690559092019092558882526012815260408083206001600160a01b038616808552908352818420805460ff191690558a84526011835281842090845290915281205490819003613a685750505061393f565b5f8881526011602090815260408083206001600160a01b0387168085529083528184208490558b8452600483528184209084529091529020613aad62093a8083615131565b81546001600160801b0319166001600160801b0391909116178155613ad562093a80886150f3565b81546001600160801b03908116600160801b67ffffffffffffffff938416026001600160c01b031617600160c01b928a1692909202919091178255600180830180546001600160801b031916928516929092179091555f8a8152600b6020526040902085910160ff8a1660038110613b4f57613b4f614f88565b0180546001600160a01b0319166001600160a01b039283161790558154604080518581526001600160801b039092166020830152918616918b917fa7d24926a85187e46071dbd8587ace433e1417bfc29b75e99027cba6d0ba2d0d910160405180910390a3600195505050505050610f8b565b505f949350505050565b805f5260045ffd5b604080830151835160208086015184516080810186525f8082529281018390529485018290526060850191909152919290919083600f0b5f14613cb857613c1d8784865f613700565b6001600160801b0316602083015215158152613c3c8783866001613700565b6001600160801b0316606083015215156040820152805115613c83576060860151613c6d9060038901908590614416565b5f84600f0b1315613c8357613c83878487614468565b806040015115613cb8576060860151613ca29060038901908490614416565b5f84600f0b1315613cb857613cb8878387614468565b5f84600f0b1215613cfe57805115613cdf57600283810b5f90815290880160205260408120555b806040015115613cfe57600282810b5f90815290880160205260408120555b60018701548651600160801b909104600290810b91900b13801590613d3a575060208601516001880154600291820b600160801b90910490910b125b15612f39576001870154613d57906001600160801b03168561378c565b6001880180546001600160801b03929092166001600160801b031990921691909117905550505050505050565b5f83815260086020908152604080832054600683528184206001600160a01b038716855290925282206001600160801b0390911690818303613e3d575f868152600f602090815260408083206001600160a01b03891684529091529020548015613e2f5781545f888152600e602052604090205490820390613e159082906001600160801b0316600160801b613431565b8360010154613e2491906150f3565b945050505050610f8b565b50600101549150610f8b9050565b5f86815260096020908152604080832080548885526005909352908320909291613e7891908990600281810b9163010000009004900b611a15565b83549091508103613e97816001600160801b038716600160801b613431565b846001015461342491906150f3565b6040515f90613ec5908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b815f526001600160a01b03811660045260245ffd5b5f808211613f03575f80fd5b507f0706060506020500060203020504000106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6001600160801b03841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b60020b5f60ff82901d80830118620d89e8811115613fc457613fc47f8b86327a00000000000000000000000000000000000000000000000000000000846144eb565b7001fffcb933bd6fad37aa2d162d1a5940016001821602600160801b186002821615614000576ffff97272373d413259a46990580e213a0260801c5b600482161561401f576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561403e576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561405d576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561407c576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561409b576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156140ba576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156140da576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156140fa576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561411a576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561413a576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561415a576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561417a576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561419a576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156141ba576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156141db576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156141fb576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561421a576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614237576b048a170391f7dc42444e8fa20260801c5b5f841315614243575f19045b63ffffffff0160201c9392505050565b6060610f8b83835f6144fa565b805f0361426c57505050565b60018301546001600160801b03165f0361428557505050565b60018301546001600160801b0316608082901b816142a5576142a561511d565b6001600160a01b039093165f908152602094909452604090932080549390920492909201905550565b6001840154600160801b9004600290810b905f9084900b8212801590614362575b8260020b8560020b121561435d575f8061430f60038a01868a60016145ac565b915091508660020b8260020b136143275750506143c4565b8015614349575f6143398a8489614699565b905061434581866151d5565b9450505b614354600183615214565b945050506142ef565b6143c4565b8460020b8360020b12156143c4575f8061438160038a01868a846145ac565b915091508660020b8260020b131561439a5750506143c4565b80156143bc575f6143ac8a8489614699565b90506143b88186615196565b9450505b509250614362565b60018701805462ffffff8716600160801b027fffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff82168117909255613d57916001600160801b039081169116178361378c565b600291820b910b808207156144435760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b6001830154600160801b9004600290810b9083900b1361194357600282810b5f90815290840160205260408120905b8251811015610c60575f8382815181106144b3576144b3614f88565b6020908102919091018101516001600160a01b03165f9081528782526040808220546001808801909452912055919091019050614497565b815f528060020b60045260245ffd5b606081471015614538576040517fcd7860590000000000000000000000000000000000000000000000000000000081523060048201526024016110a9565b5f80856001600160a01b031684866040516145539190615239565b5f6040518083038185875af1925050503d805f811461458d576040519150601f19603f3d011682016040523d82523d5f602084013e614592565b606091505b50915091506145a286838361473d565b9695505050505050565b5f80600284810b9086900b818107831391900503831561462b57600281900b60081d600181900b5f908152602089905260409020545f1960ff808516908190039190911c91821680151595509091908561460d57888360ff16860302614620565b8861461782613ef7565b840360ff168603025b96505050505061468f565b6001908101600281900b60081d80830b5f90815260208a905260409020545f1960ff841694851b01199081168015159550929391928561467557888360ff0360ff16860102614688565b8883614680836147b2565b0360ff168601025b9650505050505b5094509492505050565b600282810b5f9081529084016020526040812080546001600160801b031682036146c6575f915050610f8b565b5f5b8351811015614729575f8482815181106146e4576146e4614f88565b6020908102919091018101516001600160a01b03165f9081526001808601808452604080842080548d87529190942054919094529290920390559190910190506146c8565b5054600160801b9004600f0b949350505050565b6060826147525761474d8261484c565b610f8b565b815115801561476957506001600160a01b0384163b155b156147ab576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016110a9565b5080610f8b565b5f8082116147be575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b15031604055f8290039091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b80511561485c5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60a0828403121561489e575f80fd5b50919050565b5f60a082840312156148b4575f80fd5b610f8b838361488e565b5f602082840312156148ce575f80fd5b5035919050565b5f8151808452602084019350602083015f5b8281101561490e5781516001600160a01b03168652602095860195909101906001016148e7565b5093949350505050565b5f8151808452602084019350602083015f5b8281101561490e57815186526020958601959091019060010161492a565b604081525f61495a60408301856148d5565b828103602084015261496c8185614918565b95945050505050565b6001600160a01b03811681146106cb575f80fd5b5f806040838503121561499a575f80fd5b8235915060208301356149ac81614975565b809150509250929050565b5f805f606084860312156149c9575f80fd5b8335925060208401356149db81614975565b915060408401356149eb81614975565b809150509250925092565b5f805f60e08486031215614a08575f80fd5b614a12858561488e565b925060a0840135614a2281614975565b9295929450505060c0919091013590565b5f8083601f840112614a43575f80fd5b50813567ffffffffffffffff811115614a5a575f80fd5b6020830191508360208260051b8501011115614a74575f80fd5b9250929050565b5f805f60408486031215614a8d575f80fd5b833567ffffffffffffffff811115614aa3575f80fd5b614aaf86828701614a33565b90945092505060208401356149eb81614975565b80151581146106cb575f80fd5b5f8060408385031215614ae1575f80fd5b8235614aec81614975565b915060208301356149ac81614ac3565b5f60208284031215614b0c575f80fd5b8135610f8b81614975565b8060020b81146106cb575f80fd5b80356001600160801b0381168114612b3a575f80fd5b5f805f805f8060c08789031215614b50575f80fd5b8635955060208701359450604087013593506060870135614b7081614b17565b92506080870135614b8081614b17565b9150614b8e60a08801614b25565b90509295509295509295565b602081525f610f8b60208301846148d5565b634e487b7160e01b5f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715614bef57634e487b7160e01b5f52604160045260245ffd5b60405290565b62ffffff811681146106cb575f80fd5b5f60a08284031215614c15575f80fd5b614c1d614bc0565b90508135614c2a81614975565b81526020820135614c3a81614975565b60208201526040820135614c4d81614bf5565b60408201526060820135614c6081614b17565b60608201526080820135614c7381614975565b608082015292915050565b5f8060c08385031215614c8f575f80fd5b614c998484614c05565b915060a08301356149ac81614b17565b5f805f805f805f80610100898b031215614cc1575f80fd5b8835975060208901359650604089013595506060890135614ce181614b17565b94506080890135614cf181614b17565b935060a0890135614d0181614b17565b925060c08901359150614d1660e08a01614b25565b90509295985092959890939650565b5f805f60408486031215614d37575f80fd5b83359250602084013567ffffffffffffffff811115614d54575f80fd5b614d6086828701614a33565b9497909650939450505050565b606081525f614d7f6060830186614918565b8281036020840152614d918186614918565b905082810360408401526145a28185614918565b5f8151808452602084019350602083015f5b8281101561490e57815180516001600160a01b031687526020908101518188015260409096019590910190600101614db7565b602081525f610f8b6020830184614da5565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614e5357603f19878603018452614e3e858351614da5565b94506020938401939190910190600101614e22565b50929695505050505050565b5f805f805f805f80610100898b031215614e77575f80fd5b8835975060208901359650604089013595506060890135614e9781614975565b94506080890135614ea781614b17565b935060a0890135614eb781614b17565b925060c0890135614ec781614b17565b9150614d1660e08a01614b25565b5f805f805f805f80610100898b031215614eed575f80fd5b8835975060208901359650604089013595506060890135614f0d81614b17565b94506080890135614f1d81614b17565b935060a0890135614f2d81614b17565b9250614f3b60c08a01614b25565b915060e0890135614f4b81614975565b809150509295985092959890939650565b602081525f610f8b6020830184614918565b5f60a08284031215614f7e575f80fd5b610f8b8383614c05565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215614fac575f80fd5b8151610f8b81614975565b5f8082840360c0811215614fc9575f80fd5b60a0811215614fd6575f80fd5b50614fdf614bc0565b8351614fea81614975565b81526020840151614ffa81614975565b6020820152604084015161500d81614bf5565b6040820152606084015161502081614b17565b6060820152608084015161503381614975565b608082015260a0939093015192949293505050565b634e487b7160e01b5f52601160045260245ffd5b60ff818116838216019081111561269a5761269a615048565b5f81600f0b6f7fffffffffffffffffffffffffffffff19810361509a5761509a615048565b5f0392915050565b6001600160801b03818116838216019081111561269a5761269a615048565b6001600160801b03828116828216039081111561269a5761269a615048565b8181038181111561269a5761269a615048565b8082018082111561269a5761269a615048565b808202811582820484141761269a5761269a615048565b634e487b7160e01b5f52601260045260245ffd5b5f8261514b57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603160045260245ffd5b5f60208284031215615174575f80fd5b5051919050565b5f6020828403121561518b575f80fd5b8151610f8b81614ac3565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81136f7fffffffffffffffffffffffffffffff198212171561269a5761269a615048565b600f82810b9082900b036f7fffffffffffffffffffffffffffffff1981126f7fffffffffffffffffffffffffffffff8213171561269a5761269a615048565b600282810b9082900b03627fffff198112627fffff8213171561269a5761269a615048565b5f82518060208501845e5f92019182525091905056fea264697066735822122057e1dda9628cc720f22f451d409f13936e802df1380c11ec530b3041879db8f864736f6c634300081a0033000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000398f4d8befa9b9e5c1b635073e0082f00677f0cc