110 txs
31.6k calls
constructor
constructor(address blockhashStore)
functions
BLOCKHASH_STORE
viewfunction BLOCKHASH_STORE() view returns (address)
getCommitment
viewfunction getCommitment(uint256 requestId) view returns (bytes32)
getConfig
viewfunction getConfig() view returns (uint16 minimumRequestConfirmations, uint16 maxNumWords, uint32 maxGasLimit, uint32 gasAfterPaymentCalculation, uint96 subAccountMaxDeposit)
getCurrentSubId
viewfunction getCurrentSubId() view returns (uint64)
getDesignatedSubIdFeeTier
viewfunction getDesignatedSubIdFeeTier(uint64 subId) view returns (uint32)
getFeeConfig
viewfunction getFeeConfig() view returns (uint32 fulfillmentFlatFeeBNBPPMTier1, uint32 fulfillmentFlatFeeBNBPPMTier2, uint32 fulfillmentFlatFeeBNBPPMTier3, uint32 fulfillmentFlatFeeBNBPPMTier4, uint32 fulfillmentFlatFeeBNBPPMTier5, uint24 reqsForTier2, uint24 reqsForTier3, uint24 reqsForTier4, uint24 reqsForTier5)
getFeeTier
viewfunction getFeeTier(uint64 reqCount, uint64 subId) view returns (uint32)
getNodeAccessStatus
viewfunction getNodeAccessStatus(address node) view returns (bool)
getNodesWhiteListSwitchStatus
viewfunction getNodesWhiteListSwitchStatus() view returns (bool)
getRequestConfig
viewfunction getRequestConfig() view returns (uint16, uint32, bytes32[])
getSubscription
viewfunction getSubscription(uint64 subId) view returns (uint96 balance, uint64 reqCount, address owner, address[] consumers)
getTotalBalance
viewfunction getTotalBalance() view returns (uint256)
getWithdrawableTokens
viewfunction getWithdrawableTokens() view returns (uint96)
hashOfKey
purefunction hashOfKey(uint256[2] publicKey) pure returns (bytes32)
MAX_CONSUMERS
viewfunction MAX_CONSUMERS() view returns (uint16)
MAX_REQUEST_CONFIRMATIONS
viewfunction MAX_REQUEST_CONFIRMATIONS() view returns (uint16)
owner
viewfunction owner() view returns (address)
pendingRequestExists
viewfunction pendingRequestExists(uint64 subId) view returns (bool)
typeAndVersion
purefunction typeAndVersion() pure returns (string)
acceptOwnership
nonpayablefunction acceptOwnership()
acceptSubscriptionOwnerTransfer
nonpayablefunction acceptSubscriptionOwnerTransfer(uint64 subId)
addConsumer
nonpayablefunction addConsumer(uint64 subId, address consumer)
addNodeAccess
nonpayablefunction addNodeAccess(address node)
cancelSubscription
nonpayablefunction cancelSubscription(uint64 subId, address to)
createSubscription
nonpayablefunction createSubscription() returns (uint64)
deposit
payablefunction deposit(uint64 subId) payable
deregisterProvingKey
nonpayablefunction deregisterProvingKey(uint256[2] publicProvingKey)
disableNodeAccess
nonpayablefunction disableNodeAccess(address node)
fulfillRandomWords
nonpayablefunction fulfillRandomWords(tuple proof, tuple rc) returns (uint96)
oracleWithdraw
nonpayablefunction oracleWithdraw(uint96 amount)
ownerCancelSubscription
nonpayablefunction ownerCancelSubscription(uint64 subId)
registerProvingKey
nonpayablefunction registerProvingKey(uint256[2] publicProvingKey)
removeConsumer
nonpayablefunction removeConsumer(uint64 subId, address consumer)
requestRandomWords
nonpayablefunction requestRandomWords(bytes32 keyHash, uint64 subId, uint16 requestConfirmations, uint32 callbackGasLimit, uint32 numWords) returns (uint256)
requestSubscriptionOwnerTransfer
nonpayablefunction requestSubscriptionOwnerTransfer(uint64 subId, address newOwner)
setConfig
nonpayablefunction setConfig(uint16 minimumRequestConfirmations, uint16 maxNumWords, uint32 maxGasLimit, uint32 gasAfterPaymentCalculation, uint96 subAccountMaxDeposit, tuple feeConfig)
setDesignatedSubIdFeeTier
nonpayablefunction setDesignatedSubIdFeeTier(uint64 subId, uint32 feeTier)
setNodesWhiteListSwitchStatus
nonpayablefunction setNodesWhiteListSwitchStatus(bool status)
transferOwnership
nonpayablefunction transferOwnership(address to)
updateAddress
nonpayablefunction updateAddress(address recipient)
events
ConfigSet
event ConfigSet(uint16 minimumRequestConfirmations, uint16 maxNumWords, uint32 maxGasLimit, uint32 gasAfterPaymentCalculation, uint96 subAccountMaxDeposit, (uint32 fulfillmentFlatFeeBNBPPMTier1, uint32 fulfillmentFlatFeeBNBPPMTier2, uint32 fulfillmentFlatFeeBNBPPMTier3, uint32 fulfillmentFlatFeeBNBPPMTier4, uint32 fulfillmentFlatFeeBNBPPMTier5, uint24 reqsForTier2, uint24 reqsForTier3, uint24 reqsForTier4, uint24 reqsForTier5) feeConfig)
FundsRecovered
event FundsRecovered(address to, uint256 amount)
NodeAccessAdd
event NodeAccessAdd(address node)
NodeAccessDisabled
event NodeAccessDisabled(address node)
OwnershipTransferred
event OwnershipTransferred(address indexed from, address indexed to)
OwnershipTransferRequested
event OwnershipTransferRequested(address indexed from, address indexed to)
ProvingKeyDeregistered
event ProvingKeyDeregistered(bytes32 keyHash)
ProvingKeyRegistered
event ProvingKeyRegistered(bytes32 keyHash)
RandomWordsFulfilled
event RandomWordsFulfilled(uint256 indexed requestId, uint256 outputSeed, uint96 payment, uint256 fee, bool success)
RandomWordsRequested
event RandomWordsRequested(bytes32 indexed keyHash, uint256 requestId, uint256 preSeed, uint64 indexed subId, uint16 minimumRequestConfirmations, uint32 callbackGasLimit, uint32 numWords, address indexed sender)
s_withdrawableTokensAddressChange
event s_withdrawableTokensAddressChange(address newAddress, address oldAddress)
SubscriptionCanceled
event SubscriptionCanceled(uint64 indexed subId, address to, uint256 amount)
SubscriptionConsumerAdded
event SubscriptionConsumerAdded(uint64 indexed subId, address consumer)
SubscriptionConsumerRemoved
event SubscriptionConsumerRemoved(uint64 indexed subId, address consumer)
SubscriptionCreated
event SubscriptionCreated(uint64 indexed subId, address owner)
SubscriptionFunded
event SubscriptionFunded(uint64 indexed subId, uint256 oldBalance, uint256 newBalance)
SubscriptionOwnerTransferred
event SubscriptionOwnerTransferred(uint64 indexed subId, address from, address to)
SubscriptionOwnerTransferRequested
event SubscriptionOwnerTransferRequested(uint64 indexed subId, address from, address to)
errors
BalanceInvariantViolated
error BalanceInvariantViolated(uint256 internalBalance, uint256 externalBalance)
BlockhashNotInStore
error BlockhashNotInStore(uint256 blockNum)
ExceedingTheMaximumRechargeLimit
error ExceedingTheMaximumRechargeLimit(uint96 subAccountMaxDeposit, uint256 oldSubBalance, uint96 depositAmount)
GasLimitTooBig
error GasLimitTooBig(uint32 have, uint32 want)
IncorrectCommitment
error IncorrectCommitment()
InsufficientBalance
error InsufficientBalance(uint96 balance, uint96 payment)
InsufficientGasForConsumer
error InsufficientGasForConsumer(uint256 have, uint256 want)
InvalidAddress
error InvalidAddress()
InvalidCalldata
error InvalidCalldata()
InvalidConsumer
error InvalidConsumer(uint64 subId, address consumer)
InvalidRequestConfirmations
error InvalidRequestConfirmations(uint16 have, uint16 min, uint16 max)
InvalidSubscription
error InvalidSubscription()
MustBeRequestedOwner
error MustBeRequestedOwner(address proposedOwner)
MustBeSubOwner
error MustBeSubOwner(address owner)
NoAuthFulfillRandomWords
error NoAuthFulfillRandomWords(address node)
NoCorrespondingRequest
error NoCorrespondingRequest()
NoSuchProvingKey
error NoSuchProvingKey(bytes32 keyHash)
NumWordsTooBig
error NumWordsTooBig(uint32 have, uint32 want)
PaymentTooLarge
error PaymentTooLarge()
PendingRequestExists
error PendingRequestExists()
ProvingKeyAlreadyRegistered
error ProvingKeyAlreadyRegistered(bytes32 keyHash)
Reentrant
error Reentrant()
TooManyConsumers
error TooManyConsumers()
creation bytecode
0x60a06040523480156200001157600080fd5b5060405162004eb838038062004eb8833981016040819052620000349162000183565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000d7565b50505060601b6001600160601b031916608052620001b5565b6001600160a01b038116331415620001325760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156200019657600080fd5b81516001600160a01b0381168114620001ae57600080fd5b9392505050565b60805160601c614cdd620001db6000396000818161059d01526133d90152614cdd6000f3fe6080604052600436106102ba5760003560e01c80638da5cb5b1161016e578063daa856b2116100cb578063ed6d90961161007f578063f2fde38b11610064578063f2fde38b14610918578063fc197a8914610938578063fea439951461095857600080fd5b8063ed6d9096146108da578063eec3e6e7146108fa57600080fd5b8063e564ee45116100b0578063e564ee4514610882578063e82ad7d4146108a2578063e8e6dfb3146108c257600080fd5b8063daa856b214610842578063e03ff3e21461086257600080fd5b8063af198b9711610122578063c65755db11610107578063c65755db146107e2578063caf70c4a14610802578063d7ae1d301461082257600080fd5b8063af198b9714610738578063c3f909d41461077057600080fd5b80639f87fad7116101535780639f87fad7146106d3578063a21a23e4146106f3578063a47c76961461070857600080fd5b80638da5cb5b146106795780639edad7ca1461069757600080fd5b806333666f041161021c57806369bcdb7d116101d057806379ba5097116101b557806379ba5097146106245780637bce14d114610639578063823597401461065957600080fd5b806369bcdb7d146105d75780637341c10c1461060457600080fd5b80635fbbc0d2116102015780635fbbc0d2146104d457806364d51a2a14610576578063689c45171461058b57600080fd5b806333666f041461046b5780635d3b1d30146104b457600080fd5b806312b583491161027357806315c48b841161025857806315c48b84146103c2578063181f5a77146103ea5780632d9edb0c1461043657600080fd5b806312b583491461038057806313765838146103af57600080fd5b806304c357cb116102a457806304c357cb1461030e57806306bfa6371461032e57806308821d581461036057600080fd5b8062012291146102bf57806302bcc5b6146102ec575b600080fd5b3480156102cb57600080fd5b506102d4610978565b6040516102e3939291906149ad565b60405180910390f35b3480156102f857600080fd5b5061030c6103073660046146fd565b6109f6565b005b34801561031a57600080fd5b5061030c610329366004614718565b610a6d565b34801561033a57600080fd5b506006546001600160401b03165b6040516001600160401b0390911681526020016102e3565b34801561036c57600080fd5b5061030c61037b366004614419565b610bb8565b34801561038c57600080fd5b50600654600160401b90046001600160601b03165b6040519081526020016102e3565b61030c6103bd3660046146fd565b610ce8565b3480156103ce57600080fd5b506103d760c881565b60405161ffff90911681526020016102e3565b3480156103f657600080fd5b50604080518082018252601681527f565246436f6f7264696e61746f72563220312e302e3000000000000000000000602082015290516102e3919061487d565b34801561044257600080fd5b50610456610451366004614775565b610f29565b60405163ffffffff90911681526020016102e3565b34801561047757600080fd5b506104a46104863660046143fe565b6001600160a01b03166000908152600d602052604090205460ff1690565b60405190151581526020016102e3565b3480156104c057600080fd5b506103a16104cf366004614498565b6110f4565b3480156104e057600080fd5b50600b546040805163ffffffff8084168252640100000000840481166020830152600160401b8404811692820192909252600160601b830482166060820152600160801b8304909116608082015262ffffff600160a01b8304811660a0830152600160b81b8304811660c0830152600160d01b8304811660e0830152600160e81b909204909116610100820152610120016102e3565b34801561058257600080fd5b506103d7606481565b34801561059757600080fd5b506105bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102e3565b3480156105e357600080fd5b506103a16105f23660046146e4565b60009081526009602052604090205490565b34801561061057600080fd5b5061030c61061f366004614718565b61146b565b34801561063057600080fd5b5061030c611637565b34801561064557600080fd5b5061030c610654366004614419565b6116e8565b34801561066557600080fd5b5061030c6106743660046146fd565b611800565b34801561068557600080fd5b506000546001600160a01b03166105bf565b3480156106a357600080fd5b506104566106b23660046146fd565b6001600160401b031660009081526005602052604090205463ffffffff1690565b3480156106df57600080fd5b5061030c6106ee366004614718565b611975565b3480156106ff57600080fd5b50610348611ca0565b34801561071457600080fd5b506107286107233660046146fd565b611e3d565b6040516102e39493929190614a6e565b34801561074457600080fd5b506107586107533660046144f6565b611f37565b6040516001600160601b0390911681526020016102e3565b34801561077c57600080fd5b50600a546040805161ffff8084168252620100008404166020820152640100000000830463ffffffff90811692820192909252690100000000000000000083049091166060820152600160681b9091046001600160601b0316608082015260a0016102e3565b3480156107ee57600080fd5b5061030c6107fd3660046145be565b6123be565b34801561080e57600080fd5b506103a161081d366004614441565b6126c1565b34801561082e57600080fd5b5061030c61083d366004614718565b6126f1565b34801561084e57600080fd5b5061030c61085d3660046143fe565b6127b1565b34801561086e57600080fd5b5061030c61087d36600461474b565b612832565b34801561088e57600080fd5b5061030c61089d3660046143fe565b6128ac565b3480156108ae57600080fd5b506104a46108bd3660046146fd565b612928565b3480156108ce57600080fd5b50600c5460ff166104a4565b3480156108e657600080fd5b5061030c6108f53660046143fe565b612b48565b34801561090657600080fd5b506008546001600160601b0316610758565b34801561092457600080fd5b5061030c6109333660046143fe565b612bda565b34801561094457600080fd5b5061030c61095336600461479f565b612c41565b34801561096457600080fd5b5061030c61097336600461445d565b612e19565b600a546007805460408051602080840282018101909252828152600094859460609461ffff83169464010000000090930463ffffffff169391928391908301828280156109e457602002820191906000526020600020905b8154815260200190600101908083116109d0575b50505050509050925092509250909192565b6109fe612e34565b6001600160401b0381166000908152600360205260409020546001600160a01b0316610a3d57604051630fb532db60e11b815260040160405180910390fd5b6001600160401b038116600090815260036020526040902054610a6a9082906001600160a01b0316612e90565b50565b6001600160401b03821660009081526003602052604090205482906001600160a01b031680610aaf57604051630fb532db60e11b815260040160405180910390fd5b336001600160a01b03821614610ae857604051636c51fda960e11b81526001600160a01b03821660048201526024015b60405180910390fd5b600a54600160401b900460ff1615610b135760405163769dd35360e11b815260040160405180910390fd5b6001600160401b0384166000908152600360205260409020600101546001600160a01b03848116911614610bb2576001600160401b03841660008181526003602090815260409182902060010180546001600160a01b0319166001600160a01b0388169081179091558251338152918201527f69436ea6df009049404f564eff6622cd00522b0bd6a89efd9e52a355c4a879be91015b60405180910390a25b50505050565b610bc0612e34565b604080518082018252600091610bef9190849060029083908390808284376000920191909152506126c1915050565b905060005b600754811015610caf578160078281548110610c1257610c12614c7b565b90600052602060002001541415610c9d576007805460009190610c3790600190614b96565b81548110610c4757610c47614c7b565b906000526020600020015490508060078381548110610c6857610c68614c7b565b6000918252602090912001556007805480610c8557610c85614c65565b60019003818190600052602060002001600090559055505b80610ca781614bd5565b915050610bf4565b506040518181527fbd242ec01625c15ecbc02cf700ac8b02c86f7346fa91a08e186810221ae509d0906020015b60405180910390a15050565b34610d355760405162461bcd60e51b815260206004820152600260248201527f69610000000000000000000000000000000000000000000000000000000000006044820152606401610adf565b6001600160401b0381166000908152600360205260409020546001600160a01b0316610d7457604051630fb532db60e11b815260040160405180910390fd5b6001600160401b0381166000908152600460205260408120546001600160601b031690610da13483614b55565b600a549091506001600160601b03808316600160681b909204161015610e3757600a546001600160401b0384166000908152600460208190526040918290205491517fe9bdc7d2000000000000000000000000000000000000000000000000000000008152600160681b9093046001600160601b0390811691840191909152908116602483015234166044820152606401610adf565b6001600160401b03831660009081526004602052604081208054349290610e689084906001600160601b0316614b55565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555034600660088282829054906101000a90046001600160601b0316610eb09190614b55565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550826001600160401b03167fd39ec07f4e209f627a4c427971473820dc129761ba28de8906bd56f57101d4f8833485610f0c9190614b12565b6040805192835260208301919091520160405180910390a2505050565b6001600160401b03811660009081526005602052604081205463ffffffff1615610f7257506001600160401b03811660009081526005602052604090205463ffffffff166110ee565b6040805161012081018252600b5463ffffffff8082168352640100000000820481166020840152600160401b8204811693830193909352600160601b810483166060830152600160801b8104909216608082015262ffffff600160a01b8304811660a08301819052600160b81b8404821660c0840152600160d01b8404821660e0840152600160e81b90930416610100820152906001600160401b0385161161101d575190506110ee565b836001600160401b03168160a0015162ffffff1610801561105057508060c0015162ffffff16846001600160401b031611155b15611060576020015190506110ee565b836001600160401b03168160c0015162ffffff1610801561109357508060e0015162ffffff16846001600160401b031611155b156110a3576040015190506110ee565b836001600160401b03168160e0015162ffffff161080156110d7575080610100015162ffffff16846001600160401b031611155b156110e7576060015190506110ee565b6080015190505b92915050565b600a54600090600160401b900460ff16156111225760405163769dd35360e11b815260040160405180910390fd5b6001600160401b0385166000908152600360205260409020546001600160a01b031661116157604051630fb532db60e11b815260040160405180910390fd5b3360009081526002602090815260408083206001600160401b03808a16855292529091205416806111b657604051637800cff360e11b81526001600160401b0387166004820152336024820152604401610adf565b600a5461ffff90811690861610806111d2575060c861ffff8616115b1561120957600a5460405163539c34bb60e11b815261ffff8088166004830152909116602482015260c86044820152606401610adf565b600a5463ffffffff6401000000009091048116908516111561127457600a546040517ff5d7e01e00000000000000000000000000000000000000000000000000000000815263ffffffff80871660048301526401000000009092049091166024820152604401610adf565b600a5462010000900461ffff1663ffffffff841611156112db57600a546040517f47386bec00000000000000000000000000000000000000000000000000000000815263ffffffff851660048201526201000090910461ffff166024820152604401610adf565b60006112e8826001614b2a565b6040805160208082018c905233828401526001600160401b03808c16606084015284166080808401919091528351808403909101815260a08301845280519082012060c083018d905260e08084018290528451808503909101815261010090930190935281519101209192506000918291604080516020810184905243918101919091526001600160401b038c16606082015263ffffffff808b166080830152891660a08201523360c0820152919350915060e00160408051808303601f19018152828252805160209182012060008681526009835283902055848352820183905261ffff8a169082015263ffffffff80891660608301528716608082015233906001600160401b038b16908c907f63373d1c4696214b898952999c9aaec57dac1ee2723cec59bea6888f489a97729060a00160405180910390a4503360009081526002602090815260408083206001600160401b03808d168552925290912080549190931667ffffffffffffffff199091161790915591505095945050505050565b6001600160401b03821660009081526003602052604090205482906001600160a01b0316806114ad57604051630fb532db60e11b815260040160405180910390fd5b336001600160a01b038216146114e157604051636c51fda960e11b81526001600160a01b0382166004820152602401610adf565b600a54600160401b900460ff161561150c5760405163769dd35360e11b815260040160405180910390fd5b6001600160401b03841660009081526003602052604090206002015460641415611562576040517f05a48e0f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03831660009081526002602090815260408083206001600160401b038089168552925290912054161561159b57610bb2565b6001600160a01b03831660008181526002602081815260408084206001600160401b038a16808652908352818520805467ffffffffffffffff19166001908117909155600384528286209094018054948501815585529382902090920180546001600160a01b03191685179055905192835290917f43dc749a04ac8fb825cbd514f7c0e13f13bc6f2ee66043b76629d51776cff8e09101610ba9565b6001546001600160a01b031633146116915760405162461bcd60e51b815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610adf565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6116f0612e34565b60408051808201825260009161171f9190849060029083908390808284376000920191909152506126c1915050565b905060005b60075481101561179a57816007828154811061174257611742614c7b565b90600052602060002001541415611788576040517f4a0b8fa700000000000000000000000000000000000000000000000000000000815260048101839052602401610adf565b8061179281614bd5565b915050611724565b50600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018190556040518181527fc9583fd3afa3d7f16eb0b88d0268e7d05c09bafa4b21e092cbd1320e1bc8089d90602001610cdc565b600a54600160401b900460ff161561182b5760405163769dd35360e11b815260040160405180910390fd5b6001600160401b0381166000908152600360205260409020546001600160a01b031661186a57604051630fb532db60e11b815260040160405180910390fd5b6001600160401b0381166000908152600360205260409020600101546001600160a01b031633146118f0576001600160401b038116600090815260036020526040908190206001015490517fd084e9750000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610adf565b6001600160401b0381166000818152600360209081526040918290208054336001600160a01b0319808316821784556001909301805490931690925583516001600160a01b03909116808252928101919091529092917f6f1dc65165ffffedfd8e507b4a0f1fcfdada045ed11f6c26ba27cedfe87802f0910160405180910390a25050565b6001600160401b03821660009081526003602052604090205482906001600160a01b0316806119b757604051630fb532db60e11b815260040160405180910390fd5b336001600160a01b038216146119eb57604051636c51fda960e11b81526001600160a01b0382166004820152602401610adf565b600a54600160401b900460ff1615611a165760405163769dd35360e11b815260040160405180910390fd5b6001600160a01b03831660009081526002602090815260408083206001600160401b03808916855292529091205416611a7c57604051637800cff360e11b81526001600160401b03851660048201526001600160a01b0384166024820152604401610adf565b6001600160401b038416600090815260036020908152604080832060020180548251818502810185019093528083529192909190830182828015611ae957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611acb575b50505050509050600060018251611b009190614b96565b905060005b8251811015611c2757856001600160a01b0316838281518110611b2a57611b2a614c7b565b60200260200101516001600160a01b03161415611c15576000838381518110611b5557611b55614c7b565b6020026020010151905080600360008a6001600160401b03166001600160401b031681526020019081526020016000206002018381548110611b9957611b99614c7b565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394909416939093179092556001600160401b038a168152600390915260409020600201805480611bed57611bed614c65565b600082815260209020810160001990810180546001600160a01b031916905501905550611c27565b80611c1f81614bd5565b915050611b05565b506001600160a01b03851660008181526002602090815260408083206001600160401b038b1680855290835292819020805467ffffffffffffffff191690555192835290917f182bff9831466789164ca77075fffd84916d35a8180ba73c27e45634549b445b91015b60405180910390a2505050505050565b600a54600090600160401b900460ff1615611cce5760405163769dd35360e11b815260040160405180910390fd5b600680546001600160401b0316906000611ce783614bf0565b82546101009290920a6001600160401b03818102199093169183160217909155600654169050600080604051908082528060200260200182016040528015611d39578160200160208202803683370190505b50604080518082018252600080825260208083018281526001600160401b03888116808552600484528685209551865493516001600160601b039091166001600160a01b031994851617600160601b919093160291909117909455845160608101865233815280830184815281870188815295855260038452959093208351815483166001600160a01b0391821617825595516001820180549093169616959095179055915180519495509093611df69260028501920190614187565b50506040513381526001600160401b03841691507f464722b4166576d3dcbba877b999bc35cf911f4eaf434b7eba68fa113951d0bf9060200160405180910390a250905090565b6001600160401b038116600090815260036020526040812054819081906060906001600160a01b0316611e8357604051630fb532db60e11b815260040160405180910390fd5b6001600160401b0380861660009081526004602090815260408083205460038352928190208054600290910180548351818602810186019094528084526001600160601b03861696600160601b909604909516946001600160a01b03909216939092918391830182828015611f2157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f03575b5050505050905093509350935093509193509193565b600a54600090600160401b900460ff1615611f655760405163769dd35360e11b815260040160405180910390fd5b600c54339060ff168015611f9257506001600160a01b0381166000908152600d602052604090205460ff16155b15611fd4576040517ffdfbd75f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401610adf565b60005a9050600080611fe687876131be565b915091506000866060015163ffffffff166001600160401b0381111561200e5761200e614c91565b604051908082528060200260200182016040528015612037578160200160208202803683370190505b50905060005b876060015163ffffffff168110156120ab5760408051602081018590529081018290526060016040516020818303038152906040528051906020012060001c82828151811061208e5761208e614c7b565b6020908102919091010152806120a381614bd5565b91505061203d565b506000838152600960205260408082208290555181907f1fe543e300000000000000000000000000000000000000000000000000000000906120f39087908690602401614a20565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600a805468ff00000000000000001916600160401b179055908a015160808b015191925060009161218a9163ffffffff1690846134f7565b600a805468ff0000000000000000191690556020808c01516001600160401b0380821660009081526004909352604090922080549394509092600160601b900490911690600190600c6121dd8385614b2a565b92506101000a8154816001600160401b0302191690836001600160401b031602179055506000806122348b600a60000160099054906101000a900463ffffffff1663ffffffff1661222e8688610f29565b3a613545565b6001600160401b03861660009081526004602052604090205491935091506001600160601b03808416911610156122b0576001600160401b03841660009081526004602081905260409182902054915163215c1ca560e11b81526001600160601b03928316918101919091529083166024820152604401610adf565b6001600160401b038416600090815260046020526040812080548492906122e19084906001600160601b0316614bad565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555081600860008282829054906101000a90046001600160601b03166123299190614b55565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550897f4d7a29faba33a5ee8ebd66ef97d72ede06d65272b5ccb811b9e9919fec85f3758a8484896040516123a494939291909384526001600160601b0392909216602084015260408301521515606082015260800190565b60405180910390a2509d9c50505050505050505050505050565b6123c6612e34565b60c861ffff871611156124005760405163539c34bb60e11b815261ffff871660048201819052602482015260c86044820152606401610adf565b6040805160c0808201835261ffff898116808452908916602080850182905263ffffffff8a811686880181905260006060808901919091528b83166080808a018290526001600160601b038d1660a09a8b01819052600a805463ffffffff191690991762010000909802979097176cffffffffffffffffff0000000019166401000000009485026cffffffffff00000000000000001916176901000000000000000000909202919091177fffffffffffffff000000000000000000000000ffffffffffffffffffffffffff16600160681b909602959095179095558851600b8054948b01518b8b0151978c0151968c0151998c0151988c015160e08d01516101008e015194871667ffffffffffffffff1990981697909717918616909402177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b978516979097027fffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffff1696909617600160601b95841695909502949094177fffffffffffffffffff00000000000000ffffffffffffffffffffffffffffffff16600160801b97909216969096027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff1617600160a01b62ffffff95861602177fffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b958516959095027fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1694909417600160d01b94841694909402939093177cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160e81b929093169190910291909117815590517ffeb3f6e1a7ebd676d1b1238d4d1959ec0c121db9477e03da04fb472d1a62fe08916126b19189918991899189918991906148d2565b60405180910390a1505050505050565b6000816040516020016126d4919061486f565b604051602081830303815290604052805190602001209050919050565b6001600160401b03821660009081526003602052604090205482906001600160a01b03168061273357604051630fb532db60e11b815260040160405180910390fd5b336001600160a01b0382161461276757604051636c51fda960e11b81526001600160a01b0382166004820152602401610adf565b61277084612928565b156127a7576040517fb42f66e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bb28484612e90565b6127b9612e34565b6001600160a01b0381166000908152600d602052604090205460ff1615610a6a576001600160a01b0381166000818152600d6020908152604091829020805460ff1916905590519182527f2d7e880534abd297d1df91f3302c242626b0d3a6f9e56c754fe6df57e1658f2691015b60405180910390a150565b61283a612e34565b6001600160401b0382166000908152600360205260409020546001600160a01b031661287957604051630fb532db60e11b815260040160405180910390fd5b6001600160401b03919091166000908152600560205260409020805463ffffffff191663ffffffff909216919091179055565b6128b4612e34565b6001600160a01b0381166000908152600d602052604090205460ff16610a6a576001600160a01b0381166000818152600d6020908152604091829020805460ff1916600117905590519182527ffd9447b86d136a07b2d8a6ee0e0d0dd68e09d2797a4bc1a647842485b568503a9101612827565b6001600160401b0381166000908152600360209081526040808320815160608101835281546001600160a01b03908116825260018301541681850152600282018054845181870281018701865281815287969395860193909291908301828280156129bc57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161299e575b505050505081525050905060005b816040015151811015612b3e5760005b600754811015612b2b576000612af4600783815481106129fc576129fc614c7b565b906000526020600020015485604001518581518110612a1d57612a1d614c7b565b6020026020010151886002600089604001518981518110612a4057612a40614c7b565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081206001600160401b03808f16835293522054166040805160208082018790526001600160a01b0395909516818301526001600160401b039384166060820152919092166080808301919091528251808303909101815260a08201835280519084012060c082019490945260e080820185905282518083039091018152610100909101909152805191012091565b5060008181526009602052604090205490915015612b185750600195945050505050565b5080612b2381614bd5565b9150506129da565b5080612b3681614bd5565b9150506129ca565b5060009392505050565b612b50612e34565b6001600160a01b038116612b775760405163e6c4247b60e01b815260040160405180910390fd5b600880546001600160601b0316600160601b6001600160a01b038481168281029390931793849055604080519290940416815260208101919091527fda5065546f7a930eb72e2bb48b5a5040579a9586196caa583eae9333080e6e459101612827565b612be2612e34565b6001600160a01b038116612c385760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f00000000000000006044820152606401610adf565b610a6a8161359b565b600a54600160401b900460ff1615612c6c5760405163769dd35360e11b815260040160405180910390fd5b6008546001600160601b0380831691161015612cb25760085460405163215c1ca560e11b81526001600160601b0391821660048201529082166024820152604401610adf565b600854600160601b90046001600160a01b0316612ce25760405163e6c4247b60e01b815260040160405180910390fd5b60088054829190600090612d009084906001600160601b0316614bad565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600660088282829054906101000a90046001600160601b0316612d489190614bad565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555060006008600c9054906101000a90046001600160a01b03166001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d8060008114612dd7576040519150601f19603f3d011682016040523d82523d6000602084013e612ddc565b606091505b5050905080612e155760085460405163215c1ca560e11b81526001600160601b0391821660048201529083166024820152604401610adf565b5050565b612e21612e34565b600c805460ff1916911515919091179055565b6000546001600160a01b03163314612e8e5760405162461bcd60e51b815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610adf565b565b600a54600160401b900460ff1615612ebb5760405163769dd35360e11b815260040160405180910390fd5b6001600160401b0382166000908152600360209081526040808320815160608101835281546001600160a01b03908116825260018301541681850152600282018054845181870281018701865281815292959394860193830182828015612f4b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612f2d575b505050919092525050506001600160401b0380851660009081526004602090815260408083208151808301909252546001600160601b038116808352600160601b909104909416918101919091529293505b83604001515181101561301e576002600085604001518381518110612fc457612fc4614c7b565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081206001600160401b038a1682529092529020805467ffffffffffffffff191690558061301681614bd5565b915050612f9d565b506001600160401b038516600090815260036020526040812080546001600160a01b0319908116825560018201805490911690559061306060028301826141ec565b50506001600160401b038516600090815260046020526040902080546001600160a01b0319169055600680548291906008906130ad908490600160401b90046001600160601b0316614bad565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506000846001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d8060008114613127576040519150601f19603f3d011682016040523d82523d6000602084013e61312c565b606091505b505090508061316c5760065460405163215c1ca560e11b8152600160401b9091046001600160601b03908116600483015283166024820152604401610adf565b604080516001600160a01b03871681526001600160601b03841660208201526001600160401b038816917fe8ed5b475a5b5987aa9165e8731bb78043f39eee32ec5a1169a89e27fcd498159101611c90565b60008060006131d085600001516126c1565b90506000805b60075481101561321c5782600782815481106131f4576131f4614c7b565b9060005260206000200154141561320a57600191505b8061321481614bd5565b9150506131d6565b5080613257576040517f77f5b84c00000000000000000000000000000000000000000000000000000000815260048101839052602401610adf565b6080860151604051613276918491602001918252602082015260400190565b60408051601f19818403018152918152815160209283012060008181526009909352912054909450806132d5576040517f3688124a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85516020808801516040808a015160608b015160808c01519251613340968c9690959491019586526001600160401b03948516602087015292909316604085015263ffffffff90811660608501529190911660808301526001600160a01b031660a082015260c00190565b60405160208183030381529060405280519060200120811461338e576040517fd529142c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85516001600160401b031640806134a25786516040517fe9413d380000000000000000000000000000000000000000000000000000000081526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e9413d389060240160206040518083038186803b15801561342357600080fd5b505afa158015613437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345b919061447f565b9050806134a25786516040517f175dadad0000000000000000000000000000000000000000000000000000000081526001600160401b039091166004820152602401610adf565b60008860800151826040516020016134c4929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c90506134e98982613645565b955050505050509250929050565b60005a61138881101561350957600080fd5b61138881039050846040820482031161352157600080fd5b50823b61352d57600080fd5b60008083516020850160008789f190505b9392505050565b60008060005a6135558888614b12565b61355f9190614b96565b6135699085614b77565b9050600061358263ffffffff871664e8d4a51000614b77565b905061358e8183614b12565b9890975095505050505050565b6001600160a01b0381163314156135f45760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610adf565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60006136798360000151846020015185604001518660600151868860a001518960c001518a60e001518b61010001516136b0565b60038360200151604051602001613691929190614a0c565b60408051601f1981840301815291905280516020909101209392505050565b6136b9896138eb565b6137055760405162461bcd60e51b815260206004820152601a60248201527f7075626c6963206b6579206973206e6f74206f6e2063757276650000000000006044820152606401610adf565b61370e886138eb565b61375a5760405162461bcd60e51b815260206004820152601560248201527f67616d6d61206973206e6f74206f6e20637572766500000000000000000000006044820152606401610adf565b613763836138eb565b6137af5760405162461bcd60e51b815260206004820152601d60248201527f6347616d6d615769746e657373206973206e6f74206f6e2063757276650000006044820152606401610adf565b6137b8826138eb565b6138045760405162461bcd60e51b815260206004820152601c60248201527f73486173685769746e657373206973206e6f74206f6e206375727665000000006044820152606401610adf565b613810878a88876139c4565b61385c5760405162461bcd60e51b815260206004820152601960248201527f6164647228632a706b2b732a6729213d5f755769746e657373000000000000006044820152606401610adf565b60006138688a87613af9565b9050600061387b898b878b868989613b5d565b9050600061388c838d8d8a86613c89565b9050808a146138dd5760405162461bcd60e51b815260206004820152600d60248201527f696e76616c69642070726f6f66000000000000000000000000000000000000006044820152606401610adf565b505050505050505050505050565b80516000906401000003d019116139445760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420782d6f7264696e61746500000000000000000000000000006044820152606401610adf565b60208201516401000003d0191161399d5760405162461bcd60e51b815260206004820152601260248201527f696e76616c696420792d6f7264696e61746500000000000000000000000000006044820152606401610adf565b60208201516401000003d0199080096139bd8360005b6020020151613cc9565b1492915050565b60006001600160a01b038216613a1c5760405162461bcd60e51b815260206004820152600b60248201527f626164207769746e6573730000000000000000000000000000000000000000006044820152606401610adf565b602084015160009060011615613a3357601c613a36565b601b5b9050600070014551231950b75fc4402da1732fc9bebe1985876000602002015109865170014551231950b75fc4402da1732fc9bebe19918203925060009190890987516040805160008082526020820180845287905260ff88169282019290925260608101929092526080820183905291925060019060a0016020604051602081039080840390855afa158015613ad1573d6000803e3d6000fd5b5050604051601f1901516001600160a01b039081169088161495505050505050949350505050565b613b0161420a565b613b2e60018484604051602001613b1a9392919061484e565b604051602081830303815290604052613ced565b90505b613b3a816138eb565b6110ee578051604080516020810192909252613b569101613b1a565b9050613b31565b613b6561420a565b825186516401000003d0199081900691061415613bc45760405162461bcd60e51b815260206004820152601e60248201527f706f696e747320696e2073756d206d7573742062652064697374696e637400006044820152606401610adf565b613bcf878988613d3c565b613c1b5760405162461bcd60e51b815260206004820152601660248201527f4669727374206d756c20636865636b206661696c6564000000000000000000006044820152606401610adf565b613c26848685613d3c565b613c725760405162461bcd60e51b815260206004820152601760248201527f5365636f6e64206d756c20636865636b206661696c65640000000000000000006044820152606401610adf565b613c7d868484613e76565b98975050505050505050565b600060028686868587604051602001613ca7969594939291906147ef565b60408051601f1981840301815291905280516020909101209695505050505050565b6000806401000003d01980848509840990506401000003d019600782089392505050565b613cf561420a565b613cfe82613f3d565b8152613d13613d0e8260006139b3565b613f78565b602082018190526002900660011415613d37576020810180516401000003d0190390525b919050565b600082613d8b5760405162461bcd60e51b815260206004820152600b60248201527f7a65726f207363616c61720000000000000000000000000000000000000000006044820152606401610adf565b83516020850151600090613da190600290614c17565b15613dad57601c613db0565b601b5b9050600070014551231950b75fc4402da1732fc9bebe198387096040805160008082526020820180845281905260ff86169282019290925260608101869052608081018390529192509060019060a0016020604051602081039080840390855afa158015613e22573d6000803e3d6000fd5b505050602060405103519050600086604051602001613e4191906147dd565b60408051601f1981840301815291905280516020909101206001600160a01b0392831692169190911498975050505050505050565b613e7e61420a565b835160208086015185519186015160009384938493613e9f93909190613f98565b919450925090506401000003d019858209600114613eff5760405162461bcd60e51b815260206004820152601960248201527f696e765a206d75737420626520696e7665727365206f66207a000000000000006044820152606401610adf565b60405180604001604052806401000003d01980613f1e57613f1e614c4f565b87860981526020016401000003d0198785099052979650505050505050565b805160208201205b6401000003d0198110613d3757604080516020808201939093528151808203840181529082019091528051910120613f45565b60006110ee826002613f916401000003d0196001614b12565b901c614078565b60008080600180826401000003d019896401000003d019038808905060006401000003d0198b6401000003d019038a0890506000613fd88383858561411a565b9098509050613fe988828e8861413e565b9098509050613ffa88828c8761413e565b9098509050600061400d8d878b8561413e565b909850905061401e8882868661411a565b909850905061402f88828e8961413e565b9098509050818114614064576401000003d019818a0998506401000003d01982890997506401000003d0198183099650614068565b8196505b5050505050509450945094915050565b600080614083614228565b6020808252818101819052604082015260608101859052608081018490526401000003d01960a08201526140b5614246565b60208160c0846005600019fa9250826141105760405162461bcd60e51b815260206004820152600160248201527f35000000000000000000000000000000000000000000000000000000000000006044820152606401610adf565b5195945050505050565b6000806401000003d0198487096401000003d0198487099097909650945050505050565b600080806401000003d019878509905060006401000003d01987876401000003d019030990506401000003d0198183086401000003d01986890990999098509650505050505050565b8280548282559060005260206000209081019282156141dc579160200282015b828111156141dc57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906141a7565b506141e8929150614264565b5090565b5080546000825590600052602060002090810190610a6a9190614264565b60405180604001604052806002906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b808211156141e85760008155600101614265565b80356001600160a01b0381168114613d3757600080fd5b600082601f8301126142a157600080fd5b604051604081018181106001600160401b03821117156142c3576142c3614c91565b80604052508083856040860111156142da57600080fd5b60005b60028110156142fc5781358352602092830192909101906001016142dd565b509195945050505050565b600060a0828403121561431957600080fd5b60405160a081018181106001600160401b038211171561433b5761433b614c91565b60405290508061434a836143d0565b8152614358602084016143d0565b6020820152614369604084016143bc565b604082015261437a606084016143bc565b606082015261438b60808401614279565b60808201525092915050565b803561ffff81168114613d3757600080fd5b803562ffffff81168114613d3757600080fd5b803563ffffffff81168114613d3757600080fd5b80356001600160401b0381168114613d3757600080fd5b80356001600160601b0381168114613d3757600080fd5b60006020828403121561441057600080fd5b61353e82614279565b60006040828403121561442b57600080fd5b8260408301111561443b57600080fd5b50919050565b60006040828403121561445357600080fd5b61353e8383614290565b60006020828403121561446f57600080fd5b8135801515811461353e57600080fd5b60006020828403121561449157600080fd5b5051919050565b600080600080600060a086880312156144b057600080fd5b853594506144c0602087016143d0565b93506144ce60408701614397565b92506144dc606087016143bc565b91506144ea608087016143bc565b90509295509295909350565b60008082840361024081121561450b57600080fd5b6101a08082121561451b57600080fd5b614523614ae9565b915061452f8686614290565b825261453e8660408701614290565b60208301526080850135604083015260a0850135606083015260c0850135608083015261456d60e08601614279565b60a083015261010061458187828801614290565b60c0840152614594876101408801614290565b60e084015261018086013581840152508193506145b386828701614307565b925050509250929050565b6000806000806000808688036101c08112156145d957600080fd5b6145e288614397565b96506145f060208901614397565b95506145fe604089016143bc565b945061460c606089016143bc565b935061461a608089016143e7565b925061012080609f198301121561463057600080fd5b614638614ae9565b915061464660a08a016143bc565b825261465460c08a016143bc565b602083015261466560e08a016143bc565b6040830152610100614678818b016143bc565b6060840152614688828b016143bc565b608084015261469a6101408b016143a9565b60a08401526146ac6101608b016143a9565b60c08401526146be6101808b016143a9565b60e08401526146d06101a08b016143a9565b818401525050809150509295509295509295565b6000602082840312156146f657600080fd5b5035919050565b60006020828403121561470f57600080fd5b61353e826143d0565b6000806040838503121561472b57600080fd5b614734836143d0565b915061474260208401614279565b90509250929050565b6000806040838503121561475e57600080fd5b614767836143d0565b9150614742602084016143bc565b6000806040838503121561478857600080fd5b614791836143d0565b9150614742602084016143d0565b6000602082840312156147b157600080fd5b61353e826143e7565b8060005b6002811015610bb25781518452602093840193909101906001016147be565b6147e781836147ba565b604001919050565b8681526147ff60208201876147ba565b61480c60608201866147ba565b61481960a08201856147ba565b61482660e08201846147ba565b60609190911b6bffffffffffffffffffffffff19166101208201526101340195945050505050565b83815261485e60208201846147ba565b606081019190915260800192915050565b604081016110ee82846147ba565b600060208083528351808285015260005b818110156148aa5785810183015185820160400152820161488e565b818111156148bc576000604083870101525b50601f01601f1916929092016040019392505050565b61ffff8781168252861660208083019190915263ffffffff868116604084015285811660608401526001600160601b0385166080840152835480821660a08501529182901c811660c08401526101c083019161493b60e08501838360401c1663ffffffff169052565b6149536101008501838360601c1663ffffffff169052565b61496b6101208501838360801c1663ffffffff169052565b62ffffff60a082901c811661014086015260b882901c811661016086015260d082901c1661018085015260e81c6101a090930192909252979650505050505050565b60006060820161ffff86168352602063ffffffff86168185015260606040850152818551808452608086019150828701935060005b818110156149fe578451835293830193918301916001016149e2565b509098975050505050505050565b8281526060810161353e60208301846147ba565b6000604082018483526020604081850152818551808452606086019150828701935060005b81811015614a6157845183529383019391830191600101614a45565b5090979650505050505050565b6000608082016001600160601b038716835260206001600160401b038716818501526001600160a01b0380871660408601526080606086015282865180855260a087019150838801945060005b81811015614ad9578551841683529484019491840191600101614abb565b50909a9950505050505050505050565b60405161012081016001600160401b0381118282101715614b0c57614b0c614c91565b60405290565b60008219821115614b2557614b25614c39565b500190565b60006001600160401b03808316818516808303821115614b4c57614b4c614c39565b01949350505050565b60006001600160601b03808316818516808303821115614b4c57614b4c614c39565b6000816000190483118215151615614b9157614b91614c39565b500290565b600082821015614ba857614ba8614c39565b500390565b60006001600160601b0383811690831681811015614bcd57614bcd614c39565b039392505050565b6000600019821415614be957614be9614c39565b5060010190565b60006001600160401b0380831681811415614c0d57614c0d614c39565b6001019392505050565b600082614c3457634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212202458e2f26ba0dbe46e17a0bacea189a149c7d6babf13c3724326e092cb2c18cc64736f6c6343000806003300000000000000000000000076981541c1ebc393aff7a53179c59c56b152ab55