Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 10 from a total of 10 transactions
HIDE LOW VALUE
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Update Prices | 23969221 | 183 days ago | IN | 0 ETH | 0.00182545 | ||||
| Transfer Ownersh... | 23943965 | 187 days ago | IN | 0 ETH | 0.00000147 | ||||
| Transfer Ownersh... | 23943947 | 187 days ago | IN | 0 ETH | 0.00000085 | ||||
| Apply Dest Chain... | 23943699 | 187 days ago | IN | 0 ETH | 0.00000257 | ||||
| Apply Dest Chain... | 23943696 | 187 days ago | IN | 0 ETH | 0.00000217 | ||||
| Update Prices | 23943678 | 187 days ago | IN | 0 ETH | 0.00014156 | ||||
| Apply Token Tran... | 23943557 | 187 days ago | IN | 0 ETH | 0.0000616 | ||||
| Apply Dest Chain... | 23943548 | 187 days ago | IN | 0 ETH | 0.00000456 | ||||
| Apply Dest Chain... | 23943546 | 187 days ago | IN | 0 ETH | 0.00003321 | ||||
| Apply Authorized... | 23943415 | 187 days ago | IN | 0 ETH | 0.00000206 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API[{"inputs":[{"components":[{"internalType":"uint96","name":"maxFeeJuelsPerMsg","type":"uint96"},{"internalType":"address","name":"linkToken","type":"address"},{"internalType":"uint32","name":"tokenPriceStalenessThreshold","type":"uint32"}],"internalType":"struct FeeQuoter.StaticConfig","name":"staticConfig","type":"tuple"},{"internalType":"address[]","name":"priceUpdaters","type":"address[]"},{"internalType":"address[]","name":"feeTokens","type":"address[]"},{"components":[{"internalType":"address","name":"sourceToken","type":"address"},{"components":[{"internalType":"address","name":"dataFeedAddress","type":"address"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenPriceFeedConfig","name":"feedConfig","type":"tuple"}],"internalType":"struct FeeQuoter.TokenPriceFeedUpdate[]","name":"tokenPriceFeeds","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"address","name":"token","type":"address"},{"components":[{"internalType":"uint32","name":"minFeeUSDCents","type":"uint32"},{"internalType":"uint32","name":"maxFeeUSDCents","type":"uint32"},{"internalType":"uint16","name":"deciBps","type":"uint16"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint32","name":"destBytesOverhead","type":"uint32"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfig","name":"tokenTransferFeeConfig","type":"tuple"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfigSingleTokenArgs[]","name":"tokenTransferFeeConfigs","type":"tuple[]"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfigArgs[]","name":"tokenTransferFeeConfigArgs","type":"tuple[]"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"premiumMultiplierWeiPerEth","type":"uint64"}],"internalType":"struct FeeQuoter.PremiumMultiplierWeiPerEthArgs[]","name":"premiumMultiplierWeiPerEthArgs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"bool","name":"isEnabled","type":"bool"},{"internalType":"uint16","name":"maxNumberOfTokensPerMsg","type":"uint16"},{"internalType":"uint32","name":"maxDataBytes","type":"uint32"},{"internalType":"uint32","name":"maxPerMsgGasLimit","type":"uint32"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint8","name":"destGasPerPayloadByteBase","type":"uint8"},{"internalType":"uint8","name":"destGasPerPayloadByteHigh","type":"uint8"},{"internalType":"uint16","name":"destGasPerPayloadByteThreshold","type":"uint16"},{"internalType":"uint32","name":"destDataAvailabilityOverheadGas","type":"uint32"},{"internalType":"uint16","name":"destGasPerDataAvailabilityByte","type":"uint16"},{"internalType":"uint16","name":"destDataAvailabilityMultiplierBps","type":"uint16"},{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"},{"internalType":"bool","name":"enforceOutOfOrder","type":"bool"},{"internalType":"uint16","name":"defaultTokenFeeUSDCents","type":"uint16"},{"internalType":"uint32","name":"defaultTokenDestGasOverhead","type":"uint32"},{"internalType":"uint32","name":"defaultTxGasLimit","type":"uint32"},{"internalType":"uint64","name":"gasMultiplierWeiPerEth","type":"uint64"},{"internalType":"uint32","name":"gasPriceStalenessThreshold","type":"uint32"},{"internalType":"uint32","name":"networkFeeUSDCents","type":"uint32"}],"internalType":"struct FeeQuoter.DestChainConfig","name":"destChainConfig","type":"tuple"}],"internalType":"struct FeeQuoter.DestChainConfigArgs[]","name":"destChainConfigArgs","type":"tuple[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CannotTransferToSelf","type":"error"},{"inputs":[],"name":"DataFeedValueOutOfUint224Range","type":"error"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"DestinationChainNotEnabled","type":"error"},{"inputs":[],"name":"ExtraArgOutOfOrderExecutionMustBeTrue","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"FeeTokenNotSupported","type":"error"},{"inputs":[{"internalType":"bytes","name":"encodedAddress","type":"bytes"}],"name":"Invalid32ByteAddress","type":"error"},{"inputs":[{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"}],"name":"InvalidChainFamilySelector","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint32","name":"destBytesOverhead","type":"uint32"}],"name":"InvalidDestBytesOverhead","type":"error"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"InvalidDestChainConfig","type":"error"},{"inputs":[{"internalType":"bytes","name":"encodedAddress","type":"bytes"}],"name":"InvalidEVMAddress","type":"error"},{"inputs":[],"name":"InvalidExtraArgsData","type":"error"},{"inputs":[],"name":"InvalidExtraArgsTag","type":"error"},{"inputs":[{"internalType":"uint256","name":"minFeeUSDCents","type":"uint256"},{"internalType":"uint256","name":"maxFeeUSDCents","type":"uint256"}],"name":"InvalidFeeRange","type":"error"},{"inputs":[{"internalType":"uint64","name":"accountIsWritableBitmap","type":"uint64"},{"internalType":"uint256","name":"numAccounts","type":"uint256"}],"name":"InvalidSVMExtraArgsWritableBitmap","type":"error"},{"inputs":[],"name":"InvalidStaticConfig","type":"error"},{"inputs":[{"internalType":"bytes","name":"encodedAddress","type":"bytes"}],"name":"InvalidTVMAddress","type":"error"},{"inputs":[],"name":"InvalidTokenReceiver","type":"error"},{"inputs":[],"name":"MessageComputeUnitLimitTooHigh","type":"error"},{"inputs":[{"internalType":"uint256","name":"msgFeeJuels","type":"uint256"},{"internalType":"uint256","name":"maxFeeJuelsPerMsg","type":"uint256"}],"name":"MessageFeeTooHigh","type":"error"},{"inputs":[],"name":"MessageGasLimitTooHigh","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxSize","type":"uint256"},{"internalType":"uint256","name":"actualSize","type":"uint256"}],"name":"MessageTooLarge","type":"error"},{"inputs":[],"name":"MustBeProposedOwner","type":"error"},{"inputs":[],"name":"OnlyCallableByOwner","type":"error"},{"inputs":[],"name":"OwnerCannotBeZero","type":"error"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"address","name":"workflowOwner","type":"address"},{"internalType":"bytes10","name":"workflowName","type":"bytes10"},{"internalType":"bytes2","name":"reportName","type":"bytes2"}],"name":"ReportForwarderUnauthorized","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SourceTokenDataTooLarge","type":"error"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"uint256","name":"threshold","type":"uint256"},{"internalType":"uint256","name":"timePassed","type":"uint256"}],"name":"StaleGasPrice","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"TokenNotSupported","type":"error"},{"inputs":[{"internalType":"uint256","name":"numAccounts","type":"uint256"},{"internalType":"uint256","name":"maxAccounts","type":"uint256"}],"name":"TooManySVMExtraArgsAccounts","type":"error"},{"inputs":[{"internalType":"uint256","name":"numReceiverObjectIds","type":"uint256"},{"internalType":"uint256","name":"maxReceiverObjectIds","type":"uint256"}],"name":"TooManySuiExtraArgsReceiverObjectIds","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"UnauthorizedCaller","type":"error"},{"inputs":[{"internalType":"uint256","name":"numberOfTokens","type":"uint256"},{"internalType":"uint256","name":"maxNumberOfTokensPerMsg","type":"uint256"}],"name":"UnsupportedNumberOfTokens","type":"error"},{"inputs":[],"name":"ZeroAddressNotAllowed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"AuthorizedCallerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"AuthorizedCallerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"bool","name":"isEnabled","type":"bool"},{"internalType":"uint16","name":"maxNumberOfTokensPerMsg","type":"uint16"},{"internalType":"uint32","name":"maxDataBytes","type":"uint32"},{"internalType":"uint32","name":"maxPerMsgGasLimit","type":"uint32"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint8","name":"destGasPerPayloadByteBase","type":"uint8"},{"internalType":"uint8","name":"destGasPerPayloadByteHigh","type":"uint8"},{"internalType":"uint16","name":"destGasPerPayloadByteThreshold","type":"uint16"},{"internalType":"uint32","name":"destDataAvailabilityOverheadGas","type":"uint32"},{"internalType":"uint16","name":"destGasPerDataAvailabilityByte","type":"uint16"},{"internalType":"uint16","name":"destDataAvailabilityMultiplierBps","type":"uint16"},{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"},{"internalType":"bool","name":"enforceOutOfOrder","type":"bool"},{"internalType":"uint16","name":"defaultTokenFeeUSDCents","type":"uint16"},{"internalType":"uint32","name":"defaultTokenDestGasOverhead","type":"uint32"},{"internalType":"uint32","name":"defaultTxGasLimit","type":"uint32"},{"internalType":"uint64","name":"gasMultiplierWeiPerEth","type":"uint64"},{"internalType":"uint32","name":"gasPriceStalenessThreshold","type":"uint32"},{"internalType":"uint32","name":"networkFeeUSDCents","type":"uint32"}],"indexed":false,"internalType":"struct FeeQuoter.DestChainConfig","name":"destChainConfig","type":"tuple"}],"name":"DestChainAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"bool","name":"isEnabled","type":"bool"},{"internalType":"uint16","name":"maxNumberOfTokensPerMsg","type":"uint16"},{"internalType":"uint32","name":"maxDataBytes","type":"uint32"},{"internalType":"uint32","name":"maxPerMsgGasLimit","type":"uint32"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint8","name":"destGasPerPayloadByteBase","type":"uint8"},{"internalType":"uint8","name":"destGasPerPayloadByteHigh","type":"uint8"},{"internalType":"uint16","name":"destGasPerPayloadByteThreshold","type":"uint16"},{"internalType":"uint32","name":"destDataAvailabilityOverheadGas","type":"uint32"},{"internalType":"uint16","name":"destGasPerDataAvailabilityByte","type":"uint16"},{"internalType":"uint16","name":"destDataAvailabilityMultiplierBps","type":"uint16"},{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"},{"internalType":"bool","name":"enforceOutOfOrder","type":"bool"},{"internalType":"uint16","name":"defaultTokenFeeUSDCents","type":"uint16"},{"internalType":"uint32","name":"defaultTokenDestGasOverhead","type":"uint32"},{"internalType":"uint32","name":"defaultTxGasLimit","type":"uint32"},{"internalType":"uint64","name":"gasMultiplierWeiPerEth","type":"uint64"},{"internalType":"uint32","name":"gasPriceStalenessThreshold","type":"uint32"},{"internalType":"uint32","name":"networkFeeUSDCents","type":"uint32"}],"indexed":false,"internalType":"struct FeeQuoter.DestChainConfig","name":"destChainConfig","type":"tuple"}],"name":"DestChainConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeToken","type":"address"}],"name":"FeeTokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeToken","type":"address"}],"name":"FeeTokenRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint64","name":"premiumMultiplierWeiPerEth","type":"uint64"}],"name":"PremiumMultiplierWeiPerEthUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"components":[{"internalType":"address","name":"dataFeedAddress","type":"address"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"indexed":false,"internalType":"struct FeeQuoter.TokenPriceFeedConfig","name":"priceFeedConfig","type":"tuple"}],"name":"PriceFeedPerTokenUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"reportId","type":"bytes32"},{"components":[{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes10","name":"workflowName","type":"bytes10"},{"internalType":"bytes2","name":"reportName","type":"bytes2"},{"internalType":"address","name":"workflowOwner","type":"address"},{"internalType":"bool","name":"isAllowed","type":"bool"}],"indexed":false,"internalType":"struct KeystoneFeedsPermissionHandler.Permission","name":"permission","type":"tuple"}],"name":"ReportPermissionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"TokenTransferFeeConfigDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"components":[{"internalType":"uint32","name":"minFeeUSDCents","type":"uint32"},{"internalType":"uint32","name":"maxFeeUSDCents","type":"uint32"},{"internalType":"uint16","name":"deciBps","type":"uint16"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint32","name":"destBytesOverhead","type":"uint32"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"indexed":false,"internalType":"struct FeeQuoter.TokenTransferFeeConfig","name":"tokenTransferFeeConfig","type":"tuple"}],"name":"TokenTransferFeeConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UsdPerTokenUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"destChain","type":"uint64"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UsdPerUnitGasUpdated","type":"event"},{"inputs":[],"name":"FEE_BASE_DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KEYSTONE_PRICE_DECIMALS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address[]","name":"addedCallers","type":"address[]"},{"internalType":"address[]","name":"removedCallers","type":"address[]"}],"internalType":"struct AuthorizedCallers.AuthorizedCallerArgs","name":"authorizedCallerArgs","type":"tuple"}],"name":"applyAuthorizedCallerUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"bool","name":"isEnabled","type":"bool"},{"internalType":"uint16","name":"maxNumberOfTokensPerMsg","type":"uint16"},{"internalType":"uint32","name":"maxDataBytes","type":"uint32"},{"internalType":"uint32","name":"maxPerMsgGasLimit","type":"uint32"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint8","name":"destGasPerPayloadByteBase","type":"uint8"},{"internalType":"uint8","name":"destGasPerPayloadByteHigh","type":"uint8"},{"internalType":"uint16","name":"destGasPerPayloadByteThreshold","type":"uint16"},{"internalType":"uint32","name":"destDataAvailabilityOverheadGas","type":"uint32"},{"internalType":"uint16","name":"destGasPerDataAvailabilityByte","type":"uint16"},{"internalType":"uint16","name":"destDataAvailabilityMultiplierBps","type":"uint16"},{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"},{"internalType":"bool","name":"enforceOutOfOrder","type":"bool"},{"internalType":"uint16","name":"defaultTokenFeeUSDCents","type":"uint16"},{"internalType":"uint32","name":"defaultTokenDestGasOverhead","type":"uint32"},{"internalType":"uint32","name":"defaultTxGasLimit","type":"uint32"},{"internalType":"uint64","name":"gasMultiplierWeiPerEth","type":"uint64"},{"internalType":"uint32","name":"gasPriceStalenessThreshold","type":"uint32"},{"internalType":"uint32","name":"networkFeeUSDCents","type":"uint32"}],"internalType":"struct FeeQuoter.DestChainConfig","name":"destChainConfig","type":"tuple"}],"internalType":"struct FeeQuoter.DestChainConfigArgs[]","name":"destChainConfigArgs","type":"tuple[]"}],"name":"applyDestChainConfigUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"feeTokensToRemove","type":"address[]"},{"internalType":"address[]","name":"feeTokensToAdd","type":"address[]"}],"name":"applyFeeTokensUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"premiumMultiplierWeiPerEth","type":"uint64"}],"internalType":"struct FeeQuoter.PremiumMultiplierWeiPerEthArgs[]","name":"premiumMultiplierWeiPerEthArgs","type":"tuple[]"}],"name":"applyPremiumMultiplierWeiPerEthUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"address","name":"token","type":"address"},{"components":[{"internalType":"uint32","name":"minFeeUSDCents","type":"uint32"},{"internalType":"uint32","name":"maxFeeUSDCents","type":"uint32"},{"internalType":"uint16","name":"deciBps","type":"uint16"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint32","name":"destBytesOverhead","type":"uint32"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfig","name":"tokenTransferFeeConfig","type":"tuple"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfigSingleTokenArgs[]","name":"tokenTransferFeeConfigs","type":"tuple[]"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfigArgs[]","name":"tokenTransferFeeConfigArgs","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"address","name":"token","type":"address"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfigRemoveArgs[]","name":"tokensToUseDefaultFeeConfigs","type":"tuple[]"}],"name":"applyTokenTransferFeeConfigUpdates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromToken","type":"address"},{"internalType":"uint256","name":"fromTokenAmount","type":"uint256"},{"internalType":"address","name":"toToken","type":"address"}],"name":"convertTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllAuthorizedCallers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"getDestChainConfig","outputs":[{"components":[{"internalType":"bool","name":"isEnabled","type":"bool"},{"internalType":"uint16","name":"maxNumberOfTokensPerMsg","type":"uint16"},{"internalType":"uint32","name":"maxDataBytes","type":"uint32"},{"internalType":"uint32","name":"maxPerMsgGasLimit","type":"uint32"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint8","name":"destGasPerPayloadByteBase","type":"uint8"},{"internalType":"uint8","name":"destGasPerPayloadByteHigh","type":"uint8"},{"internalType":"uint16","name":"destGasPerPayloadByteThreshold","type":"uint16"},{"internalType":"uint32","name":"destDataAvailabilityOverheadGas","type":"uint32"},{"internalType":"uint16","name":"destGasPerDataAvailabilityByte","type":"uint16"},{"internalType":"uint16","name":"destDataAvailabilityMultiplierBps","type":"uint16"},{"internalType":"bytes4","name":"chainFamilySelector","type":"bytes4"},{"internalType":"bool","name":"enforceOutOfOrder","type":"bool"},{"internalType":"uint16","name":"defaultTokenFeeUSDCents","type":"uint16"},{"internalType":"uint32","name":"defaultTokenDestGasOverhead","type":"uint32"},{"internalType":"uint32","name":"defaultTxGasLimit","type":"uint32"},{"internalType":"uint64","name":"gasMultiplierWeiPerEth","type":"uint64"},{"internalType":"uint32","name":"gasPriceStalenessThreshold","type":"uint32"},{"internalType":"uint32","name":"networkFeeUSDCents","type":"uint32"}],"internalType":"struct FeeQuoter.DestChainConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"getDestinationChainGasPrice","outputs":[{"components":[{"internalType":"uint224","name":"value","type":"uint224"},{"internalType":"uint32","name":"timestamp","type":"uint32"}],"internalType":"struct Internal.TimestampedPackedUint224","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFeeTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getPremiumMultiplierWeiPerEth","outputs":[{"internalType":"uint64","name":"premiumMultiplierWeiPerEth","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStaticConfig","outputs":[{"components":[{"internalType":"uint96","name":"maxFeeJuelsPerMsg","type":"uint96"},{"internalType":"address","name":"linkToken","type":"address"},{"internalType":"uint32","name":"tokenPriceStalenessThreshold","type":"uint32"}],"internalType":"struct FeeQuoter.StaticConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint64","name":"destChainSelector","type":"uint64"}],"name":"getTokenAndGasPrices","outputs":[{"internalType":"uint224","name":"tokenPrice","type":"uint224"},{"internalType":"uint224","name":"gasPriceValue","type":"uint224"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenPrice","outputs":[{"components":[{"internalType":"uint224","name":"value","type":"uint224"},{"internalType":"uint32","name":"timestamp","type":"uint32"}],"internalType":"struct Internal.TimestampedPackedUint224","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenPriceFeedConfig","outputs":[{"components":[{"internalType":"address","name":"dataFeedAddress","type":"address"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenPriceFeedConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"getTokenPrices","outputs":[{"components":[{"internalType":"uint224","name":"value","type":"uint224"},{"internalType":"uint32","name":"timestamp","type":"uint32"}],"internalType":"struct Internal.TimestampedPackedUint224[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"address","name":"token","type":"address"}],"name":"getTokenTransferFeeConfig","outputs":[{"components":[{"internalType":"uint32","name":"minFeeUSDCents","type":"uint32"},{"internalType":"uint32","name":"maxFeeUSDCents","type":"uint32"},{"internalType":"uint16","name":"deciBps","type":"uint16"},{"internalType":"uint32","name":"destGasOverhead","type":"uint32"},{"internalType":"uint32","name":"destBytesOverhead","type":"uint32"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenTransferFeeConfig","name":"tokenTransferFeeConfig","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"bytes","name":"receiver","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"tokenAmounts","type":"tuple[]"},{"internalType":"address","name":"feeToken","type":"address"},{"internalType":"bytes","name":"extraArgs","type":"bytes"}],"internalType":"struct Client.EVM2AnyMessage","name":"message","type":"tuple"}],"name":"getValidatedFee","outputs":[{"internalType":"uint256","name":"feeTokenAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getValidatedTokenPrice","outputs":[{"internalType":"uint224","name":"","type":"uint224"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"metadata","type":"bytes"},{"internalType":"bytes","name":"report","type":"bytes"}],"name":"onReport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"address","name":"feeToken","type":"address"},{"internalType":"uint256","name":"feeTokenAmount","type":"uint256"},{"internalType":"bytes","name":"extraArgs","type":"bytes"},{"internalType":"bytes","name":"messageReceiver","type":"bytes"}],"name":"processMessageArgs","outputs":[{"internalType":"uint256","name":"msgFeeJuels","type":"uint256"},{"internalType":"bool","name":"isOutOfOrderExecution","type":"bool"},{"internalType":"bytes","name":"convertedExtraArgs","type":"bytes"},{"internalType":"bytes","name":"tokenReceiver","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"components":[{"internalType":"address","name":"sourcePoolAddress","type":"address"},{"internalType":"bytes","name":"destTokenAddress","type":"bytes"},{"internalType":"bytes","name":"extraData","type":"bytes"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"destExecData","type":"bytes"}],"internalType":"struct Internal.EVM2AnyTokenTransfer[]","name":"onRampTokenTransfers","type":"tuple[]"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Client.EVMTokenAmount[]","name":"sourceTokenAmounts","type":"tuple[]"}],"name":"processPoolReturnData","outputs":[{"internalType":"bytes[]","name":"destExecDataPerToken","type":"bytes[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes10","name":"workflowName","type":"bytes10"},{"internalType":"bytes2","name":"reportName","type":"bytes2"},{"internalType":"address","name":"workflowOwner","type":"address"},{"internalType":"bool","name":"isAllowed","type":"bool"}],"internalType":"struct KeystoneFeedsPermissionHandler.Permission[]","name":"permissions","type":"tuple[]"}],"name":"setReportPermissions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"typeAndVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"sourceToken","type":"address"},{"internalType":"uint224","name":"usdPerToken","type":"uint224"}],"internalType":"struct Internal.TokenPriceUpdate[]","name":"tokenPriceUpdates","type":"tuple[]"},{"components":[{"internalType":"uint64","name":"destChainSelector","type":"uint64"},{"internalType":"uint224","name":"usdPerUnitGas","type":"uint224"}],"internalType":"struct Internal.GasPriceUpdate[]","name":"gasPriceUpdates","type":"tuple[]"}],"internalType":"struct Internal.PriceUpdates","name":"priceUpdates","type":"tuple"}],"name":"updatePrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"sourceToken","type":"address"},{"components":[{"internalType":"address","name":"dataFeedAddress","type":"address"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"bool","name":"isEnabled","type":"bool"}],"internalType":"struct FeeQuoter.TokenPriceFeedConfig","name":"feedConfig","type":"tuple"}],"internalType":"struct FeeQuoter.TokenPriceFeedUpdate[]","name":"tokenPriceFeedUpdates","type":"tuple[]"}],"name":"updateTokenPriceFeeds","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60e0604052346110b2576174a0803803806100198161131e565b92833981019080820361012081126110b2576060136110b25761003a6112e0565b81516001600160601b03811681036110b257815261005a60208301611343565b906020810191825261006e60408401611357565b6040820190815260608401516001600160401b0381116110b2578561009491860161137f565b60808501519094906001600160401b0381116110b257866100b691830161137f565b60a08201519096906001600160401b0381116110b25782019080601f830112156110b25781516100ed6100e882611368565b61131e565b9260208085848152019260071b820101908382116110b257602001915b81831061126b5750505060c08301516001600160401b0381116110b25783019781601f8a0112156110b2578851986101446100e88b611368565b996020808c838152019160051b830101918483116110b25760208101915b838310611109575050505060e08401516001600160401b0381116110b25784019382601f860112156110b257845161019c6100e882611368565b9560208088848152019260061b820101908582116110b257602001915b8183106110cd57505050610100810151906001600160401b0382116110b2570182601f820112156110b2578051906101f36100e883611368565b9360206102808187868152019402830101918183116110b257602001925b828410610ef057505050503315610edf57600180546001600160a01b031916331790556020986102408a61131e565b976000895260003681376102526112ff565b998a52888b8b015260005b89518110156102c4576001906001600160a01b0361027b828d611418565b51168d61028782611604565b610294575b50500161025d565b7fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda7758091604051908152a1388d61028c565b508a985089519660005b885181101561033f576001600160a01b036102e9828b611418565b511690811561032e577feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef8c8361032060019561158c565b50604051908152a1016102ce565b6342bcdf7f60e11b60005260046000fd5b5081518a985089906001600160a01b0316158015610ecd575b8015610ebe575b610ead5791516001600160a01b031660a05290516001600160601b03166080525163ffffffff1660c0526103928661131e565b9360008552600036813760005b855181101561040e576001906103c76001600160a01b036103c0838a611418565b5116611499565b6103d2575b0161039f565b818060a01b036103e28289611418565b51167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f91600080a26103cc565b508694508560005b84518110156104855760019061043e6001600160a01b036104378389611418565b51166115cb565b610449575b01610416565b818060a01b036104598288611418565b51167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba23600080a2610443565b508593508460005b835181101561054757806104a360019286611418565b517fe6a7a17d710bf0b2cd05e5397dc6f97a5da4ee79e31e234bf5f965ee2bd9a5bf606089858060a01b038451169301518360005260078b5260406000209060ff878060a01b038251169283898060a01b03198254161781558d8301908151604082549501948460a81b8651151560a81b16918560a01b9060a01b169061ffff60a01b19161717905560405193845251168c8301525115156040820152a20161048d565b5091509160005b8251811015610b45576105618184611418565b51856001600160401b036105758487611418565b5151169101519080158015610b32575b8015610b14575b8015610a92575b610a7e57600081815260098852604090205460019392919060081b6001600160e01b03191661093657807f71e9302ab4e912a9678ae7f5a8542856706806f2817e1bf2a20b171e265cb4ad604051806106fc868291909161024063ffffffff8161026084019580511515855261ffff602082015116602086015282604082015116604086015282606082015116606086015282608082015116608086015260ff60a08201511660a086015260ff60c08201511660c086015261ffff60e08201511660e0860152826101008201511661010086015261ffff6101208201511661012086015261ffff610140820151166101408601528260e01b61016082015116610160860152610180810151151561018086015261ffff6101a0820151166101a0860152826101c0820151166101c0860152826101e0820151166101e086015260018060401b03610200820151166102008601528261022082015116610220860152015116910152565b0390a25b60005260098752826040600020825115158382549162ffff008c83015160081b169066ffffffff000000604084015160181b166affffffff00000000000000606085015160381b16926effffffff0000000000000000000000608086015160581b169260ff60781b60a087015160781b169460ff60801b60c088015160801b169161ffff60881b60e089015160881b169063ffffffff60981b6101008a015160981b169361ffff60b81b6101208b015160b81b169661ffff60c81b6101408c015160c81b169963ffffffff60d81b6101608d015160081c169b61018060ff60f81b910151151560f81b169c8f8060f81b039a63ffffffff60d81b199961ffff60c81b199861ffff60b81b199763ffffffff60981b199661ffff60881b199560ff60801b199460ff60781b19936effffffff0000000000000000000000199260ff6affffffff000000000000001992169066ffffffffffffff19161716171617161716171617161716171617161716179063ffffffff60d81b1617178155019061ffff6101a0820151169082549165ffffffff00006101c083015160101b169269ffffffff0000000000006101e084015160301b166a01000000000000000000008860901b0361020085015160501b169263ffffffff60901b61022086015160901b169461024063ffffffff60b01b91015160b01b169563ffffffff60b01b199363ffffffff60901b19926a01000000000000000000008c60901b0319918c8060501b03191617161716171617171790550161054e565b807f2431cc0363f2f66b21782c7e3d54dd9085927981a21bd0cc6be45a51b19689e360405180610a76868291909161024063ffffffff8161026084019580511515855261ffff602082015116602086015282604082015116604086015282606082015116606086015282608082015116608086015260ff60a08201511660a086015260ff60c08201511660c086015261ffff60e08201511660e0860152826101008201511661010086015261ffff6101208201511661012086015261ffff610140820151166101408601528260e01b61016082015116610160860152610180810151151561018086015261ffff6101a0820151166101a0860152826101c0820151166101c0860152826101e0820151166101e086015260018060401b03610200820151166102008601528261022082015116610220860152015116910152565b0390a2610700565b63c35aa79d60e01b60005260045260246000fd5b5063ffffffff60e01b61016083015116630a04b54b60e21b8114159081610b02575b81610af0575b81610ade575b81610acc575b50610593565b63647e2ba960e01b1415905088610ac6565b63c4e0595360e01b8114159150610ac0565b632b1dfffb60e21b8114159150610aba565b6307842f7160e21b8114159150610ab4565b5063ffffffff6101e08301511663ffffffff6060840151161061058c565b5063ffffffff6101e08301511615610585565b84828560005b8151811015610bcb576001906001600160a01b03610b698285611418565b5151167fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d86848060401b0381610b9f8689611418565b510151168360005260088252604060002081878060401b0319825416179055604051908152a201610b4b565b83600184610bd88361131e565b9060008252600092610ea8575b909282935b8251851015610de757610bfd8584611418565b5180516001600160401b0316939083019190855b83518051821015610dd657610c27828792611418565b51015184516001600160a01b0390610c40908490611418565b5151169063ffffffff815116908781019163ffffffff8351169081811015610dc15750506080810163ffffffff815116898110610daa575090899291838c52600a8a5260408c20600160a01b6001900386168d528a5260408c2092825163ffffffff169380549180518d1b67ffffffff0000000016916040860192835160401b69ffff000000000000000016966060810195865160501b6dffffffff00000000000000000000169063ffffffff60701b895160701b169260a001998b60ff60901b8c51151560901b169560ff60901b199363ffffffff60701b19926dffffffff000000000000000000001991600160501b60019003191617161716171617171790556040519586525163ffffffff168c8601525161ffff1660408501525163ffffffff1660608401525163ffffffff16608083015251151560a082015260c07f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b591a3600101610c11565b6312766e0160e11b8c52600485905260245260448bfd5b6305a7b3d160e11b8c5260045260245260448afd5b505060019096019593509050610bea565b9150825b8251811015610e69576001906001600160401b03610e098286611418565b515116828060a01b0384610e1d8488611418565b5101511690808752600a855260408720848060a01b038316885285528660408120557f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b8780a301610deb565b604051615e07908161169982396080518181816105a20152610bfc015260a0518181816105d80152610bad015260c0518181816105ff01526137680152f35b610be5565b63d794ef9560e01b60005260046000fd5b5063ffffffff8251161561035f565b5080516001600160601b031615610358565b639b15e16f60e01b60005260046000fd5b83820361028081126110b257610260610f076112ff565b91610f11876113f5565b8352601f1901126110b2576040519161026083016001600160401b038111848210176110b757604052610f46602087016113e8565b8352610f5460408701611409565b6020840152610f6560608701611357565b6040840152610f7660808701611357565b6060840152610f8760a08701611357565b6080840152610f9860c087016113da565b60a0840152610fa960e087016113da565b60c0840152610fbb6101008701611409565b60e0840152610fcd6101208701611357565b610100840152610fe06101408701611409565b610120840152610ff36101608701611409565b610140840152610180860151916001600160e01b0319831683036110b2578360209361016061028096015261102b6101a089016113e8565b61018082015261103e6101c08901611409565b6101a08201526110516101e08901611357565b6101c08201526110646102008901611357565b6101e082015261107761022089016113f5565b61020082015261108a6102408901611357565b61022082015261109d6102608901611357565b61024082015283820152815201930192610211565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6040838703126110b25760206040916110e46112ff565b6110ed86611343565b81526110fa8387016113f5565b838201528152019201916101b9565b82516001600160401b0381116110b25782016040818803601f1901126110b2576111316112ff565b9061113e602082016113f5565b825260408101516001600160401b0381116110b257602091010187601f820112156110b25780516111716100e882611368565b91602060e08185858152019302820101908a82116110b257602001915b8183106111ad5750505091816020938480940152815201920191610162565b828b0360e081126110b25760c06111c26112ff565b916111cc86611343565b8352601f1901126110b2576040519160c08301916001600160401b038311848410176110b75760e093602093604052611206848801611357565b815261121460408801611357565b8482015261122460608801611409565b604082015261123560808801611357565b606082015261124660a08801611357565b608082015261125760c088016113e8565b60a08201528382015281520192019161118e565b828403608081126110b25760606112806112ff565b9161128a86611343565b8352601f1901126110b2576080916020916112a36112e0565b6112ae848801611343565b81526112bc604088016113da565b848201526112cc606088016113e8565b60408201528382015281520192019161010a565b60405190606082016001600160401b038111838210176110b757604052565b60408051919082016001600160401b038111838210176110b757604052565b6040519190601f01601f191682016001600160401b038111838210176110b757604052565b51906001600160a01b03821682036110b257565b519063ffffffff821682036110b257565b6001600160401b0381116110b75760051b60200190565b9080601f830112156110b25781516113996100e882611368565b9260208085848152019260051b8201019283116110b257602001905b8282106113c25750505090565b602080916113cf84611343565b8152019101906113b5565b519060ff821682036110b257565b519081151582036110b257565b51906001600160401b03821682036110b257565b519061ffff821682036110b257565b805182101561142c5760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b805482101561142c5760005260206000200190600090565b805480156114835760001901906114718282611442565b8154906000199060031b1b1916905555565b634e487b7160e01b600052603160045260246000fd5b6000818152600c6020526040902054801561155a57600019810181811161154457600b54600019810191908211611544578181036114f3575b5050506114df600b61145a565b600052600c60205260006040812055600190565b61152c61150461151593600b611442565b90549060031b1c928392600b611442565b819391549060031b91821b91600019901b19161790565b9055600052600c6020526040600020553880806114d2565b634e487b7160e01b600052601160045260246000fd5b5050600090565b805490680100000000000000008210156110b7578161151591600161158894018155611442565b9055565b806000526003602052604060002054156000146115c5576115ae816002611561565b600254906000526003602052604060002055600190565b50600090565b80600052600c602052604060002054156000146115c5576115ed81600b611561565b600b5490600052600c602052604060002055600190565b600081815260036020526040902054801561155a576000198101818111611544576002546000198101919082116115445780820361165e575b50505061164a600261145a565b600052600360205260006040812055600190565b61168061166f611515936002611442565b90549060031b1c9283926002611442565b9055600052600360205260406000205538808061163d56fe6080604052600436101561001257600080fd5b60003560e01c806241e5be1461021657806301447eaa1461021157806301ffc9a71461020c578063061877e31461020757806306285c6914610202578063181f5a77146101fd5780632451a627146101f8578063325c868e146101f35780633937306f146101ee5780633a49bb49146101e957806341ed29e7146101e457806345ac924d146101df5780634ab35b0b146101da578063514e8cff146101d55780636def4ce7146101d0578063770e2dc4146101cb57806379ba5097146101c65780637afac322146101c1578063805f2132146101bc57806382b49eb0146101b757806387b8d879146101b25780638da5cb5b146101ad57806391a2749a146101a8578063a69c64c0146101a3578063bf78e03f1461019e578063cdc73d5114610199578063d02641a014610194578063d63d3af21461018f578063d8694ccd1461018a578063f2fde38b14610185578063fbe3f778146101805763ffdb4b371461017b57600080fd5b6125ed565b6124f0565b612434565b612001565b611fe5565b611f9c565b611f25565b611e7f565b611dc6565b611d32565b611d0b565b611aef565b611972565b6116d7565b61159e565b611486565b611285565b611106565b610f47565b610f0f565b610e46565b610cb1565b610b3b565b610861565b610845565b6107c2565b610720565b610566565b61051e565b610464565b6103b0565b61023e565b6001600160a01b0381160361022c57565b600080fd5b359061023c8261021b565b565b3461022c57606060031936011261022c5760206102756004356102608161021b565b602435604435916102708361021b565b612781565b604051908152f35b6004359067ffffffffffffffff8216820361022c57565b6024359067ffffffffffffffff8216820361022c57565b359067ffffffffffffffff8216820361022c57565b9181601f8401121561022c5782359167ffffffffffffffff831161022c576020808501948460051b01011161022c57565b919082519283825260005b84811061031d575050601f19601f8460006020809697860101520116010190565b806020809284010151828286010152016102fc565b602081016020825282518091526040820191602060408360051b8301019401926000915b83831061036557505050505090565b90919293946020806103a1837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102f1565b97019301930191939290610356565b3461022c57606060031936011261022c576103c961027d565b60243567ffffffffffffffff811161022c576103e99036906004016102c0565b6044929192359167ffffffffffffffff831161022c573660238401121561022c5782600401359167ffffffffffffffff831161022c573660248460061b8601011161022c5761044b94602461043f950192612958565b60405191829182610332565b0390f35b35906001600160e01b03198216820361022c57565b3461022c57602060031936011261022c576004356001600160e01b0319811680910361022c57807f805f213200000000000000000000000000000000000000000000000000000000602092149081156104f4575b81156104ca575b506040519015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386104bf565b7f66792e8000000000000000000000000000000000000000000000000000000000811491506104b8565b3461022c57602060031936011261022c576001600160a01b036004356105438161021b565b166000526008602052602067ffffffffffffffff60406000205416604051908152f35b3461022c57600060031936011261022c5761057f612b71565b50606060405161058e8161064d565b63ffffffff6bffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016918281526001600160a01b0360406020830192827f00000000000000000000000000000000000000000000000000000000000000001684520191837f00000000000000000000000000000000000000000000000000000000000000001683526040519485525116602084015251166040820152f35b634e487b7160e01b600052604160045260246000fd5b6060810190811067ffffffffffffffff82111761066957604052565b610637565b60a0810190811067ffffffffffffffff82111761066957604052565b6040810190811067ffffffffffffffff82111761066957604052565b60c0810190811067ffffffffffffffff82111761066957604052565b6080810190811067ffffffffffffffff82111761066957604052565b90601f601f19910116810190811067ffffffffffffffff82111761066957604052565b6040519061023c6040836106de565b6040519061023c610260836106de565b3461022c57600060031936011261022c5761044b604080519061074381836106de565b600f82527f46656551756f74657220312e362e3300000000000000000000000000000000006020830152519182916020835260208301906102f1565b602060408183019282815284518094520192019060005b8181106107a35750505090565b82516001600160a01b0316845260209384019390920191600101610796565b3461022c57600060031936011261022c5760405180602060025491828152019060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9060005b81811061082f5761044b85610823818703826106de565b6040519182918261077f565b825484526020909301926001928301920161080c565b3461022c57600060031936011261022c57602060405160248152f35b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c5780600401906040600319823603011261022c5761089f613bee565b6108a98280612b90565b4263ffffffff1692915060005b818110610a02575050602401906108cd8284612b90565b92905060005b8381106108dc57005b806108fb6108f66001936108f0868a612b90565b90612811565b612c11565b7fdd84a3fa9ef9409f550d54d6affec7e9c480c878c6ab27b78912a03e1b371c6e67ffffffffffffffff6109de6109d060208501946109c261094487516001600160e01b031690565b61095e61094f610701565b6001600160e01b039092168252565b63ffffffff8c16602082015261099961097f845167ffffffffffffffff1690565b67ffffffffffffffff166000526005602052604060002090565b815160209092015160e01b6001600160e01b0319166001600160e01b0392909216919091179055565b5167ffffffffffffffff1690565b93516001600160e01b031690565b604080516001600160e01b039290921682524260208301529190931692a2016108d3565b80610a1b610a166001936108f08980612b90565b612bda565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a6001600160a01b03610ab46109d06020850194610aa7610a6387516001600160e01b031690565b610a6e61094f610701565b63ffffffff8d166020820152610999610a8e84516001600160a01b031690565b6001600160a01b03166000526006602052604060002090565b516001600160a01b031690565b604080516001600160e01b039290921682524260208301529190931692a2016108b6565b9181601f8401121561022c5782359167ffffffffffffffff831161022c576020838186019501011161022c57565b92610b389492610b2a928552151560208501526080604085015260808401906102f1565b9160608184039101526102f1565b90565b3461022c5760a060031936011261022c57610b5461027d565b60243590610b618261021b565b6044359160643567ffffffffffffffff811161022c57610b85903690600401610ad8565b93909160843567ffffffffffffffff811161022c57610ba8903690600401610ad8565b9290917f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0382166001600160a01b03821614600014610c74575050935b6bffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016808611610c43575091610c34939161044b9693613c32565b90939160405194859485610b06565b857f6a92a4830000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b91610c7e92612781565b93610bed565b67ffffffffffffffff81116106695760051b60200190565b8015150361022c57565b359061023c82610c9c565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590610cee82610c84565b90610cfc60405192836106de565b828252602460a06020840194028201019036821161022c57602401925b818410610d2b57610d2983612c36565b005b60a08436031261022c5760405190610d428261066e565b8435610d4d8161021b565b825260208501357fffffffffffffffffffff000000000000000000000000000000000000000000008116810361022c5760208301526040850135907fffff0000000000000000000000000000000000000000000000000000000000008216820361022c5782602092604060a0950152610dc860608801610231565b6060820152610dd960808801610ca6565b6080820152815201930192610d19565b602060408183019282815284518094520192019060005b818110610e0d5750505090565b9091926020604082610e3b600194885163ffffffff602080926001600160e01b038151168552015116910152565b019401929101610e00565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c57610e779036906004016102c0565b610e8081610c84565b91610e8e60405193846106de565b818352601f19610e9d83610c84565b0160005b818110610ef857505060005b82811015610eea57600190610ece610ec98260051b8501612826565b613714565b610ed88287612944565b52610ee38186612944565b5001610ead565b6040518061044b8682610de9565b602090610f03612d76565b82828801015201610ea1565b3461022c57602060031936011261022c576020610f36600435610f318161021b565b613a02565b6001600160e01b0360405191168152f35b3461022c57602060031936011261022c5767ffffffffffffffff610f6961027d565b610f71612d76565b50166000526005602052604060002060405190610f8d8261068a565b546001600160e01b038116825260e01c6020820152604051809161044b82604081019263ffffffff602080926001600160e01b038151168552015116910152565b61023c9092919261024080610260830195610feb84825115159052565b60208181015161ffff169085015260408181015163ffffffff169085015260608181015163ffffffff169085015260808181015163ffffffff169085015260a08181015160ff169085015260c08181015160ff169085015260e08181015161ffff16908501526101008181015163ffffffff16908501526101208181015161ffff16908501526101408181015161ffff1690850152610160818101516001600160e01b03191690850152610180818101511515908501526101a08181015161ffff16908501526101c08181015163ffffffff16908501526101e08181015163ffffffff16908501526102008181015167ffffffffffffffff16908501526102208181015163ffffffff1690850152015163ffffffff16910152565b3461022c57602060031936011261022c5761044b6111c96111c461112861027d565b6000610240611135610710565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a0820152826101c0820152826101e08201528261020082015282610220820152015267ffffffffffffffff166000526009602052604060002090565b612db4565b60405191829182610fce565b359063ffffffff8216820361022c57565b359061ffff8216820361022c57565b81601f8201121561022c5780359061120c82610c84565b9261121a60405194856106de565b82845260208085019360061b8301019181831161022c57602001925b828410611244575050505090565b60408483031261022c576020604091825161125e8161068a565b611267876102ab565b8152828701356112768161021b565b83820152815201930192611236565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c5780600401356112c181610c84565b916112cf60405193846106de565b8183526024602084019260051b8201019036821161022c5760248101925b82841061131e576024358567ffffffffffffffff821161022c57611318610d299236906004016111f5565b90612f0a565b833567ffffffffffffffff811161022c5782016040602319823603011261022c576040519061134c8261068a565b611358602482016102ab565b8252604481013567ffffffffffffffff811161022c57602491010136601f8201121561022c57803561138981610c84565b9161139760405193846106de565b818352602060e081850193028201019036821161022c57602001915b8183106113d257505050918160209384809401528152019301926112ed565b82360360e0811261022c5760c0601f19604051926113ef8461068a565b86356113fa8161021b565b8452011261022c5760e091602091604051611414816106a6565b61141f8488016111d5565b815261142d604088016111d5565b8482015261143d606088016111e6565b604082015261144e608088016111d5565b606082015261145f60a088016111d5565b608082015260c087013561147281610c9c565b60a0820152838201528152019201916113b3565b3461022c57600060031936011261022c576000546001600160a01b038116330361150d577fffffffffffffffffffffffff0000000000000000000000000000000000000000600154913382841617600155166000556001600160a01b033391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f02b543c60000000000000000000000000000000000000000000000000000000060005260046000fd5b9080601f8301121561022c57813561154e81610c84565b9261155c60405194856106de565b81845260208085019260051b82010192831161022c57602001905b8282106115845750505090565b6020809183356115938161021b565b815201910190611577565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c576115cf903690600401611537565b60243567ffffffffffffffff811161022c576115ef903690600401611537565b906115f8613e27565b60005b8151811015611667578061161c611617610aa760019486612944565b615b03565b611627575b016115fb565b6001600160a01b0361163c610aa78386612944565b167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f91600080a2611621565b8260005b8151811015610d29578061168c611687610aa760019486612944565b615b17565b611697575b0161166b565b6001600160a01b036116ac610aa78386612944565b167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba23600080a2611691565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c57611708903690600401610ad8565b6024359167ffffffffffffffff831161022c5761176161175961173f611735611769963690600401610ad8565b94909536916128a3565b90604082015190605e604a84015160601c93015191929190565b919033613fb9565b8101906131b9565b60005b8151811015610d29576117b46117af6117966117888486612944565b51516001600160a01b031690565b6001600160a01b03166000526007602052604060002090565b613278565b6117c86117c46040830151151590565b1590565b61192957906118136117e06020600194015160ff1690565b61180d61180160206117f28689612944565b5101516001600160e01b031690565b6001600160e01b031690565b9061408b565b61182e60406118228487612944565b51015163ffffffff1690565b63ffffffff611859611850611849610a8e611788888b612944565b5460e01c90565b63ffffffff1690565b911610611923576118a761187260406118228588612944565b61189761187d610701565b6001600160e01b03851681529163ffffffff166020830152565b610999610a8e6117888689612944565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a6001600160a01b036118dd6117888588612944565b6119196118ef6040611822888b612944565b60405193849316958390929163ffffffff6020916001600160e01b03604085019616845216910152565b0390a25b0161176c565b5061191d565b61196e6119396117888486612944565b7f06439c6b000000000000000000000000000000000000000000000000000000006000526001600160a01b0316600452602490565b6000fd5b3461022c57604060031936011261022c5761044b6119fa61199161027d565b67ffffffffffffffff602435916119a78361021b565b600060a06040516119b7816106a6565b828152826020820152826040820152826060820152826080820152015216600052600a6020526040600020906001600160a01b0316600052602052604060002090565b611a76611a6d60405192611a0d846106a6565b5463ffffffff8116845263ffffffff8160201c16602085015261ffff8160401c166040850152611a54611a478263ffffffff9060501c1690565b63ffffffff166060860152565b63ffffffff607082901c16608085015260901c60ff1690565b151560a0830152565b6040519182918291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b60ff81160361022c57565b359061023c82611ad9565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590611b2c82610c84565b90611b3a60405192836106de565b82825260246102806020840194028201019036821161022c57602401925b818410611b6857610d29836132ae565b833603610280811261022c57610260601f1960405192611b878461068a565b611b90886102ab565b8452011261022c5761028091602091611ba7610710565b611bb2848901610ca6565b8152611bc0604089016111e6565b84820152611bd0606089016111d5565b6040820152611be1608089016111d5565b6060820152611bf260a089016111d5565b6080820152611c0360c08901611ae4565b60a0820152611c1460e08901611ae4565b60c0820152611c2661010089016111e6565b60e0820152611c3861012089016111d5565b610100820152611c4b61014089016111e6565b610120820152611c5e61016089016111e6565b610140820152611c71610180890161044f565b610160820152611c846101a08901610ca6565b610180820152611c976101c089016111e6565b6101a0820152611caa6101e089016111d5565b6101c0820152611cbd61020089016111d5565b6101e0820152611cd061022089016102ab565b610200820152611ce361024089016111d5565b610220820152611cf661026089016111d5565b61024082015283820152815201930192611b58565b3461022c57600060031936011261022c5760206001600160a01b0360015416604051908152f35b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c576040600319823603011261022c57604051611d6f8161068a565b816004013567ffffffffffffffff811161022c57611d939060043691850101611537565b8152602482013567ffffffffffffffff811161022c57610d29926004611dbc9236920101611537565b60208201526134e6565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590611e0382610c84565b90611e1160405192836106de565b8282526024602083019360061b8201019036821161022c57602401925b818410611e3e57610d2983613638565b60408436031261022c5760206040918251611e588161068a565b8635611e638161021b565b8152611e708388016102ab565b83820152815201930192611e2e565b3461022c57602060031936011261022c576001600160a01b03600435611ea48161021b565b611eac612b71565b5016600052600760205261044b604060002060ff60405191611ecd8361064d565b546001600160a01b0381168352818160a01c16602084015260a81c16151560408201526040519182918291909160408060608301946001600160a01b03815116845260ff602082015116602085015201511515910152565b3461022c57600060031936011261022c57604051806020600b54918281520190600b6000527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99060005b818110611f865761044b85610823818703826106de565b8254845260209093019260019283019201611f6f565b3461022c57602060031936011261022c576040611fbe600435610ec98161021b565b611fe38251809263ffffffff602080926001600160e01b038151168552015116910152565bf35b3461022c57600060031936011261022c57602060405160128152f35b3461022c57604060031936011261022c5761201a61027d565b60243567ffffffffffffffff811161022c578060040160a0600319833603011261022c5761205f6111c48467ffffffffffffffff166000526009602052604060002090565b9161206d6117c48451151590565b6123fc57606481016120a36117c461208483612826565b6001600160a01b03166000526001600b01602052604060002054151590565b6123bb578390604483016120b78186612b90565b9590506120c581858a61496a565b926120d2610f3182612826565b9788936120f06120ea61022084015163ffffffff1690565b8c614f9e565b9a6000808b1561238257505061218861215561ffff8561217a99612161999896612195966121396101c061212d6101a061219b9d015161ffff1690565b95015163ffffffff1690565b61214c6121458b612826565b938d612b90565b9690951661508f565b98919897909894612826565b6001600160a01b03166000526008602052604060002090565b5467ffffffffffffffff1690565b67ffffffffffffffff1690565b9061274e565b9560009761ffff6121b261014089015161ffff1690565b16612324575b509461219561218861020061228a61044b9d6dffffffffffffffffffffffffffff6122826122a29f9e9b61227d6001600160e01b039f9b9c61229a9f61227d9e63ffffffff61221161227d9f602461221b950190612870565b929050169061385a565b908b60a0810161223e612238612232835160ff1690565b60ff1690565b8561274e565b9360e0830191612250835161ffff1690565b9061ffff821683116122b2575b505050506080015161227d916118509163ffffffff16613898565b613898565b61385a565b91169061274e565b93015167ffffffffffffffff1690565b911690612761565b6040519081529081906020820190565b61185094965061227d959361ffff612313612302612278966122fc6122f56122ec60809960ff6122e661231a9b5160ff1690565b16613867565b965161ffff1690565b61ffff1690565b90613707565b61219561223260c08d015160ff1690565b911661385a565b959383955061225d565b9095949897508261234a8b989495986dffffffffffffffffffffffffffff9060701c1690565b6dffffffffffffffffffffffffffff16916123686024890185612870565b90506123749388615294565b9697939438969392966121b8565b9594925095505061219561218861217a6121616123b56123b061185061024061219b99015163ffffffff1690565b6126c3565b94612826565b6123c761196e91612826565b7f2502348c000000000000000000000000000000000000000000000000000000006000526001600160a01b0316600452602490565b7f99ac52f20000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff841660045260246000fd5b3461022c57602060031936011261022c576001600160a01b036004356124598161021b565b612461613e27565b163381146124c657807fffffffffffffffffffffffff000000000000000000000000000000000000000060005416176000556001600160a01b03600154167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278600080a3005b7fdad89dca0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c5780600401359061252d82610c84565b9061253b60405192836106de565b8282526024602083019360071b8201019036821161022c57602401925b81841061256857610d29836138b2565b8336036080811261022c576060601f19604051926125858461068a565b87356125908161021b565b8452011261022c576080916020916040516125aa8161064d565b838801356125b78161021b565b815260408801356125c781611ad9565b8482015260608801356125d981610c9c565b604082015283820152815201930192612558565b3461022c57604060031936011261022c5760043561260a8161021b565b612612610294565b9067ffffffffffffffff82169182600052600960205260ff604060002054161561267f5761264261266392613a02565b92600052600960205263ffffffff60016040600020015460901c1690614f9e565b604080516001600160e01b039384168152919092166020820152f35b827f99ac52f20000000000000000000000000000000000000000000000000000000060005260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b90662386f26fc10000820291808304662386f26fc1000014901517156126e557565b6126ad565b908160051b91808304602014901517156126e557565b9061012c82029180830461012c14901517156126e557565b90606c820291808304606c14901517156126e557565b90655af3107a4000820291808304655af3107a400014901517156126e557565b818102929181159184041417156126e557565b811561276b570490565b634e487b7160e01b600052601260045260246000fd5b6127ab6127a5610b3894936001600160e01b0361279e8195613a02565b169061274e565b92613a02565b1690612761565b906127bc82610c84565b6127c960405191826106de565b828152601f196127d98294610c84565b019060005b8281106127ea57505050565b8060606020809385010152016127de565b634e487b7160e01b600052603260045260246000fd5b91908110156128215760061b0190565b6127fb565b35610b388161021b565b91908110156128215760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618136030182121561022c570190565b903590601e198136030182121561022c570180359067ffffffffffffffff821161022c5760200191813603831361022c57565b92919267ffffffffffffffff821161066957604051916128cd601f8201601f1916602001846106de565b82948184528183011161022c578281602093846000960137010152565b9061023c6040516128fa816106a6565b925463ffffffff8082168552602082811c821690860152604082811c61ffff1690860152605082901c81166060860152607082901c16608085015260901c60ff16151560a0840152565b80518210156128215760209160051b010190565b90929161298d61297c8367ffffffffffffffff166000526009602052604060002090565b5460081b6001600160e01b03191690565b90612997816127b2565b9560005b8281106129ac575050505050505090565b6129bf6129ba828489612811565b612826565b83886129d96129cf858484612830565b6040810190612870565b905060208111612af6575b508392612a1a612a14612a0d612a03600198612a5597612a5097612830565b6020810190612870565b36916128a3565b89613a7a565b612a388967ffffffffffffffff16600052600a602052604060002090565b906001600160a01b0316600052602052604060002090565b6128ea565b60a081015115612aba57612a9e612a766060612a9093015163ffffffff1690565b6040805163ffffffff909216602083015290928391820190565b03601f1981018352826106de565b612aa8828b612944565b52612ab3818a612944565b500161299b565b50612a90612a9e612af184612ae38a67ffffffffffffffff166000526009602052604060002090565b015460101c63ffffffff1690565b612a76565b915050612b2e611850612b2184612a388b67ffffffffffffffff16600052600a602052604060002090565b5460701c63ffffffff1690565b10612b3b578388386129e4565b7f36f536ca000000000000000000000000000000000000000000000000000000006000526001600160a01b031660045260246000fd5b60405190612b7e8261064d565b60006040838281528260208201520152565b903590601e198136030182121561022c570180359067ffffffffffffffff821161022c57602001918160061b3603831361022c57565b35906001600160e01b038216820361022c57565b60408136031261022c57612c09602060405192612bf68461068a565b8035612c018161021b565b845201612bc6565b602082015290565b60408136031261022c57612c09602060405192612c2d8461068a565b612c01816102ab565b90612c3f613e27565b60005b8251811015612d715780612c5860019285612944565b517f32a4ba3fa3351b11ad555d4c8ec70a744e8705607077a946807030d64b6ab1a360a06001600160a01b038351169260608101936001600160a01b0380865116957fffff000000000000000000000000000000000000000000000000000000000000612cf660208601947fffffffffffffffffffff00000000000000000000000000000000000000000000865116604088019a848c511692615a7f565b977fffffffffffffffffffff000000000000000000000000000000000000000000006080870195612d44875115158c600052600460205260406000209060ff60ff1983541691151516179055565b8560405198511688525116602087015251166040850152511660608301525115156080820152a201612c42565b509050565b60405190612d838261068a565b60006020838281520152565b90604051612d9c8161068a565b91546001600160e01b038116835260e01c6020830152565b9061023c612efc6001612dc5610710565b94612e9b612e918254612de1612ddb8260ff1690565b15158a52565b61ffff600882901c1660208a015263ffffffff601882901c1660408a015263ffffffff603882901c1660608a015263ffffffff605882901c1660808a015260ff607882901c1660a08a015260ff608082901c1660c08a015261ffff608882901c1660e08a015263ffffffff609882901c166101008a015261ffff60b882901c166101208a015261ffff60c882901c166101408a01526001600160e01b0319600882901b166101608a015260f81c90565b1515610180880152565b015461ffff81166101a086015263ffffffff601082901c166101c086015263ffffffff603082901c166101e086015267ffffffffffffffff605082901c1661020086015263ffffffff609082901c1661022086015260b01c63ffffffff1690565b63ffffffff16610240840152565b90612f13613e27565b6000915b805183101561310557612f2a8382612944565b5190612f3e825167ffffffffffffffff1690565b946020600093019367ffffffffffffffff8716935b855180518210156130f057612f6a82602092612944565b510151612f7b611788838951612944565b8151602083015163ffffffff9081169116818110156130b7575050608082015163ffffffff1660208110613076575090867f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b56001600160a01b0384613005858f60019998612a386130009267ffffffffffffffff16600052600a602052604060002090565b613e65565b61306d60405192839216958291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b0390a301612f53565b7f24ecdc02000000000000000000000000000000000000000000000000000000006000526001600160a01b0390911660045263ffffffff1660245260446000fd5b7f0b4f67a20000000000000000000000000000000000000000000000000000000060005263ffffffff9081166004521660245260446000fd5b50509550925092600191500191929092612f17565b50905060005b81518110156131b5578061313361312460019385612944565b515167ffffffffffffffff1690565b67ffffffffffffffff6001600160a01b0361316260206131538689612944565b5101516001600160a01b031690565b600061318682612a388767ffffffffffffffff16600052600a602052604060002090565b551691167f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b600080a30161310b565b5050565b60208183031261022c5780359067ffffffffffffffff821161022c570181601f8201121561022c578035906131ed82610c84565b926131fb60405194856106de565b8284526020606081860194028301019181831161022c57602001925b828410613225575050505090565b60608483031261022c5760206060916040516132408161064d565b863561324b8161021b565b8152613258838801612bc6565b83820152613268604088016111d5565b6040820152815201930192613217565b906040516132858161064d565b604060ff8294546001600160a01b0381168452818160a01c16602085015260a81c161515910152565b906132b7613e27565b60005b8251811015612d71576132cd8184612944565b5160206132dd6131248487612944565b9101519067ffffffffffffffff8116801580156134c7575b8015613499575b8015613406575b6133ce5791613394826001959461334461333761297c6133999767ffffffffffffffff166000526009602052604060002090565b6001600160e01b03191690565b61339f577f71e9302ab4e912a9678ae7f5a8542856706806f2817e1bf2a20b171e265cb4ad604051806133778782610fce565b0390a267ffffffffffffffff166000526009602052604060002090565b61415c565b016132ba565b7f2431cc0363f2f66b21782c7e3d54dd9085927981a21bd0cc6be45a51b19689e3604051806133778782610fce565b7fc35aa79d0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff821660045260246000fd5b506001600160e01b03196134266101608501516001600160e01b03191690565b16630a04b54b60e21b8114159081613487575b81613475575b81613463575b81613451575b50613303565b63647e2ba960e01b915014153861344b565b63c4e0595360e01b8114159150613445565b632b1dfffb60e21b811415915061343f565b6307842f7160e21b8114159150613439565b506101e083015163ffffffff1663ffffffff6134bf611850606087015163ffffffff1690565b9116116132fc565b5063ffffffff6134df6101e085015163ffffffff1690565b16156132f5565b6134ee613e27565b60208101519160005b835181101561357b5780613510610aa760019387612944565b61353261352d6001600160a01b0383165b6001600160a01b031690565b615d6f565b61353e575b50016134f7565b6040516001600160a01b039190911681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda7758090602090a138613537565b5091505160005b81518110156131b557613598610aa78284612944565b906001600160a01b0382161561360e577feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef613605836135ea6135e56135216001976001600160a01b031690565b615cf6565b506040516001600160a01b0390911681529081906020820190565b0390a101613582565b7f8579befe0000000000000000000000000000000000000000000000000000000060005260046000fd5b613640613e27565b60005b81518110156131b557806001600160a01b0361366160019385612944565b5151167fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d6136fe67ffffffffffffffff602061369d8689612944565b51015116836000526008602052604060002067ffffffffffffffff82167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161790556040519182918291909167ffffffffffffffff6020820193169052565b0390a201613643565b919082039182116126e557565b61371c612d76565b5061374261373d826001600160a01b03166000526006602052604060002090565b612d8f565b602081019161376161375b611850855163ffffffff1690565b42613707565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000000001611613809576117af6137ad916001600160a01b03166000526007602052604060002090565b6137bd6117c46040830151151590565b801561380f575b613809576137d1906147f4565b9163ffffffff6137f96118506137ee602087015163ffffffff1690565b935163ffffffff1690565b911610613804575090565b905090565b50905090565b506001600160a01b0361382982516001600160a01b031690565b16156137c4565b90600282018092116126e557565b90602082018092116126e557565b90600182018092116126e557565b919082018092116126e557565b9061ffff8091169116029061ffff82169182036126e557565b63ffffffff60209116019063ffffffff82116126e557565b9063ffffffff8091169116019063ffffffff82116126e557565b906138bb613e27565b60005b8251811015612d7157806138d460019285612944565b517fe6a7a17d710bf0b2cd05e5397dc6f97a5da4ee79e31e234bf5f965ee2bd9a5bf6139f960206001600160a01b0384511693015183600052600760205260406000206139596001600160a01b0383511682906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b602082015181547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff74ff000000000000000000000000000000000000000075ff0000000000000000000000000000000000000000006040870151151560a81b169360a01b169116171790556040519182918291909160408060608301946001600160a01b03815116845260ff602082015116602085015201511515910152565b0390a2016138be565b613a0b81613714565b9063ffffffff602083015116158015613a68575b613a315750516001600160e01b031690565b6001600160a01b03907f06439c6b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b506001600160e01b0382511615613a1f565b6001600160e01b0319169190630a04b54b60e21b8314613b14576307842f7160e21b8314613b0657632b1dfffb60e21b8314613afb5763647e2ba960e01b8314613af05763c4e0595360e01b8314613ae15782632ee8207560e01b60005260045260246000fd5b61023c91925061dee99061542a565b61023c91925061548b565b61023c9192506153c7565b61023c91925060019061542a565b61023c919250615348565b916001600160e01b03198316630a04b54b60e21b8114613be2576307842f7160e21b8114613bc257632b1dfffb60e21b8114613bb65763647e2ba960e01b8114613baa5763c4e0595360e01b14613b8f57632ee8207560e01b6000526001600160e01b0319831660045260246000fd5b61023c925015613ba25761dee99061542a565b60009061542a565b505061023c915061548b565b505061023c91506153c7565b5061023c925015613bd95760ff60015b169061542a565b60ff6000613bd2565b505061023c9150615348565b33600052600360205260406000205415613c0457565b7fd86ad9cf000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b6111c4613c599196949395929667ffffffffffffffff166000526009602052604060002090565b946101608601946001600160e01b0319613c7b87516001600160e01b03191690565b16630a04b54b60e21b8114908115613e16575b8115613e05575b50613dc057505063c4e0595360e01b6001600160e01b0319613cbf86516001600160e01b03191690565b1614613d89576307842f7160e21b6001600160e01b0319613ce886516001600160e01b03191690565b1614613d205761196e613d0385516001600160e01b03191690565b632ee8207560e01b6000526001600160e01b031916600452602490565b613d749350612a0d6060613d5e8763ffffffff613d55610180613d4d86613d829b9d015163ffffffff1690565b930151151590565b911685876159b6565b0151604051958691602083019190602083019252565b03601f1981018652856106de565b9160019190565b613d749350612a0d6040613d5e8763ffffffff613db7610180613d4d6060613d829b9d015163ffffffff1690565b911685876157ba565b94509491613de691613de06118506101e0610b3896015163ffffffff1690565b91615568565b93613dfd6020613df587615671565b960151151590565b9336916128a3565b63647e2ba960e01b91501438613c95565b632b1dfffb60e21b81149150613c8e565b6001600160a01b03600154163303613e3b57565b7f2b5c74de0000000000000000000000000000000000000000000000000000000060005260046000fd5b815181546020808501516040808701517fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090941663ffffffff958616179190921b67ffffffff00000000161791901b69ffff000000000000000016178255606083015161023c93613f759260a092613f17911685547fffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffff1660509190911b6dffffffff0000000000000000000016178555565b613f6e613f2b608083015163ffffffff1690565b85547fffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff1660709190911b71ffffffff000000000000000000000000000016178555565b0151151590565b81547fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff1690151560901b72ff00000000000000000000000000000000000016179055565b91929092613fc982828686615a7f565b600052600460205260ff6040600020541615613fe55750505050565b6040517f097e17ff0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529390921660248401527fffffffffffffffffffff0000000000000000000000000000000000000000000090911660448301527fffff000000000000000000000000000000000000000000000000000000000000166064820152608490fd5b0390fd5b604d81116126e557600a0a90565b60ff1660120160ff81116126e55760ff169060248211156141085760231982019182116126e5576140be6140c49261407d565b90612761565b6001600160e01b0381116140de576001600160e01b031690565b7f10cb51d10000000000000000000000000000000000000000000000000000000060005260046000fd5b9060240390602482116126e5576121956141219261407d565b6140c4565b9060ff80911691160160ff81116126e55760ff169060248211156141085760231982019182116126e5576140be6140c49261407d565b90614740610240600161023c946141896141768651151590565b829060ff60ff1983541691151516179055565b6141cf61419b602087015161ffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff1660089190911b62ffff0016178255565b61421b6141e3604087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff1660189190911b66ffffffff00000016178255565b61426b61422f606087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff1660389190911b6affffffff0000000000000016178255565b6142bf61427f608087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff1660589190911b6effffffff000000000000000000000016178255565b6143116142d060a087015160ff1690565b82547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1660789190911b6fff00000000000000000000000000000016178255565b61436461432260c087015160ff1690565b82547fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff1660809190911b70ff0000000000000000000000000000000016178255565b6143ba61437660e087015161ffff1690565b82547fffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff1660889190911b72ffff000000000000000000000000000000000016178255565b6144176143cf61010087015163ffffffff1690565b82547fffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff1660989190911b76ffffffff0000000000000000000000000000000000000016178255565b61447461442a61012087015161ffff1690565b82547fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff1660b89190911b78ffff000000000000000000000000000000000000000000000016178255565b6144d361448761014087015161ffff1690565b82547fffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff1660c89190911b7affff0000000000000000000000000000000000000000000000000016178255565b61453c6144ec6101608701516001600160e01b03191690565b82547fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff1660089190911c7effffffff00000000000000000000000000000000000000000000000000000016178255565b61459d61454d610180870151151590565b82547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690151560f81b7fff0000000000000000000000000000000000000000000000000000000000000016178255565b01926145e16145b26101a083015161ffff1690565b859061ffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000825416179055565b61462d6145f66101c083015163ffffffff1690565b85547fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff1660109190911b65ffffffff000016178555565b61467d6146426101e083015163ffffffff1690565b85547fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1660309190911b69ffffffff00000000000016178555565b6146d961469661020083015167ffffffffffffffff1690565b85547fffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff1660509190911b71ffffffffffffffff0000000000000000000016178555565b6147356146ee61022083015163ffffffff1690565b85547fffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff1660909190911b75ffffffff00000000000000000000000000000000000016178555565b015163ffffffff1690565b7fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff79ffffffff0000000000000000000000000000000000000000000083549260b01b169116179055565b519069ffffffffffffffffffff8216820361022c57565b908160a091031261022c576147b58161478a565b91602082015191604081015191610b3860806060840151930161478a565b6040513d6000823e3d90fd5b9081602091031261022c5751610b3881611ad9565b6147fc612d76565b5061481461352161352183516001600160a01b031690565b90604051907ffeaf968c00000000000000000000000000000000000000000000000000000000825260a082600481865afa92831561491c57600092600094614921575b50600083126140de576020600491604051928380927f313ce5670000000000000000000000000000000000000000000000000000000082525afa92831561491c57610b389363ffffffff936148bd936000926148e6575b506020015160ff165b90614126565b926148d86148c9610701565b6001600160e01b039095168552565b1663ffffffff166020830152565b6148b791925061490d602091823d8411614915575b61490581836106de565b8101906147df565b9291506148ae565b503d6148fb565b6147d3565b90935061494791925060a03d60a011614954575b61493f81836106de565b8101906147a1565b5093925050919238614857565b503d614935565b9081602091031261022c573590565b91906149796020830183612870565b9390506040830161498a8185612b90565b905060408401916149a2611850845163ffffffff1690565b808811614f6c5750602085015161ffff16808311614f3657506101608501966149d388516001600160e01b03191690565b6001600160e01b03198116630a04b54b60e21b81148015614f26575b8015614f16575b15614a7157505050505050509181614a6b612a0d614a52614a6496614a216080610b38980186612870565b6101e083015163ffffffff169063ffffffff614a4a610180613df5606088015163ffffffff1690565b941692615b2b565b51958694516001600160e01b03191690565b9280612870565b90613b1f565b63c4e0595360e01b819b9a939495979996989b14600014614ce6575050614af3614ad2614ae6999a614aa66080880188612870565b63ffffffff614aca610180614ac2606087015163ffffffff1690565b950151151590565b9316916157ba565b918251998a91516001600160e01b03191690565b614a6b612a0d8880612870565b6060810151519082614b10614b088780612870565b81019061495b565b614cc9575081614c93575b8515159081614c86575b50614c5c5760408111614c2a5750614b4a90614b448594939795612718565b9061385a565b946000935b838510614ba8575050505050611850614b6c915163ffffffff1690565b808211614b7857505090565b7f869337890000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b9091929395600190614bff611850612b21614bd78667ffffffffffffffff16600052600a602052604060002090565b614be86129ba8d6108f08b8d612b90565b6001600160a01b0316600052602052604060002090565b8015614c1a57614c0e9161385a565b965b0193929190614b4f565b50614c249061383e565b96614c10565b7fc327a56c00000000000000000000000000000000000000000000000000000000600052600452604060245260446000fd5b7f5bed51920000000000000000000000000000000000000000000000000000000060005260046000fd5b6040915001511538614b25565b61196e827fc327a56c00000000000000000000000000000000000000000000000000000000600052906044916004526000602452565b614ce0919350614b44614cdb8461384c565b6126ea565b91614b1b565b6307842f7160e21b03614ef85750614d53614d30614ae6999a614d0c6080880188612870565b63ffffffff614d28610180614ac2606087015163ffffffff1690565b9316916159b6565b91614d42611850845163ffffffff1690565b998a91516001600160e01b03191690565b6080810151519082614d68614b088780612870565b614ee0575081614eaa575b85151580614e9e575b614c5c5760408211614e6a576020015167ffffffffffffffff9081169081831c16614e30575050614db490614b448594939795612700565b946000935b838510614dd6575050505050611850614b6c915163ffffffff1690565b9091929395600190614e05611850612b21614bd78667ffffffffffffffff16600052600a602052604060002090565b8015614e2057614e149161385a565b965b0193929190614db9565b50614e2a9061383e565b96614e16565b7fafa933080000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045260245260446000fd5b7f8a0d71f7000000000000000000000000000000000000000000000000000000006000526004829052604060245260446000fd5b50606081015115614d7c565b61196e827f8a0d71f700000000000000000000000000000000000000000000000000000000600052906044916004526000602452565b614ef2919350614b44614cdb84613830565b91614d73565b632ee8207560e01b6000526001600160e01b03191660045260246000fd5b5063647e2ba960e01b81146149f6565b50632b1dfffb60e21b81146149ef565b7fd88dddd600000000000000000000000000000000000000000000000000000000600052600483905261ffff1660245260446000fd5b7f8693378900000000000000000000000000000000000000000000000000000000600052600452602487905260446000fd5b67ffffffffffffffff8116600052600560205260406000209160405192614fc48461068a565b546001600160e01b038116845260e01c9182602085015263ffffffff82169283614ffe575b50505050610b3890516001600160e01b031690565b63ffffffff1642908103939084116126e557831161501c5780614fe9565b7ff08bcb3e0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045263ffffffff1660245260445260646000fd5b60408136031261022c576020604051916150788361068a565b80356150838161021b565b83520135602082015290565b9694919695929390956000946000986000986000965b8088106150b9575050505050505050929190565b9091929394959697999a6150d66150d18a848b612811565b61505f565b9a61510d612a508d614be86150ff8967ffffffffffffffff16600052600a602052604060002090565b91516001600160a01b031690565b9161511e6117c460a0850151151590565b6152675760009c60408401906151396122f5835161ffff1690565b6151ef575b5050606083015163ffffffff1661515491613898565b9c60808301516151679063ffffffff1690565b61517091613898565b9b82516151809063ffffffff1690565b63ffffffff1661518f906126c3565b600193908083106151e357506123b061185060206151b293015163ffffffff1690565b8082116151d257506151c39161385a565b985b01969594939291906150a5565b90506151dd9161385a565b986151c5565b9150506151dd9161385a565b90612195615258939f61524661524f9460208f8e6122f595506001600160a01b0361522185516001600160a01b031690565b91166001600160a01b038216146152605761523c9150613a02565b915b015190615b69565b925161ffff1690565b620186a0900490565b9b388061513e565b509161523e565b999b50600191506152888461528261528e93614b448b6126c3565b9b613898565b9c613880565b9a6151c5565b91939093806101e00193846101e0116126e55761012081029080820461012014901517156126e5576101e09101018093116126e5576122f561014061532a610b38966dffffffffffffffffffffffffffff6122826153156153026153349a63ffffffff6121959a169061385a565b6121956122f56101208c015161ffff1690565b614b446118506101008b015163ffffffff1690565b93015161ffff1690565b61272e565b9081602091031261022c575190565b602081510361537e576153646020825183010160208301615339565b6001600160a01b0381119081156153bb575b5061537e5750565b614079906040519182917f8d666f6000000000000000000000000000000000000000000000000000000000835260206004840181815201906102f1565b61040091501038615376565b60208151036153ed57600b6153e56020835184010160208401615339565b106153ed5750565b614079906040519182917fe0d7fb0200000000000000000000000000000000000000000000000000000000835260206004840181815201906102f1565b906020825103615450578061543d575050565b6153e56020835184010160208401615339565b6040517fe0d7fb02000000000000000000000000000000000000000000000000000000008152602060048201528061407960248201856102f1565b60248151036154a1576022810151156154a15750565b614079906040519182917f373b0e4400000000000000000000000000000000000000000000000000000000835260206004840181815201906102f1565b919091356001600160e01b0319811692600481106154fa575050565b6001600160e01b0319929350829060040360031b1b161690565b909291928360041161022c57831161022c57600401916003190190565b9060041161022c5790600490565b9081604091031261022c576020604051916155598361068a565b805183520151612c0981610c9c565b91615571612d76565b50811561564f575061559a612a0d82806155946001600160e01b031995876154de565b95615514565b91167f181dcf100000000000000000000000000000000000000000000000000000000081036155d7575080602080610b389351830101910161553f565b7f97a657c90000000000000000000000000000000000000000000000000000000014615627577f5247fdce0000000000000000000000000000000000000000000000000000000060005260046000fd5b8060208061563a93518301019101615339565b615642610701565b9081526000602082015290565b91505067ffffffffffffffff615663610701565b911681526000602082015290565b6020604051917f181dcf1000000000000000000000000000000000000000000000000000000000828401528051602484015201511515604482015260448152610b386064826106de565b604051906156c8826106c2565b606080836000815260006020820152600060408201520152565b9080601f8301121561022c5781356156f981610c84565b9261570760405194856106de565b81845260208085019260051b82010192831161022c57602001905b82821061572f5750505090565b8135815260209182019101615722565b60208183031261022c5780359067ffffffffffffffff821161022c570160808183031261022c5760405191615773836106c2565b81358352602082013561578581610c9c565b602084015260408201356040840152606082013567ffffffffffffffff811161022c576157b292016156e2565b606082015290565b6157c26156bb565b5081156158cb577f21ea4ca9000000000000000000000000000000000000000000000000000000006001600160e01b03196158066158008585615531565b906154de565b16036158a157816158229261581a92615514565b81019061573f565b918061588b575b615861578151116158375790565b7f4c4fc93a0000000000000000000000000000000000000000000000000000000060005260046000fd5b7fee433e990000000000000000000000000000000000000000000000000000000060005260046000fd5b5061589c6117c46020840151151590565b615829565b7f5247fdce0000000000000000000000000000000000000000000000000000000060005260046000fd5b7fb00b53dc0000000000000000000000000000000000000000000000000000000060005260046000fd5b604051906159028261066e565b60606080836000815260006020820152600060408201526000838201520152565b60208183031261022c5780359067ffffffffffffffff821161022c570160a08183031261022c57604051916159578361066e565b615960826111d5565b835261596e602083016102ab565b6020840152604082013561598181610c9c565b604084015260608201356060840152608082013567ffffffffffffffff811161022c576159ae92016156e2565b608082015290565b6159be6158f5565b5081156158cb577f1f3b3aba000000000000000000000000000000000000000000000000000000006001600160e01b03196159fc6158008585615531565b16036158a15781615a1892615a1092615514565b810190615923565b9180615a69575b6158615763ffffffff615a36835163ffffffff1690565b1611615a3f5790565b7f2e2b0c290000000000000000000000000000000000000000000000000000000060005260046000fd5b50615a7a6117c46040840151151590565b615a1f565b604080516001600160a01b039283166020820190815292909316908301527fffffffffffffffffffff0000000000000000000000000000000000000000000090921660608201527fffff000000000000000000000000000000000000000000000000000000000000909216608083015290615afd8160a08101612a90565b51902090565b6001600160a01b03610b389116600b615bfd565b6001600160a01b03610b389116600b615d31565b9063ffffffff615b4893959495615b40612d76565b501691615568565b918251116158375780615b5d575b6158615790565b50602081015115615b56565b670de0b6b3a7640000916001600160e01b03615b85921661274e565b0490565b80548210156128215760005260206000200190600090565b91615bbb918354906000199060031b92831b921b19161790565b9055565b80548015615be7576000190190615bd68282615b89565b60001982549160031b1b1916905555565b634e487b7160e01b600052603160045260246000fd5b6001810191806000528260205260406000205492831515600014615caf5760001984018481116126e55783549360001985019485116126e5576000958583615c6097615c519503615c66575b505050615bbf565b90600052602052604060002090565b55600190565b615c96615c9091615c87615c7d615ca69588615b89565b90549060031b1c90565b92839187615b89565b90615ba1565b8590600052602052604060002090565b55388080615c49565b50505050600090565b805490680100000000000000008210156106695781615cdf916001615bbb94018155615b89565b81939154906000199060031b92831b921b19161790565b600081815260036020526040902054615d2b57615d14816002615cb8565b600254906000526003602052604060002055600190565b50600090565b6000828152600182016020526040902054615d685780615d5383600193615cb8565b80549260005201602052604060002055600190565b5050600090565b600081815260036020526040902054908115615d68576000198201908282116126e5576002549260001984019384116126e5578383615c609460009603615dcf575b505050615dbe6002615bbf565b600390600052602052604060002090565b615dbe615c9091615de7615c7d615df1956002615b89565b9283916002615b89565b55388080615db156fea164736f6c634300081a000a00000000000000000000000000000000000000000000000ad78ebc5ac6200000000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca00000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000044835bbba9d40deda9b64858095ecfb2693c944900000000000000000000000068ad36ad55bc29ee5a4c4781d9640dd47c8675bc0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000000000000000000000000000000c7d713b49da0000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436101561001257600080fd5b60003560e01c806241e5be1461021657806301447eaa1461021157806301ffc9a71461020c578063061877e31461020757806306285c6914610202578063181f5a77146101fd5780632451a627146101f8578063325c868e146101f35780633937306f146101ee5780633a49bb49146101e957806341ed29e7146101e457806345ac924d146101df5780634ab35b0b146101da578063514e8cff146101d55780636def4ce7146101d0578063770e2dc4146101cb57806379ba5097146101c65780637afac322146101c1578063805f2132146101bc57806382b49eb0146101b757806387b8d879146101b25780638da5cb5b146101ad57806391a2749a146101a8578063a69c64c0146101a3578063bf78e03f1461019e578063cdc73d5114610199578063d02641a014610194578063d63d3af21461018f578063d8694ccd1461018a578063f2fde38b14610185578063fbe3f778146101805763ffdb4b371461017b57600080fd5b6125ed565b6124f0565b612434565b612001565b611fe5565b611f9c565b611f25565b611e7f565b611dc6565b611d32565b611d0b565b611aef565b611972565b6116d7565b61159e565b611486565b611285565b611106565b610f47565b610f0f565b610e46565b610cb1565b610b3b565b610861565b610845565b6107c2565b610720565b610566565b61051e565b610464565b6103b0565b61023e565b6001600160a01b0381160361022c57565b600080fd5b359061023c8261021b565b565b3461022c57606060031936011261022c5760206102756004356102608161021b565b602435604435916102708361021b565b612781565b604051908152f35b6004359067ffffffffffffffff8216820361022c57565b6024359067ffffffffffffffff8216820361022c57565b359067ffffffffffffffff8216820361022c57565b9181601f8401121561022c5782359167ffffffffffffffff831161022c576020808501948460051b01011161022c57565b919082519283825260005b84811061031d575050601f19601f8460006020809697860101520116010190565b806020809284010151828286010152016102fc565b602081016020825282518091526040820191602060408360051b8301019401926000915b83831061036557505050505090565b90919293946020806103a1837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102f1565b97019301930191939290610356565b3461022c57606060031936011261022c576103c961027d565b60243567ffffffffffffffff811161022c576103e99036906004016102c0565b6044929192359167ffffffffffffffff831161022c573660238401121561022c5782600401359167ffffffffffffffff831161022c573660248460061b8601011161022c5761044b94602461043f950192612958565b60405191829182610332565b0390f35b35906001600160e01b03198216820361022c57565b3461022c57602060031936011261022c576004356001600160e01b0319811680910361022c57807f805f213200000000000000000000000000000000000000000000000000000000602092149081156104f4575b81156104ca575b506040519015158152f35b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014386104bf565b7f66792e8000000000000000000000000000000000000000000000000000000000811491506104b8565b3461022c57602060031936011261022c576001600160a01b036004356105438161021b565b166000526008602052602067ffffffffffffffff60406000205416604051908152f35b3461022c57600060031936011261022c5761057f612b71565b50606060405161058e8161064d565b63ffffffff6bffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000ad78ebc5ac620000016918281526001600160a01b0360406020830192827f000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca1684520191837f00000000000000000000000000000000000000000000000000000000000151801683526040519485525116602084015251166040820152f35b634e487b7160e01b600052604160045260246000fd5b6060810190811067ffffffffffffffff82111761066957604052565b610637565b60a0810190811067ffffffffffffffff82111761066957604052565b6040810190811067ffffffffffffffff82111761066957604052565b60c0810190811067ffffffffffffffff82111761066957604052565b6080810190811067ffffffffffffffff82111761066957604052565b90601f601f19910116810190811067ffffffffffffffff82111761066957604052565b6040519061023c6040836106de565b6040519061023c610260836106de565b3461022c57600060031936011261022c5761044b604080519061074381836106de565b600f82527f46656551756f74657220312e362e3300000000000000000000000000000000006020830152519182916020835260208301906102f1565b602060408183019282815284518094520192019060005b8181106107a35750505090565b82516001600160a01b0316845260209384019390920191600101610796565b3461022c57600060031936011261022c5760405180602060025491828152019060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9060005b81811061082f5761044b85610823818703826106de565b6040519182918261077f565b825484526020909301926001928301920161080c565b3461022c57600060031936011261022c57602060405160248152f35b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c5780600401906040600319823603011261022c5761089f613bee565b6108a98280612b90565b4263ffffffff1692915060005b818110610a02575050602401906108cd8284612b90565b92905060005b8381106108dc57005b806108fb6108f66001936108f0868a612b90565b90612811565b612c11565b7fdd84a3fa9ef9409f550d54d6affec7e9c480c878c6ab27b78912a03e1b371c6e67ffffffffffffffff6109de6109d060208501946109c261094487516001600160e01b031690565b61095e61094f610701565b6001600160e01b039092168252565b63ffffffff8c16602082015261099961097f845167ffffffffffffffff1690565b67ffffffffffffffff166000526005602052604060002090565b815160209092015160e01b6001600160e01b0319166001600160e01b0392909216919091179055565b5167ffffffffffffffff1690565b93516001600160e01b031690565b604080516001600160e01b039290921682524260208301529190931692a2016108d3565b80610a1b610a166001936108f08980612b90565b612bda565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a6001600160a01b03610ab46109d06020850194610aa7610a6387516001600160e01b031690565b610a6e61094f610701565b63ffffffff8d166020820152610999610a8e84516001600160a01b031690565b6001600160a01b03166000526006602052604060002090565b516001600160a01b031690565b604080516001600160e01b039290921682524260208301529190931692a2016108b6565b9181601f8401121561022c5782359167ffffffffffffffff831161022c576020838186019501011161022c57565b92610b389492610b2a928552151560208501526080604085015260808401906102f1565b9160608184039101526102f1565b90565b3461022c5760a060031936011261022c57610b5461027d565b60243590610b618261021b565b6044359160643567ffffffffffffffff811161022c57610b85903690600401610ad8565b93909160843567ffffffffffffffff811161022c57610ba8903690600401610ad8565b9290917f000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca906001600160a01b0382166001600160a01b03821614600014610c74575050935b6bffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000ad78ebc5ac620000016808611610c43575091610c34939161044b9693613c32565b90939160405194859485610b06565b857f6a92a4830000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b91610c7e92612781565b93610bed565b67ffffffffffffffff81116106695760051b60200190565b8015150361022c57565b359061023c82610c9c565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590610cee82610c84565b90610cfc60405192836106de565b828252602460a06020840194028201019036821161022c57602401925b818410610d2b57610d2983612c36565b005b60a08436031261022c5760405190610d428261066e565b8435610d4d8161021b565b825260208501357fffffffffffffffffffff000000000000000000000000000000000000000000008116810361022c5760208301526040850135907fffff0000000000000000000000000000000000000000000000000000000000008216820361022c5782602092604060a0950152610dc860608801610231565b6060820152610dd960808801610ca6565b6080820152815201930192610d19565b602060408183019282815284518094520192019060005b818110610e0d5750505090565b9091926020604082610e3b600194885163ffffffff602080926001600160e01b038151168552015116910152565b019401929101610e00565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c57610e779036906004016102c0565b610e8081610c84565b91610e8e60405193846106de565b818352601f19610e9d83610c84565b0160005b818110610ef857505060005b82811015610eea57600190610ece610ec98260051b8501612826565b613714565b610ed88287612944565b52610ee38186612944565b5001610ead565b6040518061044b8682610de9565b602090610f03612d76565b82828801015201610ea1565b3461022c57602060031936011261022c576020610f36600435610f318161021b565b613a02565b6001600160e01b0360405191168152f35b3461022c57602060031936011261022c5767ffffffffffffffff610f6961027d565b610f71612d76565b50166000526005602052604060002060405190610f8d8261068a565b546001600160e01b038116825260e01c6020820152604051809161044b82604081019263ffffffff602080926001600160e01b038151168552015116910152565b61023c9092919261024080610260830195610feb84825115159052565b60208181015161ffff169085015260408181015163ffffffff169085015260608181015163ffffffff169085015260808181015163ffffffff169085015260a08181015160ff169085015260c08181015160ff169085015260e08181015161ffff16908501526101008181015163ffffffff16908501526101208181015161ffff16908501526101408181015161ffff1690850152610160818101516001600160e01b03191690850152610180818101511515908501526101a08181015161ffff16908501526101c08181015163ffffffff16908501526101e08181015163ffffffff16908501526102008181015167ffffffffffffffff16908501526102208181015163ffffffff1690850152015163ffffffff16910152565b3461022c57602060031936011261022c5761044b6111c96111c461112861027d565b6000610240611135610710565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a0820152826101c0820152826101e08201528261020082015282610220820152015267ffffffffffffffff166000526009602052604060002090565b612db4565b60405191829182610fce565b359063ffffffff8216820361022c57565b359061ffff8216820361022c57565b81601f8201121561022c5780359061120c82610c84565b9261121a60405194856106de565b82845260208085019360061b8301019181831161022c57602001925b828410611244575050505090565b60408483031261022c576020604091825161125e8161068a565b611267876102ab565b8152828701356112768161021b565b83820152815201930192611236565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c5780600401356112c181610c84565b916112cf60405193846106de565b8183526024602084019260051b8201019036821161022c5760248101925b82841061131e576024358567ffffffffffffffff821161022c57611318610d299236906004016111f5565b90612f0a565b833567ffffffffffffffff811161022c5782016040602319823603011261022c576040519061134c8261068a565b611358602482016102ab565b8252604481013567ffffffffffffffff811161022c57602491010136601f8201121561022c57803561138981610c84565b9161139760405193846106de565b818352602060e081850193028201019036821161022c57602001915b8183106113d257505050918160209384809401528152019301926112ed565b82360360e0811261022c5760c0601f19604051926113ef8461068a565b86356113fa8161021b565b8452011261022c5760e091602091604051611414816106a6565b61141f8488016111d5565b815261142d604088016111d5565b8482015261143d606088016111e6565b604082015261144e608088016111d5565b606082015261145f60a088016111d5565b608082015260c087013561147281610c9c565b60a0820152838201528152019201916113b3565b3461022c57600060031936011261022c576000546001600160a01b038116330361150d577fffffffffffffffffffffffff0000000000000000000000000000000000000000600154913382841617600155166000556001600160a01b033391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b7f02b543c60000000000000000000000000000000000000000000000000000000060005260046000fd5b9080601f8301121561022c57813561154e81610c84565b9261155c60405194856106de565b81845260208085019260051b82010192831161022c57602001905b8282106115845750505090565b6020809183356115938161021b565b815201910190611577565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c576115cf903690600401611537565b60243567ffffffffffffffff811161022c576115ef903690600401611537565b906115f8613e27565b60005b8151811015611667578061161c611617610aa760019486612944565b615b03565b611627575b016115fb565b6001600160a01b0361163c610aa78386612944565b167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f91600080a2611621565b8260005b8151811015610d29578061168c611687610aa760019486612944565b615b17565b611697575b0161166b565b6001600160a01b036116ac610aa78386612944565b167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba23600080a2611691565b3461022c57604060031936011261022c5760043567ffffffffffffffff811161022c57611708903690600401610ad8565b6024359167ffffffffffffffff831161022c5761176161175961173f611735611769963690600401610ad8565b94909536916128a3565b90604082015190605e604a84015160601c93015191929190565b919033613fb9565b8101906131b9565b60005b8151811015610d29576117b46117af6117966117888486612944565b51516001600160a01b031690565b6001600160a01b03166000526007602052604060002090565b613278565b6117c86117c46040830151151590565b1590565b61192957906118136117e06020600194015160ff1690565b61180d61180160206117f28689612944565b5101516001600160e01b031690565b6001600160e01b031690565b9061408b565b61182e60406118228487612944565b51015163ffffffff1690565b63ffffffff611859611850611849610a8e611788888b612944565b5460e01c90565b63ffffffff1690565b911610611923576118a761187260406118228588612944565b61189761187d610701565b6001600160e01b03851681529163ffffffff166020830152565b610999610a8e6117888689612944565b7f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a6001600160a01b036118dd6117888588612944565b6119196118ef6040611822888b612944565b60405193849316958390929163ffffffff6020916001600160e01b03604085019616845216910152565b0390a25b0161176c565b5061191d565b61196e6119396117888486612944565b7f06439c6b000000000000000000000000000000000000000000000000000000006000526001600160a01b0316600452602490565b6000fd5b3461022c57604060031936011261022c5761044b6119fa61199161027d565b67ffffffffffffffff602435916119a78361021b565b600060a06040516119b7816106a6565b828152826020820152826040820152826060820152826080820152015216600052600a6020526040600020906001600160a01b0316600052602052604060002090565b611a76611a6d60405192611a0d846106a6565b5463ffffffff8116845263ffffffff8160201c16602085015261ffff8160401c166040850152611a54611a478263ffffffff9060501c1690565b63ffffffff166060860152565b63ffffffff607082901c16608085015260901c60ff1690565b151560a0830152565b6040519182918291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b60ff81160361022c57565b359061023c82611ad9565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590611b2c82610c84565b90611b3a60405192836106de565b82825260246102806020840194028201019036821161022c57602401925b818410611b6857610d29836132ae565b833603610280811261022c57610260601f1960405192611b878461068a565b611b90886102ab565b8452011261022c5761028091602091611ba7610710565b611bb2848901610ca6565b8152611bc0604089016111e6565b84820152611bd0606089016111d5565b6040820152611be1608089016111d5565b6060820152611bf260a089016111d5565b6080820152611c0360c08901611ae4565b60a0820152611c1460e08901611ae4565b60c0820152611c2661010089016111e6565b60e0820152611c3861012089016111d5565b610100820152611c4b61014089016111e6565b610120820152611c5e61016089016111e6565b610140820152611c71610180890161044f565b610160820152611c846101a08901610ca6565b610180820152611c976101c089016111e6565b6101a0820152611caa6101e089016111d5565b6101c0820152611cbd61020089016111d5565b6101e0820152611cd061022089016102ab565b610200820152611ce361024089016111d5565b610220820152611cf661026089016111d5565b61024082015283820152815201930192611b58565b3461022c57600060031936011261022c5760206001600160a01b0360015416604051908152f35b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c576040600319823603011261022c57604051611d6f8161068a565b816004013567ffffffffffffffff811161022c57611d939060043691850101611537565b8152602482013567ffffffffffffffff811161022c57610d29926004611dbc9236920101611537565b60208201526134e6565b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c57806004013590611e0382610c84565b90611e1160405192836106de565b8282526024602083019360061b8201019036821161022c57602401925b818410611e3e57610d2983613638565b60408436031261022c5760206040918251611e588161068a565b8635611e638161021b565b8152611e708388016102ab565b83820152815201930192611e2e565b3461022c57602060031936011261022c576001600160a01b03600435611ea48161021b565b611eac612b71565b5016600052600760205261044b604060002060ff60405191611ecd8361064d565b546001600160a01b0381168352818160a01c16602084015260a81c16151560408201526040519182918291909160408060608301946001600160a01b03815116845260ff602082015116602085015201511515910152565b3461022c57600060031936011261022c57604051806020600b54918281520190600b6000527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db99060005b818110611f865761044b85610823818703826106de565b8254845260209093019260019283019201611f6f565b3461022c57602060031936011261022c576040611fbe600435610ec98161021b565b611fe38251809263ffffffff602080926001600160e01b038151168552015116910152565bf35b3461022c57600060031936011261022c57602060405160128152f35b3461022c57604060031936011261022c5761201a61027d565b60243567ffffffffffffffff811161022c578060040160a0600319833603011261022c5761205f6111c48467ffffffffffffffff166000526009602052604060002090565b9161206d6117c48451151590565b6123fc57606481016120a36117c461208483612826565b6001600160a01b03166000526001600b01602052604060002054151590565b6123bb578390604483016120b78186612b90565b9590506120c581858a61496a565b926120d2610f3182612826565b9788936120f06120ea61022084015163ffffffff1690565b8c614f9e565b9a6000808b1561238257505061218861215561ffff8561217a99612161999896612195966121396101c061212d6101a061219b9d015161ffff1690565b95015163ffffffff1690565b61214c6121458b612826565b938d612b90565b9690951661508f565b98919897909894612826565b6001600160a01b03166000526008602052604060002090565b5467ffffffffffffffff1690565b67ffffffffffffffff1690565b9061274e565b9560009761ffff6121b261014089015161ffff1690565b16612324575b509461219561218861020061228a61044b9d6dffffffffffffffffffffffffffff6122826122a29f9e9b61227d6001600160e01b039f9b9c61229a9f61227d9e63ffffffff61221161227d9f602461221b950190612870565b929050169061385a565b908b60a0810161223e612238612232835160ff1690565b60ff1690565b8561274e565b9360e0830191612250835161ffff1690565b9061ffff821683116122b2575b505050506080015161227d916118509163ffffffff16613898565b613898565b61385a565b91169061274e565b93015167ffffffffffffffff1690565b911690612761565b6040519081529081906020820190565b61185094965061227d959361ffff612313612302612278966122fc6122f56122ec60809960ff6122e661231a9b5160ff1690565b16613867565b965161ffff1690565b61ffff1690565b90613707565b61219561223260c08d015160ff1690565b911661385a565b959383955061225d565b9095949897508261234a8b989495986dffffffffffffffffffffffffffff9060701c1690565b6dffffffffffffffffffffffffffff16916123686024890185612870565b90506123749388615294565b9697939438969392966121b8565b9594925095505061219561218861217a6121616123b56123b061185061024061219b99015163ffffffff1690565b6126c3565b94612826565b6123c761196e91612826565b7f2502348c000000000000000000000000000000000000000000000000000000006000526001600160a01b0316600452602490565b7f99ac52f20000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff841660045260246000fd5b3461022c57602060031936011261022c576001600160a01b036004356124598161021b565b612461613e27565b163381146124c657807fffffffffffffffffffffffff000000000000000000000000000000000000000060005416176000556001600160a01b03600154167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae1278600080a3005b7fdad89dca0000000000000000000000000000000000000000000000000000000060005260046000fd5b3461022c57602060031936011261022c5760043567ffffffffffffffff811161022c573660238201121561022c5780600401359061252d82610c84565b9061253b60405192836106de565b8282526024602083019360071b8201019036821161022c57602401925b81841061256857610d29836138b2565b8336036080811261022c576060601f19604051926125858461068a565b87356125908161021b565b8452011261022c576080916020916040516125aa8161064d565b838801356125b78161021b565b815260408801356125c781611ad9565b8482015260608801356125d981610c9c565b604082015283820152815201930192612558565b3461022c57604060031936011261022c5760043561260a8161021b565b612612610294565b9067ffffffffffffffff82169182600052600960205260ff604060002054161561267f5761264261266392613a02565b92600052600960205263ffffffff60016040600020015460901c1690614f9e565b604080516001600160e01b039384168152919092166020820152f35b827f99ac52f20000000000000000000000000000000000000000000000000000000060005260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b90662386f26fc10000820291808304662386f26fc1000014901517156126e557565b6126ad565b908160051b91808304602014901517156126e557565b9061012c82029180830461012c14901517156126e557565b90606c820291808304606c14901517156126e557565b90655af3107a4000820291808304655af3107a400014901517156126e557565b818102929181159184041417156126e557565b811561276b570490565b634e487b7160e01b600052601260045260246000fd5b6127ab6127a5610b3894936001600160e01b0361279e8195613a02565b169061274e565b92613a02565b1690612761565b906127bc82610c84565b6127c960405191826106de565b828152601f196127d98294610c84565b019060005b8281106127ea57505050565b8060606020809385010152016127de565b634e487b7160e01b600052603260045260246000fd5b91908110156128215760061b0190565b6127fb565b35610b388161021b565b91908110156128215760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618136030182121561022c570190565b903590601e198136030182121561022c570180359067ffffffffffffffff821161022c5760200191813603831361022c57565b92919267ffffffffffffffff821161066957604051916128cd601f8201601f1916602001846106de565b82948184528183011161022c578281602093846000960137010152565b9061023c6040516128fa816106a6565b925463ffffffff8082168552602082811c821690860152604082811c61ffff1690860152605082901c81166060860152607082901c16608085015260901c60ff16151560a0840152565b80518210156128215760209160051b010190565b90929161298d61297c8367ffffffffffffffff166000526009602052604060002090565b5460081b6001600160e01b03191690565b90612997816127b2565b9560005b8281106129ac575050505050505090565b6129bf6129ba828489612811565b612826565b83886129d96129cf858484612830565b6040810190612870565b905060208111612af6575b508392612a1a612a14612a0d612a03600198612a5597612a5097612830565b6020810190612870565b36916128a3565b89613a7a565b612a388967ffffffffffffffff16600052600a602052604060002090565b906001600160a01b0316600052602052604060002090565b6128ea565b60a081015115612aba57612a9e612a766060612a9093015163ffffffff1690565b6040805163ffffffff909216602083015290928391820190565b03601f1981018352826106de565b612aa8828b612944565b52612ab3818a612944565b500161299b565b50612a90612a9e612af184612ae38a67ffffffffffffffff166000526009602052604060002090565b015460101c63ffffffff1690565b612a76565b915050612b2e611850612b2184612a388b67ffffffffffffffff16600052600a602052604060002090565b5460701c63ffffffff1690565b10612b3b578388386129e4565b7f36f536ca000000000000000000000000000000000000000000000000000000006000526001600160a01b031660045260246000fd5b60405190612b7e8261064d565b60006040838281528260208201520152565b903590601e198136030182121561022c570180359067ffffffffffffffff821161022c57602001918160061b3603831361022c57565b35906001600160e01b038216820361022c57565b60408136031261022c57612c09602060405192612bf68461068a565b8035612c018161021b565b845201612bc6565b602082015290565b60408136031261022c57612c09602060405192612c2d8461068a565b612c01816102ab565b90612c3f613e27565b60005b8251811015612d715780612c5860019285612944565b517f32a4ba3fa3351b11ad555d4c8ec70a744e8705607077a946807030d64b6ab1a360a06001600160a01b038351169260608101936001600160a01b0380865116957fffff000000000000000000000000000000000000000000000000000000000000612cf660208601947fffffffffffffffffffff00000000000000000000000000000000000000000000865116604088019a848c511692615a7f565b977fffffffffffffffffffff000000000000000000000000000000000000000000006080870195612d44875115158c600052600460205260406000209060ff60ff1983541691151516179055565b8560405198511688525116602087015251166040850152511660608301525115156080820152a201612c42565b509050565b60405190612d838261068a565b60006020838281520152565b90604051612d9c8161068a565b91546001600160e01b038116835260e01c6020830152565b9061023c612efc6001612dc5610710565b94612e9b612e918254612de1612ddb8260ff1690565b15158a52565b61ffff600882901c1660208a015263ffffffff601882901c1660408a015263ffffffff603882901c1660608a015263ffffffff605882901c1660808a015260ff607882901c1660a08a015260ff608082901c1660c08a015261ffff608882901c1660e08a015263ffffffff609882901c166101008a015261ffff60b882901c166101208a015261ffff60c882901c166101408a01526001600160e01b0319600882901b166101608a015260f81c90565b1515610180880152565b015461ffff81166101a086015263ffffffff601082901c166101c086015263ffffffff603082901c166101e086015267ffffffffffffffff605082901c1661020086015263ffffffff609082901c1661022086015260b01c63ffffffff1690565b63ffffffff16610240840152565b90612f13613e27565b6000915b805183101561310557612f2a8382612944565b5190612f3e825167ffffffffffffffff1690565b946020600093019367ffffffffffffffff8716935b855180518210156130f057612f6a82602092612944565b510151612f7b611788838951612944565b8151602083015163ffffffff9081169116818110156130b7575050608082015163ffffffff1660208110613076575090867f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b56001600160a01b0384613005858f60019998612a386130009267ffffffffffffffff16600052600a602052604060002090565b613e65565b61306d60405192839216958291909160a08060c083019463ffffffff815116845263ffffffff602082015116602085015261ffff604082015116604085015263ffffffff606082015116606085015263ffffffff608082015116608085015201511515910152565b0390a301612f53565b7f24ecdc02000000000000000000000000000000000000000000000000000000006000526001600160a01b0390911660045263ffffffff1660245260446000fd5b7f0b4f67a20000000000000000000000000000000000000000000000000000000060005263ffffffff9081166004521660245260446000fd5b50509550925092600191500191929092612f17565b50905060005b81518110156131b5578061313361312460019385612944565b515167ffffffffffffffff1690565b67ffffffffffffffff6001600160a01b0361316260206131538689612944565b5101516001600160a01b031690565b600061318682612a388767ffffffffffffffff16600052600a602052604060002090565b551691167f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b600080a30161310b565b5050565b60208183031261022c5780359067ffffffffffffffff821161022c570181601f8201121561022c578035906131ed82610c84565b926131fb60405194856106de565b8284526020606081860194028301019181831161022c57602001925b828410613225575050505090565b60608483031261022c5760206060916040516132408161064d565b863561324b8161021b565b8152613258838801612bc6565b83820152613268604088016111d5565b6040820152815201930192613217565b906040516132858161064d565b604060ff8294546001600160a01b0381168452818160a01c16602085015260a81c161515910152565b906132b7613e27565b60005b8251811015612d71576132cd8184612944565b5160206132dd6131248487612944565b9101519067ffffffffffffffff8116801580156134c7575b8015613499575b8015613406575b6133ce5791613394826001959461334461333761297c6133999767ffffffffffffffff166000526009602052604060002090565b6001600160e01b03191690565b61339f577f71e9302ab4e912a9678ae7f5a8542856706806f2817e1bf2a20b171e265cb4ad604051806133778782610fce565b0390a267ffffffffffffffff166000526009602052604060002090565b61415c565b016132ba565b7f2431cc0363f2f66b21782c7e3d54dd9085927981a21bd0cc6be45a51b19689e3604051806133778782610fce565b7fc35aa79d0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff821660045260246000fd5b506001600160e01b03196134266101608501516001600160e01b03191690565b16630a04b54b60e21b8114159081613487575b81613475575b81613463575b81613451575b50613303565b63647e2ba960e01b915014153861344b565b63c4e0595360e01b8114159150613445565b632b1dfffb60e21b811415915061343f565b6307842f7160e21b8114159150613439565b506101e083015163ffffffff1663ffffffff6134bf611850606087015163ffffffff1690565b9116116132fc565b5063ffffffff6134df6101e085015163ffffffff1690565b16156132f5565b6134ee613e27565b60208101519160005b835181101561357b5780613510610aa760019387612944565b61353261352d6001600160a01b0383165b6001600160a01b031690565b615d6f565b61353e575b50016134f7565b6040516001600160a01b039190911681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda7758090602090a138613537565b5091505160005b81518110156131b557613598610aa78284612944565b906001600160a01b0382161561360e577feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef613605836135ea6135e56135216001976001600160a01b031690565b615cf6565b506040516001600160a01b0390911681529081906020820190565b0390a101613582565b7f8579befe0000000000000000000000000000000000000000000000000000000060005260046000fd5b613640613e27565b60005b81518110156131b557806001600160a01b0361366160019385612944565b5151167fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d6136fe67ffffffffffffffff602061369d8689612944565b51015116836000526008602052604060002067ffffffffffffffff82167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000008254161790556040519182918291909167ffffffffffffffff6020820193169052565b0390a201613643565b919082039182116126e557565b61371c612d76565b5061374261373d826001600160a01b03166000526006602052604060002090565b612d8f565b602081019161376161375b611850855163ffffffff1690565b42613707565b63ffffffff7f00000000000000000000000000000000000000000000000000000000000151801611613809576117af6137ad916001600160a01b03166000526007602052604060002090565b6137bd6117c46040830151151590565b801561380f575b613809576137d1906147f4565b9163ffffffff6137f96118506137ee602087015163ffffffff1690565b935163ffffffff1690565b911610613804575090565b905090565b50905090565b506001600160a01b0361382982516001600160a01b031690565b16156137c4565b90600282018092116126e557565b90602082018092116126e557565b90600182018092116126e557565b919082018092116126e557565b9061ffff8091169116029061ffff82169182036126e557565b63ffffffff60209116019063ffffffff82116126e557565b9063ffffffff8091169116019063ffffffff82116126e557565b906138bb613e27565b60005b8251811015612d7157806138d460019285612944565b517fe6a7a17d710bf0b2cd05e5397dc6f97a5da4ee79e31e234bf5f965ee2bd9a5bf6139f960206001600160a01b0384511693015183600052600760205260406000206139596001600160a01b0383511682906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b602082015181547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff74ff000000000000000000000000000000000000000075ff0000000000000000000000000000000000000000006040870151151560a81b169360a01b169116171790556040519182918291909160408060608301946001600160a01b03815116845260ff602082015116602085015201511515910152565b0390a2016138be565b613a0b81613714565b9063ffffffff602083015116158015613a68575b613a315750516001600160e01b031690565b6001600160a01b03907f06439c6b000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b506001600160e01b0382511615613a1f565b6001600160e01b0319169190630a04b54b60e21b8314613b14576307842f7160e21b8314613b0657632b1dfffb60e21b8314613afb5763647e2ba960e01b8314613af05763c4e0595360e01b8314613ae15782632ee8207560e01b60005260045260246000fd5b61023c91925061dee99061542a565b61023c91925061548b565b61023c9192506153c7565b61023c91925060019061542a565b61023c919250615348565b916001600160e01b03198316630a04b54b60e21b8114613be2576307842f7160e21b8114613bc257632b1dfffb60e21b8114613bb65763647e2ba960e01b8114613baa5763c4e0595360e01b14613b8f57632ee8207560e01b6000526001600160e01b0319831660045260246000fd5b61023c925015613ba25761dee99061542a565b60009061542a565b505061023c915061548b565b505061023c91506153c7565b5061023c925015613bd95760ff60015b169061542a565b60ff6000613bd2565b505061023c9150615348565b33600052600360205260406000205415613c0457565b7fd86ad9cf000000000000000000000000000000000000000000000000000000006000523360045260246000fd5b6111c4613c599196949395929667ffffffffffffffff166000526009602052604060002090565b946101608601946001600160e01b0319613c7b87516001600160e01b03191690565b16630a04b54b60e21b8114908115613e16575b8115613e05575b50613dc057505063c4e0595360e01b6001600160e01b0319613cbf86516001600160e01b03191690565b1614613d89576307842f7160e21b6001600160e01b0319613ce886516001600160e01b03191690565b1614613d205761196e613d0385516001600160e01b03191690565b632ee8207560e01b6000526001600160e01b031916600452602490565b613d749350612a0d6060613d5e8763ffffffff613d55610180613d4d86613d829b9d015163ffffffff1690565b930151151590565b911685876159b6565b0151604051958691602083019190602083019252565b03601f1981018652856106de565b9160019190565b613d749350612a0d6040613d5e8763ffffffff613db7610180613d4d6060613d829b9d015163ffffffff1690565b911685876157ba565b94509491613de691613de06118506101e0610b3896015163ffffffff1690565b91615568565b93613dfd6020613df587615671565b960151151590565b9336916128a3565b63647e2ba960e01b91501438613c95565b632b1dfffb60e21b81149150613c8e565b6001600160a01b03600154163303613e3b57565b7f2b5c74de0000000000000000000000000000000000000000000000000000000060005260046000fd5b815181546020808501516040808701517fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090941663ffffffff958616179190921b67ffffffff00000000161791901b69ffff000000000000000016178255606083015161023c93613f759260a092613f17911685547fffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffff1660509190911b6dffffffff0000000000000000000016178555565b613f6e613f2b608083015163ffffffff1690565b85547fffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffffff1660709190911b71ffffffff000000000000000000000000000016178555565b0151151590565b81547fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff1690151560901b72ff00000000000000000000000000000000000016179055565b91929092613fc982828686615a7f565b600052600460205260ff6040600020541615613fe55750505050565b6040517f097e17ff0000000000000000000000000000000000000000000000000000000081526001600160a01b0393841660048201529390921660248401527fffffffffffffffffffff0000000000000000000000000000000000000000000090911660448301527fffff000000000000000000000000000000000000000000000000000000000000166064820152608490fd5b0390fd5b604d81116126e557600a0a90565b60ff1660120160ff81116126e55760ff169060248211156141085760231982019182116126e5576140be6140c49261407d565b90612761565b6001600160e01b0381116140de576001600160e01b031690565b7f10cb51d10000000000000000000000000000000000000000000000000000000060005260046000fd5b9060240390602482116126e5576121956141219261407d565b6140c4565b9060ff80911691160160ff81116126e55760ff169060248211156141085760231982019182116126e5576140be6140c49261407d565b90614740610240600161023c946141896141768651151590565b829060ff60ff1983541691151516179055565b6141cf61419b602087015161ffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ff1660089190911b62ffff0016178255565b61421b6141e3604087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffff1660189190911b66ffffffff00000016178255565b61426b61422f606087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffff1660389190911b6affffffff0000000000000016178255565b6142bf61427f608087015163ffffffff1690565b82547fffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffffff1660589190911b6effffffff000000000000000000000016178255565b6143116142d060a087015160ff1690565b82547fffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffff1660789190911b6fff00000000000000000000000000000016178255565b61436461432260c087015160ff1690565b82547fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff1660809190911b70ff0000000000000000000000000000000016178255565b6143ba61437660e087015161ffff1690565b82547fffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff1660889190911b72ffff000000000000000000000000000000000016178255565b6144176143cf61010087015163ffffffff1690565b82547fffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffff1660989190911b76ffffffff0000000000000000000000000000000000000016178255565b61447461442a61012087015161ffff1690565b82547fffffffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffff1660b89190911b78ffff000000000000000000000000000000000000000000000016178255565b6144d361448761014087015161ffff1690565b82547fffffffffff0000ffffffffffffffffffffffffffffffffffffffffffffffffff1660c89190911b7affff0000000000000000000000000000000000000000000000000016178255565b61453c6144ec6101608701516001600160e01b03191690565b82547fff00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff1660089190911c7effffffff00000000000000000000000000000000000000000000000000000016178255565b61459d61454d610180870151151590565b82547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690151560f81b7fff0000000000000000000000000000000000000000000000000000000000000016178255565b01926145e16145b26101a083015161ffff1690565b859061ffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000825416179055565b61462d6145f66101c083015163ffffffff1690565b85547fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff1660109190911b65ffffffff000016178555565b61467d6146426101e083015163ffffffff1690565b85547fffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffffff1660309190911b69ffffffff00000000000016178555565b6146d961469661020083015167ffffffffffffffff1690565b85547fffffffffffffffffffffffffffff0000000000000000ffffffffffffffffffff1660509190911b71ffffffffffffffff0000000000000000000016178555565b6147356146ee61022083015163ffffffff1690565b85547fffffffffffffffffffff00000000ffffffffffffffffffffffffffffffffffff1660909190911b75ffffffff00000000000000000000000000000000000016178555565b015163ffffffff1690565b7fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff79ffffffff0000000000000000000000000000000000000000000083549260b01b169116179055565b519069ffffffffffffffffffff8216820361022c57565b908160a091031261022c576147b58161478a565b91602082015191604081015191610b3860806060840151930161478a565b6040513d6000823e3d90fd5b9081602091031261022c5751610b3881611ad9565b6147fc612d76565b5061481461352161352183516001600160a01b031690565b90604051907ffeaf968c00000000000000000000000000000000000000000000000000000000825260a082600481865afa92831561491c57600092600094614921575b50600083126140de576020600491604051928380927f313ce5670000000000000000000000000000000000000000000000000000000082525afa92831561491c57610b389363ffffffff936148bd936000926148e6575b506020015160ff165b90614126565b926148d86148c9610701565b6001600160e01b039095168552565b1663ffffffff166020830152565b6148b791925061490d602091823d8411614915575b61490581836106de565b8101906147df565b9291506148ae565b503d6148fb565b6147d3565b90935061494791925060a03d60a011614954575b61493f81836106de565b8101906147a1565b5093925050919238614857565b503d614935565b9081602091031261022c573590565b91906149796020830183612870565b9390506040830161498a8185612b90565b905060408401916149a2611850845163ffffffff1690565b808811614f6c5750602085015161ffff16808311614f3657506101608501966149d388516001600160e01b03191690565b6001600160e01b03198116630a04b54b60e21b81148015614f26575b8015614f16575b15614a7157505050505050509181614a6b612a0d614a52614a6496614a216080610b38980186612870565b6101e083015163ffffffff169063ffffffff614a4a610180613df5606088015163ffffffff1690565b941692615b2b565b51958694516001600160e01b03191690565b9280612870565b90613b1f565b63c4e0595360e01b819b9a939495979996989b14600014614ce6575050614af3614ad2614ae6999a614aa66080880188612870565b63ffffffff614aca610180614ac2606087015163ffffffff1690565b950151151590565b9316916157ba565b918251998a91516001600160e01b03191690565b614a6b612a0d8880612870565b6060810151519082614b10614b088780612870565b81019061495b565b614cc9575081614c93575b8515159081614c86575b50614c5c5760408111614c2a5750614b4a90614b448594939795612718565b9061385a565b946000935b838510614ba8575050505050611850614b6c915163ffffffff1690565b808211614b7857505090565b7f869337890000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b9091929395600190614bff611850612b21614bd78667ffffffffffffffff16600052600a602052604060002090565b614be86129ba8d6108f08b8d612b90565b6001600160a01b0316600052602052604060002090565b8015614c1a57614c0e9161385a565b965b0193929190614b4f565b50614c249061383e565b96614c10565b7fc327a56c00000000000000000000000000000000000000000000000000000000600052600452604060245260446000fd5b7f5bed51920000000000000000000000000000000000000000000000000000000060005260046000fd5b6040915001511538614b25565b61196e827fc327a56c00000000000000000000000000000000000000000000000000000000600052906044916004526000602452565b614ce0919350614b44614cdb8461384c565b6126ea565b91614b1b565b6307842f7160e21b03614ef85750614d53614d30614ae6999a614d0c6080880188612870565b63ffffffff614d28610180614ac2606087015163ffffffff1690565b9316916159b6565b91614d42611850845163ffffffff1690565b998a91516001600160e01b03191690565b6080810151519082614d68614b088780612870565b614ee0575081614eaa575b85151580614e9e575b614c5c5760408211614e6a576020015167ffffffffffffffff9081169081831c16614e30575050614db490614b448594939795612700565b946000935b838510614dd6575050505050611850614b6c915163ffffffff1690565b9091929395600190614e05611850612b21614bd78667ffffffffffffffff16600052600a602052604060002090565b8015614e2057614e149161385a565b965b0193929190614db9565b50614e2a9061383e565b96614e16565b7fafa933080000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045260245260446000fd5b7f8a0d71f7000000000000000000000000000000000000000000000000000000006000526004829052604060245260446000fd5b50606081015115614d7c565b61196e827f8a0d71f700000000000000000000000000000000000000000000000000000000600052906044916004526000602452565b614ef2919350614b44614cdb84613830565b91614d73565b632ee8207560e01b6000526001600160e01b03191660045260246000fd5b5063647e2ba960e01b81146149f6565b50632b1dfffb60e21b81146149ef565b7fd88dddd600000000000000000000000000000000000000000000000000000000600052600483905261ffff1660245260446000fd5b7f8693378900000000000000000000000000000000000000000000000000000000600052600452602487905260446000fd5b67ffffffffffffffff8116600052600560205260406000209160405192614fc48461068a565b546001600160e01b038116845260e01c9182602085015263ffffffff82169283614ffe575b50505050610b3890516001600160e01b031690565b63ffffffff1642908103939084116126e557831161501c5780614fe9565b7ff08bcb3e0000000000000000000000000000000000000000000000000000000060005267ffffffffffffffff1660045263ffffffff1660245260445260646000fd5b60408136031261022c576020604051916150788361068a565b80356150838161021b565b83520135602082015290565b9694919695929390956000946000986000986000965b8088106150b9575050505050505050929190565b9091929394959697999a6150d66150d18a848b612811565b61505f565b9a61510d612a508d614be86150ff8967ffffffffffffffff16600052600a602052604060002090565b91516001600160a01b031690565b9161511e6117c460a0850151151590565b6152675760009c60408401906151396122f5835161ffff1690565b6151ef575b5050606083015163ffffffff1661515491613898565b9c60808301516151679063ffffffff1690565b61517091613898565b9b82516151809063ffffffff1690565b63ffffffff1661518f906126c3565b600193908083106151e357506123b061185060206151b293015163ffffffff1690565b8082116151d257506151c39161385a565b985b01969594939291906150a5565b90506151dd9161385a565b986151c5565b9150506151dd9161385a565b90612195615258939f61524661524f9460208f8e6122f595506001600160a01b0361522185516001600160a01b031690565b91166001600160a01b038216146152605761523c9150613a02565b915b015190615b69565b925161ffff1690565b620186a0900490565b9b388061513e565b509161523e565b999b50600191506152888461528261528e93614b448b6126c3565b9b613898565b9c613880565b9a6151c5565b91939093806101e00193846101e0116126e55761012081029080820461012014901517156126e5576101e09101018093116126e5576122f561014061532a610b38966dffffffffffffffffffffffffffff6122826153156153026153349a63ffffffff6121959a169061385a565b6121956122f56101208c015161ffff1690565b614b446118506101008b015163ffffffff1690565b93015161ffff1690565b61272e565b9081602091031261022c575190565b602081510361537e576153646020825183010160208301615339565b6001600160a01b0381119081156153bb575b5061537e5750565b614079906040519182917f8d666f6000000000000000000000000000000000000000000000000000000000835260206004840181815201906102f1565b61040091501038615376565b60208151036153ed57600b6153e56020835184010160208401615339565b106153ed5750565b614079906040519182917fe0d7fb0200000000000000000000000000000000000000000000000000000000835260206004840181815201906102f1565b906020825103615450578061543d575050565b6153e56020835184010160208401615339565b6040517fe0d7fb02000000000000000000000000000000000000000000000000000000008152602060048201528061407960248201856102f1565b60248151036154a1576022810151156154a15750565b614079906040519182917f373b0e4400000000000000000000000000000000000000000000000000000000835260206004840181815201906102f1565b919091356001600160e01b0319811692600481106154fa575050565b6001600160e01b0319929350829060040360031b1b161690565b909291928360041161022c57831161022c57600401916003190190565b9060041161022c5790600490565b9081604091031261022c576020604051916155598361068a565b805183520151612c0981610c9c565b91615571612d76565b50811561564f575061559a612a0d82806155946001600160e01b031995876154de565b95615514565b91167f181dcf100000000000000000000000000000000000000000000000000000000081036155d7575080602080610b389351830101910161553f565b7f97a657c90000000000000000000000000000000000000000000000000000000014615627577f5247fdce0000000000000000000000000000000000000000000000000000000060005260046000fd5b8060208061563a93518301019101615339565b615642610701565b9081526000602082015290565b91505067ffffffffffffffff615663610701565b911681526000602082015290565b6020604051917f181dcf1000000000000000000000000000000000000000000000000000000000828401528051602484015201511515604482015260448152610b386064826106de565b604051906156c8826106c2565b606080836000815260006020820152600060408201520152565b9080601f8301121561022c5781356156f981610c84565b9261570760405194856106de565b81845260208085019260051b82010192831161022c57602001905b82821061572f5750505090565b8135815260209182019101615722565b60208183031261022c5780359067ffffffffffffffff821161022c570160808183031261022c5760405191615773836106c2565b81358352602082013561578581610c9c565b602084015260408201356040840152606082013567ffffffffffffffff811161022c576157b292016156e2565b606082015290565b6157c26156bb565b5081156158cb577f21ea4ca9000000000000000000000000000000000000000000000000000000006001600160e01b03196158066158008585615531565b906154de565b16036158a157816158229261581a92615514565b81019061573f565b918061588b575b615861578151116158375790565b7f4c4fc93a0000000000000000000000000000000000000000000000000000000060005260046000fd5b7fee433e990000000000000000000000000000000000000000000000000000000060005260046000fd5b5061589c6117c46020840151151590565b615829565b7f5247fdce0000000000000000000000000000000000000000000000000000000060005260046000fd5b7fb00b53dc0000000000000000000000000000000000000000000000000000000060005260046000fd5b604051906159028261066e565b60606080836000815260006020820152600060408201526000838201520152565b60208183031261022c5780359067ffffffffffffffff821161022c570160a08183031261022c57604051916159578361066e565b615960826111d5565b835261596e602083016102ab565b6020840152604082013561598181610c9c565b604084015260608201356060840152608082013567ffffffffffffffff811161022c576159ae92016156e2565b608082015290565b6159be6158f5565b5081156158cb577f1f3b3aba000000000000000000000000000000000000000000000000000000006001600160e01b03196159fc6158008585615531565b16036158a15781615a1892615a1092615514565b810190615923565b9180615a69575b6158615763ffffffff615a36835163ffffffff1690565b1611615a3f5790565b7f2e2b0c290000000000000000000000000000000000000000000000000000000060005260046000fd5b50615a7a6117c46040840151151590565b615a1f565b604080516001600160a01b039283166020820190815292909316908301527fffffffffffffffffffff0000000000000000000000000000000000000000000090921660608201527fffff000000000000000000000000000000000000000000000000000000000000909216608083015290615afd8160a08101612a90565b51902090565b6001600160a01b03610b389116600b615bfd565b6001600160a01b03610b389116600b615d31565b9063ffffffff615b4893959495615b40612d76565b501691615568565b918251116158375780615b5d575b6158615790565b50602081015115615b56565b670de0b6b3a7640000916001600160e01b03615b85921661274e565b0490565b80548210156128215760005260206000200190600090565b91615bbb918354906000199060031b92831b921b19161790565b9055565b80548015615be7576000190190615bd68282615b89565b60001982549160031b1b1916905555565b634e487b7160e01b600052603160045260246000fd5b6001810191806000528260205260406000205492831515600014615caf5760001984018481116126e55783549360001985019485116126e5576000958583615c6097615c519503615c66575b505050615bbf565b90600052602052604060002090565b55600190565b615c96615c9091615c87615c7d615ca69588615b89565b90549060031b1c90565b92839187615b89565b90615ba1565b8590600052602052604060002090565b55388080615c49565b50505050600090565b805490680100000000000000008210156106695781615cdf916001615bbb94018155615b89565b81939154906000199060031b92831b921b19161790565b600081815260036020526040902054615d2b57615d14816002615cb8565b600254906000526003602052604060002055600190565b50600090565b6000828152600182016020526040902054615d685780615d5383600193615cb8565b80549260005201602052604060002055600190565b5050600090565b600081815260036020526040902054908115615d68576000198201908282116126e5576002549260001984019384116126e5578383615c609460009603615dcf575b505050615dbe6002615bbf565b600390600052602052604060002090565b615dbe615c9091615de7615c7d615df1956002615b89565b9283916002615b89565b55388080615db156fea164736f6c634300081a000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000ad78ebc5ac6200000000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca00000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000044835bbba9d40deda9b64858095ecfb2693c944900000000000000000000000068ad36ad55bc29ee5a4c4781d9640dd47c8675bc0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000000000000000000000000000000c7d713b49da0000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : staticConfig (tuple):
Arg [1] : maxFeeJuelsPerMsg (uint96): 200000000000000000000
Arg [2] : linkToken (address): 0x514910771AF9Ca656af840dff83E8264EcF986CA
Arg [3] : tokenPriceStalenessThreshold (uint32): 86400
Arg [1] : priceUpdaters (address[]): 0x44835bBBA9D40DEDa9b64858095EcFB2693c9449,0x68ad36Ad55bc29eE5a4C4781d9640DD47c8675Bc
Arg [2] : feeTokens (address[]): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2,0x514910771AF9Ca656af840dff83E8264EcF986CA
Arg [3] : tokenPriceFeeds (tuple[]):
Arg [4] : tokenTransferFeeConfigArgs (tuple[]):
Arg [5] : premiumMultiplierWeiPerEthArgs (tuple[]):
Arg [1] : token (address): 0x514910771AF9Ca656af840dff83E8264EcF986CA
Arg [2] : premiumMultiplierWeiPerEth (uint64): 900000000000000000
Arg [1] : token (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : premiumMultiplierWeiPerEth (uint64): 1000000000000000000
Arg [6] : destChainConfigArgs (tuple[]):
-----Encoded View---------------
23 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000ad78ebc5ac6200000
Arg [1] : 000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca
Arg [2] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [5] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000200
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [8] : 00000000000000000000000000000000000000000000000000000000000002c0
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [10] : 00000000000000000000000044835bbba9d40deda9b64858095ecfb2693c9449
Arg [11] : 00000000000000000000000068ad36ad55bc29ee5a4c4781d9640dd47c8675bc
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [13] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [14] : 000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca
Arg [15] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [18] : 000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca
Arg [19] : 0000000000000000000000000000000000000000000000000c7d713b49da0000
Arg [20] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [21] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [22] : 0000000000000000000000000000000000000000000000000000000000000000
🤖 Code Reader
Generate instant answers for your smart contract questions using Al Models. Read more.
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.


