ETH Price: $2,512.25 (+1.48%)

Contract

0x07bd077cFB40bBDa8A67d0D33ce41b974aB0F8a8
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

ContractCreator

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method
Block
From
To
0x60a08060256116082026-07-25 18:34:1150 days ago1785004451  Contract Creation0 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
Source Code Verified Exact Match

Contract Name

NAVCalculator

Compiler Version
v0.8.34+commit.80d5c536
Optimization Enabled
Yes with 200 runs
Other Settings
cancun EvmVersion
License
-NA-
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[],"name":"AssetNotFound","type":"error"},{"inputs":[],"name":"BalanceAdapterNotSet","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"CannotRemoveLastFeed","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"DivergenceToleranceRequired","type":"error"},{"inputs":[],"name":"DuplicateBalanceAdapter","type":"error"},{"inputs":[],"name":"DuplicateMetaInstance","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"InvalidArguments","type":"error"},{"inputs":[],"name":"InvalidBalanceAdapter","type":"error"},{"inputs":[],"name":"InvalidBalanceAdapterType","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"InvalidPriceOracle","type":"error"},{"inputs":[],"name":"InvalidPriceOracleType","type":"error"},{"inputs":[{"internalType":"uint32","name":"toleranceBps","type":"uint32"}],"name":"InvalidTolerance","type":"error"},{"inputs":[],"name":"MetaAdapterNotAllowed","type":"error"},{"inputs":[],"name":"MetaInstanceNotFound","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"name":"MonitorFeedAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint8","name":"expectedDecimals","type":"uint8"},{"internalType":"uint8","name":"actualDecimals","type":"uint8"}],"name":"MonitorFeedDecimalsMismatch","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"name":"MonitorFeedNotFound","type":"error"},{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"NotMetaAdapter","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"name":"PriceFeedAlreadyRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint8","name":"existingDecimals","type":"uint8"},{"internalType":"uint8","name":"newDecimals","type":"uint8"}],"name":"PriceFeedDecimalsMismatch","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"PriceFeedIndexOutOfBounds","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"name":"PriceFeedNotFound","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"PriceFeedNotSet","type":"error"},{"inputs":[],"name":"UUPSUnauthorizedCallContext","type":"error"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"name":"UUPSUnsupportedProxiableUUID","type":"error"},{"inputs":[],"name":"UptimeFeedNotSet","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint8","name":"decimals","type":"uint8"}],"name":"AssetRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"}],"name":"AssetUnregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"adapter","type":"address"},{"indexed":false,"internalType":"enum IBalances.AdapterType","name":"adapterType","type":"uint8"}],"name":"BalanceAdapterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":false,"internalType":"address","name":"adapter","type":"address"}],"name":"BalanceAdapterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldChainlinkUptimeFeed","type":"address"},{"indexed":true,"internalType":"address","name":"newChainlinkUptimeFeed","type":"address"}],"name":"ChainlinkUptimeFeedUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":false,"internalType":"uint32","name":"divergenceToleranceBps","type":"uint32"}],"name":"DivergenceToleranceSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldSequencerGracePeriod","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSequencerGracePeriod","type":"uint256"}],"name":"L2SequencerGracePeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"},{"indexed":false,"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"MonitorFeedAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"fromIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toIndex","type":"uint256"}],"name":"MonitorFeedIndexChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"MonitorFeedRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"}],"name":"MonitorFeedsUnset","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":false,"internalType":"uint32","name":"pegToleranceBps","type":"uint32"}],"name":"PegToleranceSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"},{"indexed":false,"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"PriceFeedAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"fromIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toIndex","type":"uint256"}],"name":"PriceFeedIndexChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"},{"indexed":true,"internalType":"address","name":"priceFeed","type":"address"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"}],"name":"PriceFeedRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"underlyingAsset","type":"address"}],"name":"PriceFeedUnset","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NATIVE_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"adapters","type":"address[]"}],"name":"addBalanceAdapters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adapter","type":"address"},{"internalType":"bytes32[]","name":"instances","type":"bytes32[]"}],"name":"addMetaBalanceAdapter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adapter","type":"address"},{"internalType":"bytes32[]","name":"instances","type":"bytes32[]"}],"name":"addMetaInstances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"}],"name":"addMonitorFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"}],"name":"addPriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"assetCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balanceAdapterTotalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"assetAddresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"quoteAsset","type":"address"}],"name":"calculateValue","outputs":[{"internalType":"int256","name":"value","type":"int256"},{"internalType":"bool","name":"quoteAssetStale","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainlinkL2SequencerGracePeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chainlinkL2SequencerUptimeFeed","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adapter","type":"address"}],"name":"checkBalanceAdapterSupport","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkL2SequencerUptime","outputs":[{"internalType":"bool","name":"stale","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"}],"name":"checkPriceOracleSupport","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"decodeStringArray","outputs":[{"internalType":"string[]","name":"","type":"string[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"erc20DefaultBalanceAdapter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"excludeAssetFromDefaultAdapter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"quoteAsset","type":"address"}],"name":"getAccountNav","outputs":[{"components":[{"internalType":"int256","name":"value","type":"int256"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"quoteAsset","type":"tuple"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset[]","name":"stalePriceAssets","type":"tuple[]"},{"internalType":"bool","name":"sequencerDown","type":"bool"},{"internalType":"bool","name":"quoteAssetStale","type":"bool"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset[]","name":"irregularPriceAssets","type":"tuple[]"},{"internalType":"bool","name":"quoteAssetIrregular","type":"bool"}],"internalType":"struct INAVCalculator.NAV","name":"nav","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"quoteAsset","type":"address"}],"name":"getAccountNavVerbose","outputs":[{"components":[{"components":[{"internalType":"int256","name":"value","type":"int256"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"quoteAsset","type":"tuple"},{"internalType":"uint64","name":"timestamp","type":"uint64"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset[]","name":"stalePriceAssets","type":"tuple[]"},{"internalType":"bool","name":"sequencerDown","type":"bool"},{"internalType":"bool","name":"quoteAssetStale","type":"bool"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset[]","name":"irregularPriceAssets","type":"tuple[]"},{"internalType":"bool","name":"quoteAssetIrregular","type":"bool"}],"internalType":"struct INAVCalculator.NAV","name":"nav","type":"tuple"},{"components":[{"components":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"balanceAsset","type":"tuple"},{"internalType":"address","name":"balanceAdapter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"isDebt","type":"bool"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"quoteAsset","type":"tuple"},{"internalType":"int256","name":"value","type":"int256"},{"internalType":"int256","name":"price","type":"int256"},{"internalType":"uint8","name":"priceDecimals","type":"uint8"},{"internalType":"bool","name":"stale","type":"bool"},{"internalType":"bool","name":"quoteAssetStale","type":"bool"},{"internalType":"bytes32","name":"protocolBrand","type":"bytes32"},{"internalType":"bytes32","name":"protocolId","type":"bytes32"},{"internalType":"bytes32","name":"protocolSubId","type":"bytes32"},{"internalType":"bytes","name":"positionId","type":"bytes"},{"internalType":"enum PositionKind","name":"positionKind","type":"uint8"},{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"bytes32","name":"positionInstanceId","type":"bytes32"},{"internalType":"bool","name":"irregular","type":"bool"},{"internalType":"bool","name":"quoteAssetIrregular","type":"bool"}],"internalType":"struct INAVCalculator.Position","name":"position","type":"tuple"},{"internalType":"string","name":"protocolName","type":"string"},{"internalType":"string[]","name":"labels","type":"string[]"}],"internalType":"struct INAVCalculator.VerbosePosition[]","name":"positions","type":"tuple[]"}],"internalType":"struct INAVCalculator.VerboseNAV","name":"verboseNav","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"quoteAsset","type":"address"}],"name":"getAccountPositions","outputs":[{"components":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"balanceAsset","type":"tuple"},{"internalType":"address","name":"balanceAdapter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"isDebt","type":"bool"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"quoteAsset","type":"tuple"},{"internalType":"int256","name":"value","type":"int256"},{"internalType":"int256","name":"price","type":"int256"},{"internalType":"uint8","name":"priceDecimals","type":"uint8"},{"internalType":"bool","name":"stale","type":"bool"},{"internalType":"bool","name":"quoteAssetStale","type":"bool"},{"internalType":"bytes32","name":"protocolBrand","type":"bytes32"},{"internalType":"bytes32","name":"protocolId","type":"bytes32"},{"internalType":"bytes32","name":"protocolSubId","type":"bytes32"},{"internalType":"bytes","name":"positionId","type":"bytes"},{"internalType":"enum PositionKind","name":"positionKind","type":"uint8"},{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"bytes32","name":"positionInstanceId","type":"bytes32"},{"internalType":"bool","name":"irregular","type":"bool"},{"internalType":"bool","name":"quoteAssetIrregular","type":"bool"}],"internalType":"struct INAVCalculator.Position[]","name":"positions","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"quoteAsset","type":"address"}],"name":"getAccountPositionsForAsset","outputs":[{"components":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"balanceAsset","type":"tuple"},{"internalType":"address","name":"balanceAdapter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"isDebt","type":"bool"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"quoteAsset","type":"tuple"},{"internalType":"int256","name":"value","type":"int256"},{"internalType":"int256","name":"price","type":"int256"},{"internalType":"uint8","name":"priceDecimals","type":"uint8"},{"internalType":"bool","name":"stale","type":"bool"},{"internalType":"bool","name":"quoteAssetStale","type":"bool"},{"internalType":"bytes32","name":"protocolBrand","type":"bytes32"},{"internalType":"bytes32","name":"protocolId","type":"bytes32"},{"internalType":"bytes32","name":"protocolSubId","type":"bytes32"},{"internalType":"bytes","name":"positionId","type":"bytes"},{"internalType":"enum PositionKind","name":"positionKind","type":"uint8"},{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"bytes32","name":"positionInstanceId","type":"bytes32"},{"internalType":"bool","name":"irregular","type":"bool"},{"internalType":"bool","name":"quoteAssetIrregular","type":"bool"}],"internalType":"struct INAVCalculator.Position[]","name":"positions","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"quoteAsset","type":"address"}],"name":"getAccountPositionsForAssetVerbose","outputs":[{"components":[{"components":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"balanceAsset","type":"tuple"},{"internalType":"address","name":"balanceAdapter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"isDebt","type":"bool"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"quoteAsset","type":"tuple"},{"internalType":"int256","name":"value","type":"int256"},{"internalType":"int256","name":"price","type":"int256"},{"internalType":"uint8","name":"priceDecimals","type":"uint8"},{"internalType":"bool","name":"stale","type":"bool"},{"internalType":"bool","name":"quoteAssetStale","type":"bool"},{"internalType":"bytes32","name":"protocolBrand","type":"bytes32"},{"internalType":"bytes32","name":"protocolId","type":"bytes32"},{"internalType":"bytes32","name":"protocolSubId","type":"bytes32"},{"internalType":"bytes","name":"positionId","type":"bytes"},{"internalType":"enum PositionKind","name":"positionKind","type":"uint8"},{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"bytes32","name":"positionInstanceId","type":"bytes32"},{"internalType":"bool","name":"irregular","type":"bool"},{"internalType":"bool","name":"quoteAssetIrregular","type":"bool"}],"internalType":"struct INAVCalculator.Position","name":"position","type":"tuple"},{"internalType":"string","name":"protocolName","type":"string"},{"internalType":"string[]","name":"labels","type":"string[]"}],"internalType":"struct INAVCalculator.VerbosePosition[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"quoteAsset","type":"address"}],"name":"getAccountPositionsVerbose","outputs":[{"components":[{"components":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"balanceAsset","type":"tuple"},{"internalType":"address","name":"balanceAdapter","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"isDebt","type":"bool"},{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset","name":"quoteAsset","type":"tuple"},{"internalType":"int256","name":"value","type":"int256"},{"internalType":"int256","name":"price","type":"int256"},{"internalType":"uint8","name":"priceDecimals","type":"uint8"},{"internalType":"bool","name":"stale","type":"bool"},{"internalType":"bool","name":"quoteAssetStale","type":"bool"},{"internalType":"bytes32","name":"protocolBrand","type":"bytes32"},{"internalType":"bytes32","name":"protocolId","type":"bytes32"},{"internalType":"bytes32","name":"protocolSubId","type":"bytes32"},{"internalType":"bytes","name":"positionId","type":"bytes"},{"internalType":"enum PositionKind","name":"positionKind","type":"uint8"},{"internalType":"bool","name":"isLocked","type":"bool"},{"internalType":"bytes32","name":"positionInstanceId","type":"bytes32"},{"internalType":"bool","name":"irregular","type":"bool"},{"internalType":"bool","name":"quoteAssetIrregular","type":"bool"}],"internalType":"struct INAVCalculator.Position","name":"position","type":"tuple"},{"internalType":"string","name":"protocolName","type":"string"},{"internalType":"string[]","name":"labels","type":"string[]"}],"internalType":"struct INAVCalculator.VerbosePosition[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAdapterCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adapter","type":"address"}],"name":"getAdapterType","outputs":[{"internalType":"enum IBalances.AdapterType","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getAdaptersForAsset","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllAdapters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAssetCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getAssetPricing","outputs":[{"components":[{"internalType":"uint32","name":"divergenceToleranceBps","type":"uint32"},{"internalType":"uint32","name":"pegToleranceBps","type":"uint32"}],"internalType":"struct IPrices.AssetPricing","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAssetsWithPositions","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adapter","type":"address"}],"name":"getMetaInstances","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getMonitorFeedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getMonitorFeeds","outputs":[{"components":[{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"}],"internalType":"struct IPrices.PriceFeedConfig[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"underlyingAsset","type":"address"}],"name":"getPriceData","outputs":[{"components":[{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"internalType":"int256","name":"price","type":"int256"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"bool","name":"stale","type":"bool"},{"internalType":"bool","name":"sequencerDown","type":"bool"},{"internalType":"uint256","name":"healthyFeedCount","type":"uint256"},{"internalType":"bool","name":"irregular","type":"bool"},{"internalType":"uint256","name":"divergenceBps","type":"uint256"},{"internalType":"uint256","name":"monitorFeedCount","type":"uint256"}],"internalType":"struct INAVCalculator.PriceFeedData","name":"priceFeedData","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"underlyingAsset","type":"address"}],"name":"getPriceDataNoDivergence","outputs":[{"components":[{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"internalType":"int256","name":"price","type":"int256"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"},{"internalType":"uint256","name":"updatedAt","type":"uint256"},{"internalType":"bool","name":"stale","type":"bool"},{"internalType":"bool","name":"sequencerDown","type":"bool"},{"internalType":"uint256","name":"healthyFeedCount","type":"uint256"},{"internalType":"bool","name":"irregular","type":"bool"},{"internalType":"uint256","name":"divergenceBps","type":"uint256"},{"internalType":"uint256","name":"monitorFeedCount","type":"uint256"}],"internalType":"struct INAVCalculator.PriceFeedData","name":"priceFeedData","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"underlyingAsset","type":"address"}],"name":"getPriceDivergence","outputs":[{"internalType":"int256","name":"primaryPrice","type":"int256"},{"internalType":"int256","name":"monitorMedian","type":"int256"},{"internalType":"uint256","name":"divergenceBps","type":"uint256"},{"internalType":"bool","name":"irregular","type":"bool"},{"internalType":"uint256","name":"monitorFeedCount","type":"uint256"},{"internalType":"bool","name":"primaryStale","type":"bool"},{"internalType":"bool","name":"primaryAboveMonitors","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getPriceFeedAt","outputs":[{"components":[{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"}],"internalType":"struct IPrices.PriceFeedConfig","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPriceFeedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getPriceFeeds","outputs":[{"components":[{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"}],"internalType":"struct IPrices.PriceFeedConfig[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRegisteredAssets","outputs":[{"components":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"internalType":"struct INAVCalculator.Asset[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"hasPositions","outputs":[{"internalType":"bool","name":"has","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"healthCheck","outputs":[{"internalType":"bool","name":"sequencerDown","type":"bool"},{"internalType":"address[]","name":"stalePriceAssets","type":"address[]"},{"internalType":"address[]","name":"irregularPriceAssets","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"includeAssetInDefaultAdapter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"chainlinkL2SequencerUptimeFeed_","type":"address"},{"internalType":"string","name":"nativeTokenSymbol_","type":"string"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adapter","type":"address"}],"name":"isAdapterRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"isAssetRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"latestPrice","outputs":[{"internalType":"int256","name":"price","type":"int256"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"bool","name":"stale","type":"bool"},{"internalType":"bool","name":"irregular","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"priceFeed","type":"address"},{"internalType":"enum IPrices.PriceType","name":"priceType","type":"uint8"},{"internalType":"uint256","name":"chainlinkHeartbeat","type":"uint256"}],"name":"registerAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adapters","type":"address[]"}],"name":"removeBalanceAdapters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adapter","type":"address"},{"internalType":"bytes32[]","name":"instances","type":"bytes32[]"}],"name":"removeMetaInstances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"priceFeed","type":"address"}],"name":"removeMonitorFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removeMonitorFeedAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"address","name":"priceFeed","type":"address"}],"name":"removePriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"removePriceFeedAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSequencerGracePeriod","type":"uint256"}],"name":"setChainlinkL2SequencerGracePeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newChainlinkL2SequencerUptimeFeed","type":"address"}],"name":"setChainlinkL2SequencerUptimeFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint32","name":"divergenceToleranceBps","type":"uint32"}],"name":"setDivergenceTolerance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"},{"internalType":"uint32","name":"pegToleranceBps","type":"uint32"}],"name":"setPegTolerance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"underlyingAsset","type":"address"}],"name":"unregisterAsset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"usdDecimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}]
60a080604052346100c257306080525f516020615bb15f395f51905f525460ff8160401c166100b3576002600160401b03196001600160401b03821601610060575b604051615aea90816100c7823960805181818161160001526118400152f35b6001600160401b0319166001600160401b039081175f516020615bb15f395f51905f525581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80610041565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461047f5780630603dbf21461047a5780630942a808146104755780630b8bd84614610470578063137e63201461046b5780631eb3d5e314610466578063248a9ca31461046157806326ff56fd1461045c5780632e2e1b2a146104575780632eab700b146104525780632f2ff15d1461044d578063332b2ee014610448578063358345991461044357806336568abe1461043e5780633715bcd1146104395780633aecc485146104345780633fbf3bad1461042f5780634396fff11461042a5780634571e3a6146104255780634bd843b8146104205780634d25bdda1461041b5780634f1ef2861461041657806351ab074c1461041157806352d1902d1461040c57806353084eff14610407578063546378cb1461040257806354fd4d50146103fd5780635aa2b300146103f85780635e41a282146103f35780635f96c336146103ee57806366a4b6c0146103e95780636b8d31b6146103e457806372279ba1146103df5780637718643a146103da578063778f66ed146103d55780637cc6ce52146103d057806383e45b17146103cb578063853b214e146103c657806387deb4ca146103c1578063888f2262146103bc5780638a12fad9146103b75780638b17722a146103b25780638dbd758c146103ad5780638dca81c3146103a8578063915d8653146103a357806391d148541461039e5780639eb1e19614610399578063a0aead4d1461033a578063a217fddf14610394578063a63658c91461038f578063ac3351bd1461038a578063ad3cb1cc14610385578063afc0636214610380578063b252720b1461037b578063bd0c959c14610376578063c3a28a1414610371578063c906d2cf1461036c578063ca68af4214610367578063cf5cb13214610362578063d547741f1461035d578063d5bcb61014610358578063e0f71fbe14610353578063e1d0bb821461034e578063e31ada9714610349578063e87d372714610344578063e8e4da961461033f578063eafe7a741461033a578063f66358f614610335578063fde859b514610330578063fe0c25861461032b5763ffa9274d14610326575f80fd5b61316c565b6130f0565b613025565b612f38565b61257a565b612ea6565b612e2d565b612dfe565b612d27565b612cd8565b612caa565b612c5d565b612bd1565b612b35565b612a33565b612965565b6127e3565b612732565b61266f565b612628565b6125ec565b6125b1565b612597565b6124c7565b612469565b6123bf565b61232f565b61229c565b612219565b6121fc565b61217b565b6120e8565b61209a565b611ff8565b611f68565b611e03565b611dca565b611cd1565b611c03565b611be8565b611b7f565b611a9d565b6119ef565b6119bd565b6119a9565b611885565b61182e565b61177e565b6115ad565b6114f4565b6114dd565b611346565b61119d565b6110f5565b611008565b610ea5565b610e1a565b610df2565b610da0565b610d4e565b610cc1565b610c89565b610afb565b610a50565b6109ae565b61091e565b610635565b610590565b6104f9565b346104d55760203660031901126104d55760043563ffffffff60e01b81168091036104d557602090637965db0b60e01b81149081156104c4575b506040519015158152f35b6301ffc9a760e01b1490505f6104b9565b5f80fd5b6001600160a01b038116036104d557565b604435906104f7826104d9565b565b346104d55760203660031901126104d557600435610516816104d9565b335f9081525f516020615a5e5f395f51905f52602052604090205460ff161561058157600180546001600160a01b039283166001600160a01b0319821681179092559091167f2a59683570cc5c432ceb0946923d7692d85f972004dacdcb650e52bbb9ad03585f80a3005b63ea8e4eb560e01b5f5260045ffd5b346104d55760203660031901126104d5576004356105ad816104d9565b6001600160a01b03811615610626576105c5816150b9565b90816105e3575b50156105d457005b6362351e0360e11b5f5260045ffd5b6301ffc9a760e01b5f90815263076d6d1f60e01b60045260209250906024908290617530fa5f511515601f3d11168161061e575b505f6105cc565b90505f610617565b6317dbc4cb60e21b5f5260045ffd5b346104d55760203660031901126104d557600435610652816104d9565b60018060a01b03165f52603a602052602060ff60405f2054166040519015158152f35b60409060031901126104d55760043561068d816104d9565b9060243561069a816104d9565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060018060a01b038251168152604060ff816106ec602086015160606020870152606086019061069d565b9401511691015290565b634e487b7160e01b5f52602160045260245ffd5b9060078210156107175752565b6106f6565b9061069a90610240806107fc610782610740875161026087526102608701906106c1565b6020888101516001600160a01b031690870152604088015160408701526107706060890151606088019015159052565b608088015186820360808801526106c1565b60a087015160a086015260c087015160c08601526107aa60e088015160e087019060ff169052565b61010087810151151590860152610120878101511515908601526101408701516101408601526101608701516101608601526101808701516101808601526101a08701518582036101a087015261069d565b946108116101c08201516101c086019061070a565b6101e08181015115159085015261020081015161020085015261083f61022082015161022086019015159052565b01511515910152565b9080602083519182815201916020808360051b8301019401925f915b83831061087357505050505090565b9091929394601f19828203018352855160406108ad61089b835160608652606086019061071c565b6020840151858203602087015261069d565b910151916040818303910152815180825260208201906020808260051b8501019401925f5b8281106108f357505050505060208060019297019301930191939290610864565b9091929394602080610911600193601f19878203018952895161069d565b97019501939291016108d2565b346104d55761095d61094961094461093536610675565b9061093f82614054565b614093565b614326565b604051918291602083526020830190610848565b0390f35b90602080835192838152019201905f5b81811061097e5750505090565b82516001600160a01b0316845260209384019390920191600101610971565b90602061069a928181520190610961565b346104d55760203660031901126104d5576004356109cb816104d9565b60405163448b6bc760e11b8152603860048201526001600160a01b0390911660248201525f8160448173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af48015610a4b5761095d915f91610a29575b506040519182918261099d565b610a4591503d805f833e610a3d8183611289565b8101906131fa565b5f610a1c565b61321f565b346104d55760203660031901126104d5576020610a876004355f525f516020615a9e5f395f51905f52602052600160405f20015490565b604051908152f35b9181601f840112156104d5578235916001600160401b0383116104d5576020808501948460051b0101116104d557565b9060406003198301126104d557600435610ad8816104d9565b91602435906001600160401b0382116104d557610af791600401610a8f565b9091565b346104d557610b0936610abf565b91610b1261446a565b6001600160a01b0316801561062657610b32602092610b7794369161322a565b90604051938492839263596411dd60e11b8452603a60048501526038602485015260396044850152603c6064850152608484015260c060a484015260c48301906144b1565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4908115610a4b57610bb491610baf915f91610bc9575b50603d54614514565b603d55565b610bc7610bc2603754614521565b603755565b005b610beb915060203d602011610bf1575b610be38183611289565b8101906144a2565b5f610ba6565b503d610bd9565b60609060031901126104d557600435610c10816104d9565b90602435610c1d816104d9565b9060443561069a816104d9565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610c5c57505050505090565b9091929394602080610c7a600193603f19868203018752895161071c565b97019301930191939290610c4d565b346104d55761095d610cb5610c9d36610bf8565b91610ca783614054565b610cb08261452f565b61418b565b60405191829182610c2a565b346104d55760203660031901126104d557600435610cde816104d9565b5f6020604051610ced81611233565b828152015260018060a01b03165f52600460205261095d60405f2063ffffffff60405191610d1a83611233565b54818116835260201c16602082015260405191829182919091602063ffffffff816040840195828151168552015116910152565b346104d55760403660031901126104d557610bc7602435600435610d71826104d9565b610d9b610d96825f525f516020615a9e5f395f51905f52602052600160405f20015490565b614549565b614618565b346104d55760203660031901126104d5576020610dde600435610dc2816104d9565b6001600160a01b03165f908152606f6020526040902054151590565b6040519015158152f35b5f9103126104d557565b346104d5575f3660031901126104d5576001546040516001600160a01b039091168152602090f35b346104d55760403660031901126104d557600435602435610e3a816104d9565b336001600160a01b03821603610e5357610bc7916146c0565b63334bd91960e11b5f5260045ffd5b600411156104d557565b60809060031901126104d557600435610e84816104d9565b90602435610e91816104d9565b90604435610e9e81610e62565b9060643590565b346104d557610eb336610e6c565b929190610ebe61446a565b6001600160a01b038316938415610626576001600160a01b03831615610626576001600160a01b0384165f908152606f602052604090205461062657610f0d92610f07856147ef565b84614851565b603b54610f3090610f24906001600160a01b031681565b6001600160a01b031690565b90813b156104d55760405163fac09e8760e01b81526001600160a01b0382166004820152915f908390602490829084905af1908115610a4b576040610fa3610fab927fcfb9f3e804d78a94a33ff540f54918180ba00c72ae82312d83c6619c444415b195610fbf95610fc4575b506148e5565b015160ff1690565b60405160ff90911681529081906020820190565b0390a2005b80610fd25f610fd893611289565b80610de8565b5f610f9d565b60206003198201126104d557600435906001600160401b0382116104d557610af791600401610a8f565b346104d557602061101836610fde565b61102392919261446a565b603b5460405163b8b708bf60e01b8152603a600482015260386024820152603960448201526001600160a01b03909116606482015260a0608482015292839182916110729160a4840191614961565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4908115610a4b57610bc791610bc2915f916110aa575b506037546148d8565b6110c3915060203d602011610bf157610be38183611289565b5f6110a1565b60409060031901126104d5576004356110e1816104d9565b9060243563ffffffff811681036104d55790565b346104d55763ffffffff611108366110c9565b61111392919261446a565b61111c836149a4565b169081158015611192575b61117f576001600160a01b03165f81815260046020908152604091829020805463ffffffff191685179055905192835290917fdc5d39aca5842c1b97b84752e2a223e25fdc92a14cfbbe0ea240d071af6bf46a9190a2005b506310b6149d60e21b5f5260045260245ffd5b506127108211611127565b346104d55760203660031901126104d5576004356111ba816104d9565b5f6111c3613eec565b603d54606e5460405163573c424d60e01b815294859384936111e9939160048601613276565b038173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b5761095d915f91610a2957506040519182918261099d565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761124e57604052565b61121f565b608081019081106001600160401b0382111761124e57604052565b606081019081106001600160401b0382111761124e57604052565b90601f801991011681019081106001600160401b0382111761124e57604052565b604051906104f761018083611289565b604051906104f761010083611289565b604051906104f761026083611289565b6001600160401b03811161124e57601f01601f191660200190565b929192611301826112da565b9161130f6040519384611289565b8294818452818301116104d5578281602093845f960137010152565b9080601f830112156104d55781602061069a933591016112f5565b346104d55760603660031901126104d557600435611363816104d9565b60243590611370826104d9565b6044356001600160401b0381116104d55761138f90369060040161132b565b5f516020615abe5f395f51905f5254926001600160401b036113c060ff604087901c1615956001600160401b031690565b16801590816114d5575b60011490816114cb575b1590816114c2575b506114b35761141f928461141660016001600160401b03195f516020615abe5f395f51905f525416175f516020615abe5f395f51905f5255565b61147e57613321565b61142557005b61144f60ff60401b195f516020615abe5f395f51905f5254165f516020615abe5f395f51905f5255565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b6114ae600160401b60ff60401b195f516020615abe5f395f51905f525416175f516020615abe5f395f51905f5255565b613321565b63f92ee8a960e01b5f5260045ffd5b9050155f6113dc565b303b1591506113d4565b8591506113ca565b346104d55761095d610949610944610c9d36610bf8565b346104d55760203660031901126104d557600435611511816104d9565b602061151b613eec565b603d54606e546040516335f70e0760e11b81529485938493611541939160048601613276565b038173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b5761095d915f9161157e575b5060405190151581529081906020820190565b6115a0915060203d6020116115a6575b6115988183611289565b810190613436565b5f61156b565b503d61158e565b60403660031901126104d5576004356115c5816104d9565b6024356001600160401b0381116104d557366023820112156104d5576115f59036906024816004013591016112f5565b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163081149081156116ff575b506116f057335f9081525f516020615a5e5f395f51905f52602052604090205460ff1615610581576040516352d1902d60e01b8152916020836004816001600160a01b0386165afa5f93816116cf575b5061169c57634c9c8ce360e01b5f526001600160a01b03821660045260245ffd5b905f516020615a7e5f395f51905f5283036116bb57610bc792506153b2565b632a87526960e21b5f52600483905260245ffd5b6116e991945060203d602011610bf157610be38183611289565b925f61167b565b63703e46dd60e11b5f5260045ffd5b5f516020615a7e5f395f51905f52546001600160a01b0316141590505f61162b565b6004111561071757565b9060048210156107175752565b6060809160018060a01b03815116845260ff60208201511660208501526117676040820151604086019061172b565b0151910152565b6080810192916104f79190611738565b346104d55760403660031901126104d55760043561179b816104d9565b602435905f60606040516117ae81611253565b828152826020820152826040820152015260018060a01b038116805f52600260205260405f20548310156118175761095d61180b611805856118008660018060a01b03165f52600260205260405f2090565b61344a565b50613463565b6040519182918261176e565b90506359b171b960e11b5f5260045260245260445ffd5b346104d5575f3660031901126104d5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036116f05760206040515f516020615a7e5f395f51905f528152f35b346104d55760203660031901126104d5576004356118a2816104d9565b6118aa613c36565b604051630fe4da0760e41b8152600260048201526001600160a01b03831660248201529160a08360448173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b575f925f945f9261194e575b5061095d9291819086868315611944575b6119179495614c27565b90604051948594859260ff6060939695929660808601978652166020850152151560408401521515910152565b919350839161190d565b945092505060a0833d60a0116119a1575b8161196c60a09383611289565b810103126104d55761095d90835193611987602082016135c4565b9361199460408301613429565b94959492939091506118fc565b3d915061195f565b346104d55761095d610cb561093536610675565b346104d5575f3660031901126104d55760206001600160401b035f516020615abe5f395f51905f525416604051908152f35b346104d5575f60603660031901126104d557600435611a0d816104d9565b60243590611a1a826104d9565b60443591611a2783610e62565b73450421a334de63f75e1d47399d9713f755aaeff2803b156104d557604051630548f6d160e11b81526001600160a01b039384166004820152919092166024820152915f9183916064918391611a8190604484019061172b565b5af48015610a4b57611a91575080f35b610bc791505f90611289565b346104d557611aab36610675565b90611ab461446a565b611abd816149a4565b73450421a334de63f75e1d47399d9713f755aaeff291823b156104d55760405163f5eb38b760e01b8152600260048201526001600160a01b039283166024820152911660448201525f918290829060649082905af48015610a4b57611a91575080f35b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611b5257505050505090565b9091929394602080611b70600193603f19868203018752895161069d565b97019301930191939290611b43565b346104d55760203660031901126104d5576004356001600160401b0381116104d557366023820112156104d5578060040135906001600160401b0382116104d55736602483830101116104d55761095d916024611bdc92016134ab565b60405191829182611b20565b346104d5575f3660031901126104d557602060405160088152f35b346104d5575f3660031901126104d5576020603754604051908152f35b81516001600160a01b0316815261018081019291610160908190611c4c6020820151602086019061172b565b60408101516040850152611c6a6060820151606086019060ff169052565b6080810151608085015260a081015160a0850152611c9160c082015160c086019015159052565b60e081810151151590850152610100810151610100850152611cbe61012082015161012086019015159052565b6101408101516101408501520151910152565b346104d55760203660031901126104d557611d64610180600435611cf4816104d9565b611cfc613550565b50611d06816149a4565b611d0f81614eee565b611d17614f1f565b6040516226aba760e71b815260026004808301919091526003602483015260448201526001600160a01b03909216606483015215156084820152600160a4820152918290819060c4820190565b038173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b5761095d915f91611d9b575b5060405191829182611c20565b611dbd91506101803d8111611dc3575b611db58183611289565b8101906135d2565b5f611d8e565b503d611dab565b346104d557611dd836610e6c565b9091611de261446a565b6001600160a01b038116156106265783611dfe610bc7956149a4565b614851565b346104d55760203660031901126104d557600435611e20816104d9565b611e29816149a4565b611e3281614eee565b611e3a614f1f565b6040516317c296f160e31b815260026004808301919091526003602483015260448201526001600160a01b0390921660648301521515608482015260e08160a48173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b575f5f915f5f5f905f925f94611ee4575b604080519687526020870197909752958501959095529315156060840152608083019390935291151560a082015290151560c082015260e09150f35b50505050505050611f0f61095d9160e03d60e011611f1e575b611f078183611289565b81019061368d565b94965086959493909290611ea8565b503d611efd565b60206040818301928281528451809452019201905f5b818110611f485750505090565b9091926020608082611f5d6001948851611738565b019401929101611f3b565b346104d55760203660031901126104d557600435611f85816104d9565b6001600160a01b03165f9081526002602052604090208054611fa681612fb1565b91611fb46040519384611289565b81835260208301905f5260205f205f915b838310611fda576040518061095d8782611f25565b60026020600192611fea85613463565b815201920192019190611fc5565b346104d55761203c602061202061200e36610abf565b61201993929361446a565b369161322a565b604051633332cc1760e21b815293849283929060048401614f3b565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4908115610a4b575f9161207b575b50603d5490810180911161207657603d55005b6144e4565b612094915060203d602011610bf157610be38183611289565b5f612063565b346104d55760203660031901126104d5576004356120b7816104d9565b60018060a01b03165f526002602052602060405f2054604051908152f35b9190602083019260028210156107175752565b346104d55760203660031901126104d557600435612105816104d9565b6001600160a01b03165f818152603a602052604090205460ff16156105d4575f52603960205261095d60ff60405f205416604051918291826120d5565b60206040818301928281528451809452019201905f5b8181106121655750505090565b8251845260209384019390920191600101612158565b346104d55760203660031901126104d557600435612198816104d9565b60018060a01b03165f52603c60205260405f206040519081602082549182815201915f5260205f20905f5b8181106121e65761095d856121da81870382611289565b60405191829182612142565b82548452602090930192600192830192016121c3565b346104d5575f3660031901126104d5576020603854604051908152f35b346104d55761222736610675565b9061223061446a565b612239816149a4565b73450421a334de63f75e1d47399d9713f755aaeff291823b156104d557604051631d6957bb60e31b8152600360048201526001600160a01b039283166024820152911660448201525f918290829060649082905af48015610a4b57611a91575080f35b346104d5575f60403660031901126104d5576004356122ba816104d9565b602435906122c661446a565b6122cf816149a4565b73450421a334de63f75e1d47399d9713f755aaeff291823b156104d5576040516330d7388360e11b8152600360048201526001600160a01b0390921660248301526044820152905f90829060649082905af48015610a4b57611a91575080f35b346104d55760203660031901126104d55760043561234c816104d9565b6001600160a01b03165f908152600360205260409020805461236d81612fb1565b9161237b6040519384611289565b81835260208301905f5260205f205f915b8383106123a1576040518061095d8782611f25565b600260206001926123b185613463565b81520192019201919061238c565b346104d55761241260206123d236610fde565b6123da61446a565b604051631e0ced7b60e31b8152603a600482015260386024820152603960448201526080606482015293849283926084840191614961565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4908115610a4b57610bc791610bc2915f9161244a575b50603754614514565b612463915060203d602011610bf157610be38183611289565b5f612441565b346104d55760403660031901126104d557602060ff6124bb602435600435612490826104d9565b5f525f516020615a9e5f395f51905f52845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346104d5576124d536610e6c565b92916124df61446a565b6001600160a01b0316908115610626576124f8836149a4565b73450421a334de63f75e1d47399d9713f755aaeff292833b156104d5575f9361255e60c4936040519788968795635f47eaa960e01b8752600360048801526004602488015260018060a01b031660448701526064860152608485015260a484019061172b565b5af48015610a4b5761256c57005b80610fd25f610bc793611289565b346104d5575f3660031901126104d5576020606e54604051908152f35b346104d5575f3660031901126104d55760206040515f8152f35b346104d55760203660031901126104d5576004356125ce816104d9565b60018060a01b03165f526003602052602060405f2054604051908152f35b346104d5575f3660031901126104d557603b546040516001600160a01b039091168152602090f35b60405190612623602083611289565b5f8252565b346104d5575f3660031901126104d55761095d604051612649604082611289565b60058152640352e302e360dc1b602082015260405191829160208352602083019061069d565b346104d55761267d366110c9565b9061268661446a565b61268f816149a4565b63ffffffff821690612710821161117f576001600160a01b03165f81815260046020908152604091829020805467ffffffff00000000191695821b67ffffffff00000000169590951790945551918252917fe93d5cc9eb4a35d6cb221ddcb2352142c953452f7ef45af1332cee37a16d51e591a2005b916127249061069a949215158452606060208501526060840190610961565b916040818403910152610961565b346104d5575f3660031901126104d55761274a614f1f565b60405190630a49677560e31b8252600260048301526003602483015260046044830152606e6064830152151560848201525f8160a48173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b575f905f925f916127b9575b5061095d9060405193849384612705565b905061095d92506127dc91503d805f833e6127d48183611289565b8101906136d2565b90926127a8565b346104d5575f60403660031901126104d557600435612801816104d9565b6024359061280d61446a565b612816816149a4565b73450421a334de63f75e1d47399d9713f755aaeff291823b156104d55760405163ad3227ef60e01b8152600260048201526001600160a01b0390921660248301526044820152905f90829060649082905af48015610a4b57611a91575080f35b9080602083519182815201916020808360051b8301019401925f915b8383106128a157505050505090565b90919293946020806128bf600193601f1986820301875289516106c1565b97019301930191939290612892565b9061069a908251815260e08061294a6129206128fb602088015161010060208801526101008701906106c1565b6040888101516001600160401b03169087015260608801518682036060880152612876565b60808781015115159086015260a08781015115159086015260c087015185820360c0870152612876565b9401511515910152565b90602061069a9281815201906128ce565b346104d5575f61297436610675565b61297f929192613743565b5061298981614054565b612991613eec565b6129bc603d54926129a0614f1f565b9060405196879586956329a07aa760e01b875260048701613ae1565b038173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b575f906129f2575b61095d9060405191829182612954565b503d805f833e612a028183611289565b8101906020818303126104d5578051916001600160401b0383116104d55761095d92612a2e92016138cf565b6129e2565b346104d55760203660031901126104d557600435612a50816104d9565b612a5861446a565b612a61816149a4565b6001600160a01b0381165f90815260026020526040902054612b27575b612a8781614ffb565b603b54612a9e90610f24906001600160a01b031681565b803b156104d557604051631c46bc6f60e01b81526001600160a01b0383166004820152905f908290602490829084905af18015610a4b57612b13575b50612ae48161504e565b6001600160a01b03167f19321bf6948e80ca14d962cefce15c7ab5076503582e3af94e1c0c080f3238515f80a2005b80610fd25f612b2193611289565b5f612ada565b612b3081614fb6565b612a7e565b346104d557612b676020612b4b61200e36610abf565b604051630bbe8ebd60e41b815293849283929060048401614f3b565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4908115610a4b575f91612ba1575b50603d5490810390811161207657603d55005b612bba915060203d602011610bf157610be38183611289565b5f612b8e565b90602061069a928181520190612876565b346104d5575f3660031901126104d557606e54612bed81612fb1565b90612bfb6040519283611289565b80825260208201606e5f527f9930d9ff0dee0ef5ca2f7710ea66b8f84dd0f5f5351ecffe72b952cd9db7142a5f915b838310612c3f576040518061095d8782612bc0565b60036020600192612c4f85613b57565b815201920192019190612c2a565b346104d55760403660031901126104d557610bc7602435600435612c80826104d9565b612ca5610d96825f525f516020615a9e5f395f51905f52602052600160405f20015490565b6146c0565b346104d5575f3660031901126104d557602060405173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8152f35b346104d5575f3660031901126104d5576020610dde613c36565b9061069a91602081526020612d12835160408385015260608401906128ce565b920151906040601f1982850301910152610848565b346104d557612d3536610675565b60405190612d4282611233565b612d4a613743565b82525f602083019160608352612d5f81614054565b612d67613eec565b612d92603d5492612d76614f1f565b90604051988995869563cab33e7b60e01b875260048701613ae1565b038173450421a334de63f75e1d47399d9713f755aaeff25af4928315610a4b5761095d93612dcb915f905f92612dd9575b508452614326565b905260405191829182612cf2565b9050612df791503d805f833e612def8183611289565b810190613ea5565b905f612dc3565b346104d5575f3660031901126104d55761095d612e19613eec565b604051918291602083526020830190610961565b346104d55760203660031901126104d557600435612e4a816104d9565b612e5261446a565b612e5b816149a4565b603b546001600160a01b031690813b156104d557604051631c46bc6f60e01b81526001600160a01b039091166004820152905f908290602490829084905af18015610a4b5761256c57005b346104d55760203660031901126104d557611d64610180600435612ec9816104d9565b612ed1613550565b50612edb816149a4565b612ee481614eee565b612eec614f1f565b6040516226aba760e71b815260026004808301919091526003602483015260448201526001600160a01b039092166064830152151560848201525f60a4820152918290819060c4820190565b346104d55760203660031901126104d557600435612f55816104d9565b612f5d61446a565b612f66816149a4565b603b546001600160a01b031690813b156104d55760405163fac09e8760e01b81526001600160a01b039091166004820152905f908290602490829084905af18015610a4b5761256c57005b6001600160401b03811161124e5760051b60200190565b9080601f830112156104d5578135612fdf81612fb1565b92612fed6040519485611289565b81845260208085019260051b8201019283116104d557602001905b8282106130155750505090565b8135815260209182019101613008565b346104d55760603660031901126104d5576004356001600160401b0381116104d557366023820112156104d55780600401359061306182612fb1565b9161306f6040519384611289565b8083526024602084019160051b830101913683116104d557602401905b8282106130d657602435846001600160401b0382116104d5576130b66130c4923690600401612fc8565b6130be6104ea565b91613f57565b60408051928352901515602083015290f35b6020809183356130e5816104d9565b81520191019061308c565b346104d55760203660031901126104d55760043561310c61446a565b6001546001600160a01b03161561315d57610e1081106106265760407f8517713fa4ff1f4d78f1a611f588f5200338514d49a4e224d5de5ff73020b9c0915f5490805f5582519182526020820152a1005b636c9e815560e01b5f5260045ffd5b346104d5575f3660031901126104d55760205f54604051908152f35b51906104f7826104d9565b9080601f830112156104d55781516131aa81612fb1565b926131b86040519485611289565b81845260208085019260051b8201019283116104d557602001905b8282106131e05750505090565b6020809183516131ef816104d9565b8152019101906131d3565b906020828203126104d55781516001600160401b0381116104d55761069a9201613193565b6040513d5f823e3d90fd5b92919061323681612fb1565b936132446040519586611289565b602085838152019160051b81019283116104d557905b82821061326657505050565b813581526020918201910161325a565b9261328e60809396959260a0865260a0860190610961565b6020850196909652606f604085015260608401526001600160a01b0316910152565b604080519091906132c18382611289565b6001815291601f1901366020840137565b634e487b7160e01b5f52603260045260245ffd5b8051156132f35760200190565b6132d2565b80518210156132f35760209160051b010190565b908160209103126104d5575161069a816104d9565b906133bd9261336c91613332615387565b61333a615387565b60018060a01b03166bffffffffffffffffffffffff60a01b6001541617600155610e105f556133676149c2565b614a8f565b613374614760565b602061337e6132b0565b6133a361338a826132e6565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9052565b6040518094819263179c82ef60e21b83526004830161099d565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4918215610a4b576133f7926133f2915f916133fa575b50614b5d565b61458f565b50565b61341c915060203d602011613422575b6134148183611289565b81019061330c565b5f6133ec565b503d61340a565b519081151582036104d557565b908160209103126104d55761069a90613429565b80548210156132f3575f5260205f209060011b01905f90565b9060405161347081611253565b809260ff815460018060a01b0381168452818160a01c16602085015260a81c1660048110156107175760609160019160408501520154910152565b90303303610581578101906020818303126104d5578035906001600160401b0382116104d557019080601f830112156104d55781356134e981612fb1565b926134f76040519485611289565b81845260208085019260051b820101918383116104d55760208201905b83821061352357505050505090565b81356001600160401b0381116104d5576020916135458784809488010161132b565b815201910190613514565b6040519061018082018281106001600160401b0382111761124e576040525f610160838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201520152565b51906104f782610e62565b519060ff821682036104d557565b90816101809103126104d5576101606135e96112aa565b916135f381613188565b8352613601602082016135b9565b60208401526040810151604084015261361c606082016135c4565b60608401526080810151608084015260a081015160a084015261364160c08201613429565b60c084015261365260e08201613429565b60e08401526101008101516101008401526136706101208201613429565b610120840152610140810151610140840152015161016082015290565b908160e09103126104d5578051916020820151916040810151916136b360608301613429565b9160808101519161069a60c06136cb60a08501613429565b9301613429565b916060838303126104d5576136e683613429565b9260208101516001600160401b0381116104d55783613706918301613193565b9260408201516001600160401b0381116104d55761069a9201613193565b604051906137318261126e565b5f604083828152606060208201520152565b6040519061010082018281106001600160401b0382111761124e576040525f60e083828152613770613724565b60208201528260408201526060808201528260808201528260a0820152606060c08201520152565b81601f820112156104d5576020815191016137b2826112da565b926137c06040519485611289565b828452828201116104d557815f926020928386015e8301015290565b9190916060818403126104d557604051906137f68261126e565b81938151613803816104d9565b83526020820151906001600160401b0382116104d5578261382d6040949261383894869401613798565b6020860152016135c4565b910152565b51906001600160401b03821682036104d557565b9080601f830112156104d557815161386881612fb1565b926138766040519485611289565b81845260208085019260051b820101918383116104d55760208201905b8382106138a257505050505090565b81516001600160401b0381116104d5576020916138c4878480948801016137dc565b815201910190613893565b919091610100818403126104d5576138e56112ba565b928151845260208201516001600160401b0381116104d557816139099184016137dc565b602085015261391a6040830161383d565b604085015260608201516001600160401b0381116104d5578161393e918401613851565b606085015261394f60808301613429565b608085015261396060a08301613429565b60a085015260c0820151916001600160401b0383116104d55761398a60e092613995948301613851565b60c086015201613429565b60e0830152565b90600182811c921680156139ca575b60208310146139b657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916139ab565b6035545f92916139e38261399c565b8082529160018116908115613a4457506001146139fe575050565b60355f9081529293509091905f516020615a3e5f395f51905f525b838310613a2a575060209250010190565b600181602092949394548385870101520191019190613a19565b9050602093945060ff929192191683830152151560051b010190565b5f9291815491613a6f8361399c565b8083529260018116908115613ac45750600114613a8b57505050565b5f9081526020812093945091925b838310613aaa575060209250010190565b600181602092949394548385870101520191019190613a99565b915050602093945060ff929192191683830152151560051b010190565b92613b1f61069a96939592600286526003602087015260046040870152606f6060870152606e608087015261016060a0870152610160860190610961565b60c08501959095526001600160a01b0390811660e0850152166101008301521515610120820152808203610140909101526035613a60565b90604051613b648161126e565b809260018060a01b03815416825260018101604051905f90805490613b888261399c565b8085529160018116908115613c0e5750600114613bd0575b505060026104f7949383613bbb604095613bc8950382611289565b6020860152015460ff1690565b60ff16910152565b5f908152602081209092505b818310613bf4575050810160200160026104f7613ba0565b600181602092949394548385880101520191019190613bdc565b60ff191660208087019190915292151560051b85019092019250600291506104f79050613ba0565b6001545f5460405163da5990cd60e01b81526001600160a01b039092166004830152602482015260208160448173450421a334de63f75e1d47399d9713f755aaeff25af4908115610a4b575f91613c8b575090565b61069a915060203d6020116115a6576115988183611289565b519060078210156104d557565b9080601f830112156104d557815191613cc983612fb1565b92613cd76040519485611289565b80845260208085019160051b830101918383116104d55760208101915b838310613d0357505050505090565b82516001600160401b0381116104d557820190610260828703601f1901126104d557613d2d6112ca565b9060208301516001600160401b0381116104d557876020613d50928601016137dc565b8252613d5e60408401613188565b602083015260608301516040830152613d7960808401613429565b606083015260a08301516001600160401b0381116104d557876020613da0928601016137dc565b608083015260c083015160a083015260e083015160c0830152613dc661010084016135c4565b60e0830152613dd86101208401613429565b610100830152613deb6101408401613429565b6101208301526101608301516101408301526101808301516101608301526101a08301516101808301526101c0830151916001600160401b0383116104d557613e9461026085613e438b602080999881990101613798565b6101a0850152613e566101e08201613ca4565b6101c0850152613e696102008201613429565b6101e0850152610220810151610200850152613e886102408201613429565b61022085015201613429565b610240820152815201920191613cf4565b9190916040818403126104d55780516001600160401b0381116104d55783613ece9183016138cf565b9260208201516001600160401b0381116104d55761069a9201613cb1565b60405190603854808352826020810160385f5260205f20925f5b818110613f1b5750506104f792500383611289565b84546001600160a01b0316835260019485019487945060209093019201613f06565b91908260409103126104d55761069a602083519301613429565b6040516333abc92760e21b815260026004820152606f6024820152606e604482015260e060648201529392918491613f939060e4840190610961565b600319838203016084840152602080835192838152019201905f5b81811061403b575050506001600160a01b0390921660a48201526040918190613fe2908281036003190160c48401526139d4565b038173450421a334de63f75e1d47399d9713f755aaeff25af4918215610a4b575f905f9361400f57509190565b9050610af791925060403d604011614034575b61402c8183611289565b810190613f3d565b503d614022565b8251845287945060209384019390920191600101613fae565b6001600160a01b0381166140655750565b6104f790614eee565b906020828203126104d55781516001600160401b0381116104d55761069a9201613cb1565b906141005f916141456140a4613eec565b91614133603d54916141296140b7614f1f565b91604051998a9889986375feb8b360e11b8a52600260048b0152600360248b0152600460448b0152606f60648b0152606e60848b015261018060a48b01526101848a0190610961565b60c48901969096526001600160a01b0390811660e489015261010488018a905216610124870152565b1515610144850152565b828103600319016101648401526139d4565b038173450421a334de63f75e1d47399d9713f755aaeff25af4908115610a4b575f9161416f575090565b61069a91503d805f833e6141838183611289565b81019061406e565b915f916141456141f9926141336141a0613eec565b93614129603d54936141b0614f1f565b926040519a8b998a996375feb8b360e11b8b52600260048c0152600360248c0152600460448c0152606f60648c0152606e60848c015261018060a48c01526101848b0190610961565b60c48a01979097526001600160a01b0390811660e48a015290811661010489015216610124870152565b9061422d82612fb1565b61423a6040519182611289565b828152809261424b601f1991612fb1565b01905f5b82811061425b57505050565b60209060405161426a8161126e565b6142726112ca565b61427a613724565b81525f848201525f60408201525f6060820152614295613724565b60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f61018082015260606101a08201525f6101c08201525f6101e08201525f6102008201525f6102208201525f6102408201528152606083820152606060408201528282850101520161424f565b90602061069a92818152019061069d565b90815161433281614223565b60405163e567e86960e01b6020820152600481529093614353602483611289565b5f916060905f5b85811061436957505050505050565b614387602061437883876132f8565b5101516001600160a01b031690565b8882158015614454575b61441e575b6143f683928660206143c486614409966143b260019a8e6132f8565b516143bd83836132f8565b51526132f8565b5101526144046101a06143d7868b6132f8565b51015160405163867430a560e01b602082015293849160248301614315565b03601f198101845283611289565b6152f0565b6040614415838c6132f8565b5101520161435a565b8596508294506143f6826144099260206143c461443e8960019998615186565b939b509298509495508994509250614396915050565b506001600160a01b038281169088161415614391565b335f9081527f511d0314ee32589a99ab73eccd900c257efd9224711c0e5aadda466017c07f6c602052604090205460ff161561058157565b908160209103126104d5575190565b90602080835192838152019201905f5b8181106144ce5750505090565b82518452602093840193909201916001016144c1565b634e487b7160e01b5f52601160045260245ffd5b90601f820180921161207657565b604001908160401161207657565b9190820180921161207657565b5f1981146120765760010190565b6001600160a01b0381166145405750565b6104f7906149a4565b5f8181525f516020615a9e5f395f51905f526020908152604080832033845290915290205460ff16156145795750565b63e2517d3f60e01b5f523360045260245260445ffd5b6001600160a01b0381165f9081525f516020615a5e5f395f51905f52602052604090205460ff16614613576001600160a01b03165f8181525f516020615a5e5f395f51905f5260205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b505f90565b5f8181525f516020615a9e5f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff166146ba575f8181525f516020615a9e5f395f51905f52602090815260408083206001600160a01b03861684529091529020805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b5f8181525f516020615a9e5f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16156146ba575f8181525f516020615a9e5f395f51905f52602090815260408083206001600160a01b03861684529091529020805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b73549f6fb0ec34e18a82a320b79c968a9ca6e7b96b803b156104d5575f6040518092632255f1e560e11b8252606e6004830152606f602483015273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60448301526080606483015281806147c9608482016139d4565b03915af48015610a4b576147da5750565b806147e65f8093611289565b8003126104d557565b73549f6fb0ec34e18a82a320b79c968a9ca6e7b96b90813b156104d557604051632255f1e560e11b8152606e6004820152606f60248201526001600160a01b03909116604482015260806064820152905f90829081806147c9608482016139d4565b919273450421a334de63f75e1d47399d9713f755aaeff292833b156104d557604051636f067e9b60e01b8152600260048201526001600160a01b039182166024820152921660448301526064820193909352915f91839160a49183916148bb90608484019061172b565b5af48015610a4b576147da5750565b5f1981019190821161207657565b9190820391821161207657565b6148ed613724565b506001600160a01b03165f908152606f60205260409020548015614952575f19810190811161207657606e548110156132f357600361069a91606e5f52027f9930d9ff0dee0ef5ca2f7710ea66b8f84dd0f5f5351ecffe72b952cd9db7142a01613b57565b63470cbf4760e01b5f5260045ffd5b916020908281520191905f5b81811061497a5750505090565b909192602080600192863561498e816104d9565b848060a01b03168152019401910191909161496d565b6001600160a01b03165f908152606f60205260409020541561495257565b6149ca615387565b6149d560355461399c565b601f81116149ee575b5060066208aa8960eb1b01603555565b60038111156149de5760355f52614a1890601f0160051c5f516020615a3e5f395f51905f52614a1e565b5f6149de565b5f5b828110614a2c57505050565b5f82820155600101614a20565b601f8111614a45575050565b818111614a50575050565b60355f526104f7915f516020615a3e5f395f51905f5291601f820160051c91602011614a87575b601f82910160051c039101614a1e565b5f9150614a77565b9081516001600160401b03811161124e57614ab481614aaf60355461399c565b614a39565b602092601f8211600114614af457614ae4929382915f92614ae9575b50508160011b915f199060031b1c19161790565b603555565b015190505f80614ad0565b60355f52601f198216935f516020615a3e5f395f51905f52915f5b868110614b455750836001959610614b2d575b505050811b01603555565b01515f1960f88460031b161c191690555f8080614b22565b91926020600181928685015181550194019201614b0f565b603b54906001600160a01b038216610626576001600160a01b03166001600160a01b0319919091168117603b55603854600160401b81101561124e5760018101806038558110156132f3577f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561990180546001600160a01b031916919091179055603b546001600160a01b03165f908152603960205260409020805460ff19169055603b546001600160a01b03165f908152603a602052604090206104f790805460ff19166001179055565b6001600160a01b0381165f9081526003602052604090209094919291905415801590614ec4575b15614ebb578315614eb3575b508215614ea55750505f5b6001600160a01b0383165f9081526003602052604081209093815490614c8a826155d6565b915f935f5b828110614e69575050506001600160a01b03165f9081526004602052604090209180151580614e61575b80614e58575b614d4b575b50505460201c63ffffffff169163ffffffff831615159081614d42575b5080614d39575b614cf157505090565b614d13614d1d91614d076305f5e1008092615612565b5f8112614d2b5761598c565b9163ffffffff1690565b10614d255790565b50600190565b614d3490615645565b61598c565b505f8113614ce8565b9050155f614ce1565b614d5581836158f4565b600181811603614dfb57614d72614d6c8260011c90565b836132f8565b515b505f915f5b828110614dc957505050614d91825463ffffffff1690565b9063ffffffff821615159182614db9575b5050614db0575b5f80614cc4565b60019350614da9565b63ffffffff161090505f80614da2565b614de186614d07614dda84866132f8565b5182615612565b848111614df2575b50600101614d79565b93506001614de9565b614e53614e088260011c90565b614e4d614e46614e20614e1a846148ca565b876132f8565b5192614e3f614e39614e32838a6132f8565b51926148ca565b886132f8565b5190615612565b6002900590565b9061562a565b614d74565b505f8413614cbf565b508415614cb9565b80614e7f614e796001938561344a565b506156b7565b15614e9f57614e97614e9089614521565b98886132f8565b525b01614c8f565b50614e99565b614eae91615553565b614c65565b92505f614c5a565b50505050505f90565b506001600160a01b0385165f90815260046020526040902063ffffffff905460201c161515614c4e565b6001600160a01b03165f8181526002602052604090205415614f0d5750565b638a7a791d60e01b5f5260045260245ffd5b6001546001600160a01b0316614f33575f90565b61069a613c36565b603a8152603c60208201526001600160a01b03909116604082015260806060820181905261069a929101906144b1565b8054905f815581614f7a575050565b600182901b916001600160ff1b03811603612076575f5260205f205f5b828110614fa357505050565b5f82820181815560010155600201614f97565b6001600160a01b03165f818152600260205260409020614fd590614f6b565b7fb1b3fcfbeb66e833b921ec0d9e5657f63d4a91bcce4ce3d3997908e59587d2735f80a2565b6001600160a01b03165f81815260036020526040902061501a90614f6b565b805f5260046020525f60408120557fa1b6dc7deb026229c35bf2f00bc74652d705ee14b199882a625f1101cc5c66ee5f80a2565b73549f6fb0ec34e18a82a320b79c968a9ca6e7b96b90813b156104d557604051636ee3218f60e11b8152606e6004820152606f60248201526001600160a01b039091166044820152905f90829060649082905af48015610a4b576150af5750565b5f6104f791611289565b6301ffc9a760e01b5f526301ffc9a760e01b60045260205f60248184617530fa5f511515601f3d11168161512a575b5015614613576301ffc9a760e01b5f9081526001600160e01b03196004526020916024908290617530fa5f511515601f3d111681615124575090565b90501590565b90505f6150e8565b3d1561515c573d90615143826112da565b916151516040519384611289565b82523d5f602084013e565b606090565b906020828203126104d55781516001600160401b0381116104d55761069a9201613798565b5f918291602082519201905afa61519b615132565b90158015615218575b61520f57602081018051602060408401519114801590615205575b6151fa576151cf601f19916144f8565b166151db835191614506565b116151f05760208261069a9351010190615161565b505061069a612614565b50505061069a612614565b50825181116151bf565b5061069a612614565b5060408151106151a4565b60405190615232602083611289565b5f80835282815b82811061524557505050565b806060602080938501015201615239565b6020818303126104d5578051906001600160401b0382116104d557019080601f830112156104d557815161528981612fb1565b926152976040519485611289565b81845260208085019260051b820101918383116104d55760208201905b8382106152c357505050505090565b81516001600160401b0381116104d5576020916152e587848094880101613798565b8152019101906152b4565b5f918291602082519201905afa615305615132565b9015801561537c575b615373575f6153319160405180938192632fcb619b60e11b835260048301614315565b038130620f4240fa5f918161534f575b5061069a575061069a615223565b61536c9192503d805f833e6153648183611289565b810190615256565b905f615341565b5061069a615223565b50604081511061530e565b60ff5f516020615abe5f395f51905f525460401c16156153a357565b631afcd79f60e31b5f5260045ffd5b90813b15615430575f516020615a7e5f395f51905f5280546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115615418576133f791615451565b50503461542157565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b905f8091602081519101845af480806154b1575b1561547457505061069a615655565b1561549957639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b3d15155f0361321f5763d6bda27560e01b5f5260045ffd5b503d1515806154655750813b1515615465565b604d811161207657600a0a90565b634e487b7160e01b5f52601260045260245ffd5b80156154f8576001600160ff1b030590565b6154d2565b80156154f85760015f1982141661207657600160ff1b0590565b81156154f857600160ff1b81145f19831416612076570590565b81810292915f8212600160ff1b82141661207657818405149015171561207657565b9060ff16600881146155d257600881116155ab57600803600881116120765761557b906154c4565b615584816154e6565b8213801561559a575b6146ba5761069a91615531565b506155a4816154fd565b821261558d565b60071981019190821161207657604c82116146ba576155cc61069a926154c4565b90615517565b5090565b906155e082612fb1565b6155ed6040519182611289565b82815280926155fe601f1991612fb1565b0190602036910137565b81156154f8570490565b81810392915f13801582851316918412161761207657565b9190915f838201938412911290801582169115161761207657565b600160ff1b8114612076575f0390565b604051903d82523d5f602084013e60203d830101604052565b519069ffffffffffffffffffff821682036104d557565b908160a09103126104d5576156998161566e565b9160208201519160408101519161069a60806060840151930161566e565b80549060a882901c60ff166156cb81611721565b6003810361583757506156e7610f246001600160a01b03841681565b90604051638e15f47360e01b8152604081600481865afa90815f915f93615814575b506157195750505050505f905f90565b90801561580c575b615802576001600160ff1b0381116158025791600460a05f9260405192838092633fabe5a360e21b82525afa5f91816157cc575b506157c4575b50806157bf575042156157b957615771426148ca565b428111156157ae57506001615787425b426148d8565b91015411156157a6576157a09160a01c60ff1690615553565b90600190565b50505f905f90565b615787600191615781565b5f615771565b615771565b90505f61575b565b6157ef91925060a03d60a0116157fb575b6157e78183611289565b810190615685565b5092505050905f615755565b503d6157dd565b505050505f905f90565b508015615721565b909250615830915060403d6040116140345761402c8183611289565b915f615709565b90600460a061584f610f246001600160a01b03871681565b604051633fabe5a360e21b815292839182905afa90815f915f936158c0575b5061587e5750505050505f905f90565b5f8113156158b5576002819461589381611721565b1461589f575b50615771565b6402540be400900592508215615802575f615899565b50505050505f905f90565b9092506158dc915060a03d60a0116157fb576157e78183611289565b5092505090915f61586e565b8015612076575f190190565b91906001905b8082106159075750509050565b61591182856132f8565b5192825b8015158061596e575b15615952575f198101908082116120765761593c61594d92886132f8565b5161594782896132f8565b526158e8565b615915565b9361596360019394929695866132f8565b5201909291926158fa565b505f198101818111612076576159858691886132f8565b511361591e565b9061599961271083615a1a565b9190928315615a0e5783821115615a0157612710829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b6011600383150218615a2d565b509061069a9250615608565b905f198183099102908180821091030391565b634e487b715f526020526024601cfdfecfa4bec1d3298408bb5afcfcd9c430549c5b31f8aa5c5848151c0a55f473c34db7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000822000af0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00
Deployed Bytecode
0x60806040526004361015610011575f80fd5b5f3560e01c806301ffc9a71461047f5780630603dbf21461047a5780630942a808146104755780630b8bd84614610470578063137e63201461046b5780631eb3d5e314610466578063248a9ca31461046157806326ff56fd1461045c5780632e2e1b2a146104575780632eab700b146104525780632f2ff15d1461044d578063332b2ee014610448578063358345991461044357806336568abe1461043e5780633715bcd1146104395780633aecc485146104345780633fbf3bad1461042f5780634396fff11461042a5780634571e3a6146104255780634bd843b8146104205780634d25bdda1461041b5780634f1ef2861461041657806351ab074c1461041157806352d1902d1461040c57806353084eff14610407578063546378cb1461040257806354fd4d50146103fd5780635aa2b300146103f85780635e41a282146103f35780635f96c336146103ee57806366a4b6c0146103e95780636b8d31b6146103e457806372279ba1146103df5780637718643a146103da578063778f66ed146103d55780637cc6ce52146103d057806383e45b17146103cb578063853b214e146103c657806387deb4ca146103c1578063888f2262146103bc5780638a12fad9146103b75780638b17722a146103b25780638dbd758c146103ad5780638dca81c3146103a8578063915d8653146103a357806391d148541461039e5780639eb1e19614610399578063a0aead4d1461033a578063a217fddf14610394578063a63658c91461038f578063ac3351bd1461038a578063ad3cb1cc14610385578063afc0636214610380578063b252720b1461037b578063bd0c959c14610376578063c3a28a1414610371578063c906d2cf1461036c578063ca68af4214610367578063cf5cb13214610362578063d547741f1461035d578063d5bcb61014610358578063e0f71fbe14610353578063e1d0bb821461034e578063e31ada9714610349578063e87d372714610344578063e8e4da961461033f578063eafe7a741461033a578063f66358f614610335578063fde859b514610330578063fe0c25861461032b5763ffa9274d14610326575f80fd5b61316c565b6130f0565b613025565b612f38565b61257a565b612ea6565b612e2d565b612dfe565b612d27565b612cd8565b612caa565b612c5d565b612bd1565b612b35565b612a33565b612965565b6127e3565b612732565b61266f565b612628565b6125ec565b6125b1565b612597565b6124c7565b612469565b6123bf565b61232f565b61229c565b612219565b6121fc565b61217b565b6120e8565b61209a565b611ff8565b611f68565b611e03565b611dca565b611cd1565b611c03565b611be8565b611b7f565b611a9d565b6119ef565b6119bd565b6119a9565b611885565b61182e565b61177e565b6115ad565b6114f4565b6114dd565b611346565b61119d565b6110f5565b611008565b610ea5565b610e1a565b610df2565b610da0565b610d4e565b610cc1565b610c89565b610afb565b610a50565b6109ae565b61091e565b610635565b610590565b6104f9565b346104d55760203660031901126104d55760043563ffffffff60e01b81168091036104d557602090637965db0b60e01b81149081156104c4575b506040519015158152f35b6301ffc9a760e01b1490505f6104b9565b5f80fd5b6001600160a01b038116036104d557565b604435906104f7826104d9565b565b346104d55760203660031901126104d557600435610516816104d9565b335f9081525f516020615a5e5f395f51905f52602052604090205460ff161561058157600180546001600160a01b039283166001600160a01b0319821681179092559091167f2a59683570cc5c432ceb0946923d7692d85f972004dacdcb650e52bbb9ad03585f80a3005b63ea8e4eb560e01b5f5260045ffd5b346104d55760203660031901126104d5576004356105ad816104d9565b6001600160a01b03811615610626576105c5816150b9565b90816105e3575b50156105d457005b6362351e0360e11b5f5260045ffd5b6301ffc9a760e01b5f90815263076d6d1f60e01b60045260209250906024908290617530fa5f511515601f3d11168161061e575b505f6105cc565b90505f610617565b6317dbc4cb60e21b5f5260045ffd5b346104d55760203660031901126104d557600435610652816104d9565b60018060a01b03165f52603a602052602060ff60405f2054166040519015158152f35b60409060031901126104d55760043561068d816104d9565b9060243561069a816104d9565b90565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060018060a01b038251168152604060ff816106ec602086015160606020870152606086019061069d565b9401511691015290565b634e487b7160e01b5f52602160045260245ffd5b9060078210156107175752565b6106f6565b9061069a90610240806107fc610782610740875161026087526102608701906106c1565b6020888101516001600160a01b031690870152604088015160408701526107706060890151606088019015159052565b608088015186820360808801526106c1565b60a087015160a086015260c087015160c08601526107aa60e088015160e087019060ff169052565b61010087810151151590860152610120878101511515908601526101408701516101408601526101608701516101608601526101808701516101808601526101a08701518582036101a087015261069d565b946108116101c08201516101c086019061070a565b6101e08181015115159085015261020081015161020085015261083f61022082015161022086019015159052565b01511515910152565b9080602083519182815201916020808360051b8301019401925f915b83831061087357505050505090565b9091929394601f19828203018352855160406108ad61089b835160608652606086019061071c565b6020840151858203602087015261069d565b910151916040818303910152815180825260208201906020808260051b8501019401925f5b8281106108f357505050505060208060019297019301930191939290610864565b9091929394602080610911600193601f19878203018952895161069d565b97019501939291016108d2565b346104d55761095d61094961094461093536610675565b9061093f82614054565b614093565b614326565b604051918291602083526020830190610848565b0390f35b90602080835192838152019201905f5b81811061097e5750505090565b82516001600160a01b0316845260209384019390920191600101610971565b90602061069a928181520190610961565b346104d55760203660031901126104d5576004356109cb816104d9565b60405163448b6bc760e11b8152603860048201526001600160a01b0390911660248201525f8160448173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af48015610a4b5761095d915f91610a29575b506040519182918261099d565b610a4591503d805f833e610a3d8183611289565b8101906131fa565b5f610a1c565b61321f565b346104d55760203660031901126104d5576020610a876004355f525f516020615a9e5f395f51905f52602052600160405f20015490565b604051908152f35b9181601f840112156104d5578235916001600160401b0383116104d5576020808501948460051b0101116104d557565b9060406003198301126104d557600435610ad8816104d9565b91602435906001600160401b0382116104d557610af791600401610a8f565b9091565b346104d557610b0936610abf565b91610b1261446a565b6001600160a01b0316801561062657610b32602092610b7794369161322a565b90604051938492839263596411dd60e11b8452603a60048501526038602485015260396044850152603c6064850152608484015260c060a484015260c48301906144b1565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4908115610a4b57610bb491610baf915f91610bc9575b50603d54614514565b603d55565b610bc7610bc2603754614521565b603755565b005b610beb915060203d602011610bf1575b610be38183611289565b8101906144a2565b5f610ba6565b503d610bd9565b60609060031901126104d557600435610c10816104d9565b90602435610c1d816104d9565b9060443561069a816104d9565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310610c5c57505050505090565b9091929394602080610c7a600193603f19868203018752895161071c565b97019301930191939290610c4d565b346104d55761095d610cb5610c9d36610bf8565b91610ca783614054565b610cb08261452f565b61418b565b60405191829182610c2a565b346104d55760203660031901126104d557600435610cde816104d9565b5f6020604051610ced81611233565b828152015260018060a01b03165f52600460205261095d60405f2063ffffffff60405191610d1a83611233565b54818116835260201c16602082015260405191829182919091602063ffffffff816040840195828151168552015116910152565b346104d55760403660031901126104d557610bc7602435600435610d71826104d9565b610d9b610d96825f525f516020615a9e5f395f51905f52602052600160405f20015490565b614549565b614618565b346104d55760203660031901126104d5576020610dde600435610dc2816104d9565b6001600160a01b03165f908152606f6020526040902054151590565b6040519015158152f35b5f9103126104d557565b346104d5575f3660031901126104d5576001546040516001600160a01b039091168152602090f35b346104d55760403660031901126104d557600435602435610e3a816104d9565b336001600160a01b03821603610e5357610bc7916146c0565b63334bd91960e11b5f5260045ffd5b600411156104d557565b60809060031901126104d557600435610e84816104d9565b90602435610e91816104d9565b90604435610e9e81610e62565b9060643590565b346104d557610eb336610e6c565b929190610ebe61446a565b6001600160a01b038316938415610626576001600160a01b03831615610626576001600160a01b0384165f908152606f602052604090205461062657610f0d92610f07856147ef565b84614851565b603b54610f3090610f24906001600160a01b031681565b6001600160a01b031690565b90813b156104d55760405163fac09e8760e01b81526001600160a01b0382166004820152915f908390602490829084905af1908115610a4b576040610fa3610fab927fcfb9f3e804d78a94a33ff540f54918180ba00c72ae82312d83c6619c444415b195610fbf95610fc4575b506148e5565b015160ff1690565b60405160ff90911681529081906020820190565b0390a2005b80610fd25f610fd893611289565b80610de8565b5f610f9d565b60206003198201126104d557600435906001600160401b0382116104d557610af791600401610a8f565b346104d557602061101836610fde565b61102392919261446a565b603b5460405163b8b708bf60e01b8152603a600482015260386024820152603960448201526001600160a01b03909116606482015260a0608482015292839182916110729160a4840191614961565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4908115610a4b57610bc791610bc2915f916110aa575b506037546148d8565b6110c3915060203d602011610bf157610be38183611289565b5f6110a1565b60409060031901126104d5576004356110e1816104d9565b9060243563ffffffff811681036104d55790565b346104d55763ffffffff611108366110c9565b61111392919261446a565b61111c836149a4565b169081158015611192575b61117f576001600160a01b03165f81815260046020908152604091829020805463ffffffff191685179055905192835290917fdc5d39aca5842c1b97b84752e2a223e25fdc92a14cfbbe0ea240d071af6bf46a9190a2005b506310b6149d60e21b5f5260045260245ffd5b506127108211611127565b346104d55760203660031901126104d5576004356111ba816104d9565b5f6111c3613eec565b603d54606e5460405163573c424d60e01b815294859384936111e9939160048601613276565b038173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b5761095d915f91610a2957506040519182918261099d565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761124e57604052565b61121f565b608081019081106001600160401b0382111761124e57604052565b606081019081106001600160401b0382111761124e57604052565b90601f801991011681019081106001600160401b0382111761124e57604052565b604051906104f761018083611289565b604051906104f761010083611289565b604051906104f761026083611289565b6001600160401b03811161124e57601f01601f191660200190565b929192611301826112da565b9161130f6040519384611289565b8294818452818301116104d5578281602093845f960137010152565b9080601f830112156104d55781602061069a933591016112f5565b346104d55760603660031901126104d557600435611363816104d9565b60243590611370826104d9565b6044356001600160401b0381116104d55761138f90369060040161132b565b5f516020615abe5f395f51905f5254926001600160401b036113c060ff604087901c1615956001600160401b031690565b16801590816114d5575b60011490816114cb575b1590816114c2575b506114b35761141f928461141660016001600160401b03195f516020615abe5f395f51905f525416175f516020615abe5f395f51905f5255565b61147e57613321565b61142557005b61144f60ff60401b195f516020615abe5f395f51905f5254165f516020615abe5f395f51905f5255565b604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1005b6114ae600160401b60ff60401b195f516020615abe5f395f51905f525416175f516020615abe5f395f51905f5255565b613321565b63f92ee8a960e01b5f5260045ffd5b9050155f6113dc565b303b1591506113d4565b8591506113ca565b346104d55761095d610949610944610c9d36610bf8565b346104d55760203660031901126104d557600435611511816104d9565b602061151b613eec565b603d54606e546040516335f70e0760e11b81529485938493611541939160048601613276565b038173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b5761095d915f9161157e575b5060405190151581529081906020820190565b6115a0915060203d6020116115a6575b6115988183611289565b810190613436565b5f61156b565b503d61158e565b60403660031901126104d5576004356115c5816104d9565b6024356001600160401b0381116104d557366023820112156104d5576115f59036906024816004013591016112f5565b906001600160a01b037f00000000000000000000000007bd077cfb40bbda8a67d0d33ce41b974ab0f8a8163081149081156116ff575b506116f057335f9081525f516020615a5e5f395f51905f52602052604090205460ff1615610581576040516352d1902d60e01b8152916020836004816001600160a01b0386165afa5f93816116cf575b5061169c57634c9c8ce360e01b5f526001600160a01b03821660045260245ffd5b905f516020615a7e5f395f51905f5283036116bb57610bc792506153b2565b632a87526960e21b5f52600483905260245ffd5b6116e991945060203d602011610bf157610be38183611289565b925f61167b565b63703e46dd60e11b5f5260045ffd5b5f516020615a7e5f395f51905f52546001600160a01b0316141590505f61162b565b6004111561071757565b9060048210156107175752565b6060809160018060a01b03815116845260ff60208201511660208501526117676040820151604086019061172b565b0151910152565b6080810192916104f79190611738565b346104d55760403660031901126104d55760043561179b816104d9565b602435905f60606040516117ae81611253565b828152826020820152826040820152015260018060a01b038116805f52600260205260405f20548310156118175761095d61180b611805856118008660018060a01b03165f52600260205260405f2090565b61344a565b50613463565b6040519182918261176e565b90506359b171b960e11b5f5260045260245260445ffd5b346104d5575f3660031901126104d5577f00000000000000000000000007bd077cfb40bbda8a67d0d33ce41b974ab0f8a86001600160a01b031630036116f05760206040515f516020615a7e5f395f51905f528152f35b346104d55760203660031901126104d5576004356118a2816104d9565b6118aa613c36565b604051630fe4da0760e41b8152600260048201526001600160a01b03831660248201529160a08360448173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b575f925f945f9261194e575b5061095d9291819086868315611944575b6119179495614c27565b90604051948594859260ff6060939695929660808601978652166020850152151560408401521515910152565b919350839161190d565b945092505060a0833d60a0116119a1575b8161196c60a09383611289565b810103126104d55761095d90835193611987602082016135c4565b9361199460408301613429565b94959492939091506118fc565b3d915061195f565b346104d55761095d610cb561093536610675565b346104d5575f3660031901126104d55760206001600160401b035f516020615abe5f395f51905f525416604051908152f35b346104d5575f60603660031901126104d557600435611a0d816104d9565b60243590611a1a826104d9565b60443591611a2783610e62565b73450421a334de63f75e1d47399d9713f755aaeff2803b156104d557604051630548f6d160e11b81526001600160a01b039384166004820152919092166024820152915f9183916064918391611a8190604484019061172b565b5af48015610a4b57611a91575080f35b610bc791505f90611289565b346104d557611aab36610675565b90611ab461446a565b611abd816149a4565b73450421a334de63f75e1d47399d9713f755aaeff291823b156104d55760405163f5eb38b760e01b8152600260048201526001600160a01b039283166024820152911660448201525f918290829060649082905af48015610a4b57611a91575080f35b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611b5257505050505090565b9091929394602080611b70600193603f19868203018752895161069d565b97019301930191939290611b43565b346104d55760203660031901126104d5576004356001600160401b0381116104d557366023820112156104d5578060040135906001600160401b0382116104d55736602483830101116104d55761095d916024611bdc92016134ab565b60405191829182611b20565b346104d5575f3660031901126104d557602060405160088152f35b346104d5575f3660031901126104d5576020603754604051908152f35b81516001600160a01b0316815261018081019291610160908190611c4c6020820151602086019061172b565b60408101516040850152611c6a6060820151606086019060ff169052565b6080810151608085015260a081015160a0850152611c9160c082015160c086019015159052565b60e081810151151590850152610100810151610100850152611cbe61012082015161012086019015159052565b6101408101516101408501520151910152565b346104d55760203660031901126104d557611d64610180600435611cf4816104d9565b611cfc613550565b50611d06816149a4565b611d0f81614eee565b611d17614f1f565b6040516226aba760e71b815260026004808301919091526003602483015260448201526001600160a01b03909216606483015215156084820152600160a4820152918290819060c4820190565b038173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b5761095d915f91611d9b575b5060405191829182611c20565b611dbd91506101803d8111611dc3575b611db58183611289565b8101906135d2565b5f611d8e565b503d611dab565b346104d557611dd836610e6c565b9091611de261446a565b6001600160a01b038116156106265783611dfe610bc7956149a4565b614851565b346104d55760203660031901126104d557600435611e20816104d9565b611e29816149a4565b611e3281614eee565b611e3a614f1f565b6040516317c296f160e31b815260026004808301919091526003602483015260448201526001600160a01b0390921660648301521515608482015260e08160a48173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b575f5f915f5f5f905f925f94611ee4575b604080519687526020870197909752958501959095529315156060840152608083019390935291151560a082015290151560c082015260e09150f35b50505050505050611f0f61095d9160e03d60e011611f1e575b611f078183611289565b81019061368d565b94965086959493909290611ea8565b503d611efd565b60206040818301928281528451809452019201905f5b818110611f485750505090565b9091926020608082611f5d6001948851611738565b019401929101611f3b565b346104d55760203660031901126104d557600435611f85816104d9565b6001600160a01b03165f9081526002602052604090208054611fa681612fb1565b91611fb46040519384611289565b81835260208301905f5260205f205f915b838310611fda576040518061095d8782611f25565b60026020600192611fea85613463565b815201920192019190611fc5565b346104d55761203c602061202061200e36610abf565b61201993929361446a565b369161322a565b604051633332cc1760e21b815293849283929060048401614f3b565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4908115610a4b575f9161207b575b50603d5490810180911161207657603d55005b6144e4565b612094915060203d602011610bf157610be38183611289565b5f612063565b346104d55760203660031901126104d5576004356120b7816104d9565b60018060a01b03165f526002602052602060405f2054604051908152f35b9190602083019260028210156107175752565b346104d55760203660031901126104d557600435612105816104d9565b6001600160a01b03165f818152603a602052604090205460ff16156105d4575f52603960205261095d60ff60405f205416604051918291826120d5565b60206040818301928281528451809452019201905f5b8181106121655750505090565b8251845260209384019390920191600101612158565b346104d55760203660031901126104d557600435612198816104d9565b60018060a01b03165f52603c60205260405f206040519081602082549182815201915f5260205f20905f5b8181106121e65761095d856121da81870382611289565b60405191829182612142565b82548452602090930192600192830192016121c3565b346104d5575f3660031901126104d5576020603854604051908152f35b346104d55761222736610675565b9061223061446a565b612239816149a4565b73450421a334de63f75e1d47399d9713f755aaeff291823b156104d557604051631d6957bb60e31b8152600360048201526001600160a01b039283166024820152911660448201525f918290829060649082905af48015610a4b57611a91575080f35b346104d5575f60403660031901126104d5576004356122ba816104d9565b602435906122c661446a565b6122cf816149a4565b73450421a334de63f75e1d47399d9713f755aaeff291823b156104d5576040516330d7388360e11b8152600360048201526001600160a01b0390921660248301526044820152905f90829060649082905af48015610a4b57611a91575080f35b346104d55760203660031901126104d55760043561234c816104d9565b6001600160a01b03165f908152600360205260409020805461236d81612fb1565b9161237b6040519384611289565b81835260208301905f5260205f205f915b8383106123a1576040518061095d8782611f25565b600260206001926123b185613463565b81520192019201919061238c565b346104d55761241260206123d236610fde565b6123da61446a565b604051631e0ced7b60e31b8152603a600482015260386024820152603960448201526080606482015293849283926084840191614961565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4908115610a4b57610bc791610bc2915f9161244a575b50603754614514565b612463915060203d602011610bf157610be38183611289565b5f612441565b346104d55760403660031901126104d557602060ff6124bb602435600435612490826104d9565b5f525f516020615a9e5f395f51905f52845260405f209060018060a01b03165f5260205260405f2090565b54166040519015158152f35b346104d5576124d536610e6c565b92916124df61446a565b6001600160a01b0316908115610626576124f8836149a4565b73450421a334de63f75e1d47399d9713f755aaeff292833b156104d5575f9361255e60c4936040519788968795635f47eaa960e01b8752600360048801526004602488015260018060a01b031660448701526064860152608485015260a484019061172b565b5af48015610a4b5761256c57005b80610fd25f610bc793611289565b346104d5575f3660031901126104d5576020606e54604051908152f35b346104d5575f3660031901126104d55760206040515f8152f35b346104d55760203660031901126104d5576004356125ce816104d9565b60018060a01b03165f526003602052602060405f2054604051908152f35b346104d5575f3660031901126104d557603b546040516001600160a01b039091168152602090f35b60405190612623602083611289565b5f8252565b346104d5575f3660031901126104d55761095d604051612649604082611289565b60058152640352e302e360dc1b602082015260405191829160208352602083019061069d565b346104d55761267d366110c9565b9061268661446a565b61268f816149a4565b63ffffffff821690612710821161117f576001600160a01b03165f81815260046020908152604091829020805467ffffffff00000000191695821b67ffffffff00000000169590951790945551918252917fe93d5cc9eb4a35d6cb221ddcb2352142c953452f7ef45af1332cee37a16d51e591a2005b916127249061069a949215158452606060208501526060840190610961565b916040818403910152610961565b346104d5575f3660031901126104d55761274a614f1f565b60405190630a49677560e31b8252600260048301526003602483015260046044830152606e6064830152151560848201525f8160a48173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b575f905f925f916127b9575b5061095d9060405193849384612705565b905061095d92506127dc91503d805f833e6127d48183611289565b8101906136d2565b90926127a8565b346104d5575f60403660031901126104d557600435612801816104d9565b6024359061280d61446a565b612816816149a4565b73450421a334de63f75e1d47399d9713f755aaeff291823b156104d55760405163ad3227ef60e01b8152600260048201526001600160a01b0390921660248301526044820152905f90829060649082905af48015610a4b57611a91575080f35b9080602083519182815201916020808360051b8301019401925f915b8383106128a157505050505090565b90919293946020806128bf600193601f1986820301875289516106c1565b97019301930191939290612892565b9061069a908251815260e08061294a6129206128fb602088015161010060208801526101008701906106c1565b6040888101516001600160401b03169087015260608801518682036060880152612876565b60808781015115159086015260a08781015115159086015260c087015185820360c0870152612876565b9401511515910152565b90602061069a9281815201906128ce565b346104d5575f61297436610675565b61297f929192613743565b5061298981614054565b612991613eec565b6129bc603d54926129a0614f1f565b9060405196879586956329a07aa760e01b875260048701613ae1565b038173450421a334de63f75e1d47399d9713f755aaeff25af48015610a4b575f906129f2575b61095d9060405191829182612954565b503d805f833e612a028183611289565b8101906020818303126104d5578051916001600160401b0383116104d55761095d92612a2e92016138cf565b6129e2565b346104d55760203660031901126104d557600435612a50816104d9565b612a5861446a565b612a61816149a4565b6001600160a01b0381165f90815260026020526040902054612b27575b612a8781614ffb565b603b54612a9e90610f24906001600160a01b031681565b803b156104d557604051631c46bc6f60e01b81526001600160a01b0383166004820152905f908290602490829084905af18015610a4b57612b13575b50612ae48161504e565b6001600160a01b03167f19321bf6948e80ca14d962cefce15c7ab5076503582e3af94e1c0c080f3238515f80a2005b80610fd25f612b2193611289565b5f612ada565b612b3081614fb6565b612a7e565b346104d557612b676020612b4b61200e36610abf565b604051630bbe8ebd60e41b815293849283929060048401614f3b565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4908115610a4b575f91612ba1575b50603d5490810390811161207657603d55005b612bba915060203d602011610bf157610be38183611289565b5f612b8e565b90602061069a928181520190612876565b346104d5575f3660031901126104d557606e54612bed81612fb1565b90612bfb6040519283611289565b80825260208201606e5f527f9930d9ff0dee0ef5ca2f7710ea66b8f84dd0f5f5351ecffe72b952cd9db7142a5f915b838310612c3f576040518061095d8782612bc0565b60036020600192612c4f85613b57565b815201920192019190612c2a565b346104d55760403660031901126104d557610bc7602435600435612c80826104d9565b612ca5610d96825f525f516020615a9e5f395f51905f52602052600160405f20015490565b6146c0565b346104d5575f3660031901126104d557602060405173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee8152f35b346104d5575f3660031901126104d5576020610dde613c36565b9061069a91602081526020612d12835160408385015260608401906128ce565b920151906040601f1982850301910152610848565b346104d557612d3536610675565b60405190612d4282611233565b612d4a613743565b82525f602083019160608352612d5f81614054565b612d67613eec565b612d92603d5492612d76614f1f565b90604051988995869563cab33e7b60e01b875260048701613ae1565b038173450421a334de63f75e1d47399d9713f755aaeff25af4928315610a4b5761095d93612dcb915f905f92612dd9575b508452614326565b905260405191829182612cf2565b9050612df791503d805f833e612def8183611289565b810190613ea5565b905f612dc3565b346104d5575f3660031901126104d55761095d612e19613eec565b604051918291602083526020830190610961565b346104d55760203660031901126104d557600435612e4a816104d9565b612e5261446a565b612e5b816149a4565b603b546001600160a01b031690813b156104d557604051631c46bc6f60e01b81526001600160a01b039091166004820152905f908290602490829084905af18015610a4b5761256c57005b346104d55760203660031901126104d557611d64610180600435612ec9816104d9565b612ed1613550565b50612edb816149a4565b612ee481614eee565b612eec614f1f565b6040516226aba760e71b815260026004808301919091526003602483015260448201526001600160a01b039092166064830152151560848201525f60a4820152918290819060c4820190565b346104d55760203660031901126104d557600435612f55816104d9565b612f5d61446a565b612f66816149a4565b603b546001600160a01b031690813b156104d55760405163fac09e8760e01b81526001600160a01b039091166004820152905f908290602490829084905af18015610a4b5761256c57005b6001600160401b03811161124e5760051b60200190565b9080601f830112156104d5578135612fdf81612fb1565b92612fed6040519485611289565b81845260208085019260051b8201019283116104d557602001905b8282106130155750505090565b8135815260209182019101613008565b346104d55760603660031901126104d5576004356001600160401b0381116104d557366023820112156104d55780600401359061306182612fb1565b9161306f6040519384611289565b8083526024602084019160051b830101913683116104d557602401905b8282106130d657602435846001600160401b0382116104d5576130b66130c4923690600401612fc8565b6130be6104ea565b91613f57565b60408051928352901515602083015290f35b6020809183356130e5816104d9565b81520191019061308c565b346104d55760203660031901126104d55760043561310c61446a565b6001546001600160a01b03161561315d57610e1081106106265760407f8517713fa4ff1f4d78f1a611f588f5200338514d49a4e224d5de5ff73020b9c0915f5490805f5582519182526020820152a1005b636c9e815560e01b5f5260045ffd5b346104d5575f3660031901126104d55760205f54604051908152f35b51906104f7826104d9565b9080601f830112156104d55781516131aa81612fb1565b926131b86040519485611289565b81845260208085019260051b8201019283116104d557602001905b8282106131e05750505090565b6020809183516131ef816104d9565b8152019101906131d3565b906020828203126104d55781516001600160401b0381116104d55761069a9201613193565b6040513d5f823e3d90fd5b92919061323681612fb1565b936132446040519586611289565b602085838152019160051b81019283116104d557905b82821061326657505050565b813581526020918201910161325a565b9261328e60809396959260a0865260a0860190610961565b6020850196909652606f604085015260608401526001600160a01b0316910152565b604080519091906132c18382611289565b6001815291601f1901366020840137565b634e487b7160e01b5f52603260045260245ffd5b8051156132f35760200190565b6132d2565b80518210156132f35760209160051b010190565b908160209103126104d5575161069a816104d9565b906133bd9261336c91613332615387565b61333a615387565b60018060a01b03166bffffffffffffffffffffffff60a01b6001541617600155610e105f556133676149c2565b614a8f565b613374614760565b602061337e6132b0565b6133a361338a826132e6565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9052565b6040518094819263179c82ef60e21b83526004830161099d565b038173549f6fb0ec34e18a82a320b79c968a9ca6e7b96b5af4918215610a4b576133f7926133f2915f916133fa575b50614b5d565b61458f565b50565b61341c915060203d602011613422575b6134148183611289565b81019061330c565b5f6133ec565b503d61340a565b519081151582036104d557565b908160209103126104d55761069a90613429565b80548210156132f3575f5260205f209060011b01905f90565b9060405161347081611253565b809260ff815460018060a01b0381168452818160a01c16602085015260a81c1660048110156107175760609160019160408501520154910152565b90303303610581578101906020818303126104d5578035906001600160401b0382116104d557019080601f830112156104d55781356134e981612fb1565b926134f76040519485611289565b81845260208085019260051b820101918383116104d55760208201905b83821061352357505050505090565b81356001600160401b0381116104d5576020916135458784809488010161132b565b815201910190613514565b6040519061018082018281106001600160401b0382111761124e576040525f610160838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201528261010082015282610120820152826101408201520152565b51906104f782610e62565b519060ff821682036104d557565b90816101809103126104d5576101606135e96112aa565b916135f381613188565b8352613601602082016135b9565b60208401526040810151604084015261361c606082016135c4565b60608401526080810151608084015260a081015160a084015261364160c08201613429565b60c084015261365260e08201613429565b60e08401526101008101516101008401526136706101208201613429565b610120840152610140810151610140840152015161016082015290565b908160e09103126104d5578051916020820151916040810151916136b360608301613429565b9160808101519161069a60c06136cb60a08501613429565b9301613429565b916060838303126104d5576136e683613429565b9260208101516001600160401b0381116104d55783613706918301613193565b9260408201516001600160401b0381116104d55761069a9201613193565b604051906137318261126e565b5f604083828152606060208201520152565b6040519061010082018281106001600160401b0382111761124e576040525f60e083828152613770613724565b60208201528260408201526060808201528260808201528260a0820152606060c08201520152565b81601f820112156104d5576020815191016137b2826112da565b926137c06040519485611289565b828452828201116104d557815f926020928386015e8301015290565b9190916060818403126104d557604051906137f68261126e565b81938151613803816104d9565b83526020820151906001600160401b0382116104d5578261382d6040949261383894869401613798565b6020860152016135c4565b910152565b51906001600160401b03821682036104d557565b9080601f830112156104d557815161386881612fb1565b926138766040519485611289565b81845260208085019260051b820101918383116104d55760208201905b8382106138a257505050505090565b81516001600160401b0381116104d5576020916138c4878480948801016137dc565b815201910190613893565b919091610100818403126104d5576138e56112ba565b928151845260208201516001600160401b0381116104d557816139099184016137dc565b602085015261391a6040830161383d565b604085015260608201516001600160401b0381116104d5578161393e918401613851565b606085015261394f60808301613429565b608085015261396060a08301613429565b60a085015260c0820151916001600160401b0383116104d55761398a60e092613995948301613851565b60c086015201613429565b60e0830152565b90600182811c921680156139ca575b60208310146139b657565b634e487b7160e01b5f52602260045260245ffd5b91607f16916139ab565b6035545f92916139e38261399c565b8082529160018116908115613a4457506001146139fe575050565b60355f9081529293509091905f516020615a3e5f395f51905f525b838310613a2a575060209250010190565b600181602092949394548385870101520191019190613a19565b9050602093945060ff929192191683830152151560051b010190565b5f9291815491613a6f8361399c565b8083529260018116908115613ac45750600114613a8b57505050565b5f9081526020812093945091925b838310613aaa575060209250010190565b600181602092949394548385870101520191019190613a99565b915050602093945060ff929192191683830152151560051b010190565b92613b1f61069a96939592600286526003602087015260046040870152606f6060870152606e608087015261016060a0870152610160860190610961565b60c08501959095526001600160a01b0390811660e0850152166101008301521515610120820152808203610140909101526035613a60565b90604051613b648161126e565b809260018060a01b03815416825260018101604051905f90805490613b888261399c565b8085529160018116908115613c0e5750600114613bd0575b505060026104f7949383613bbb604095613bc8950382611289565b6020860152015460ff1690565b60ff16910152565b5f908152602081209092505b818310613bf4575050810160200160026104f7613ba0565b600181602092949394548385880101520191019190613bdc565b60ff191660208087019190915292151560051b85019092019250600291506104f79050613ba0565b6001545f5460405163da5990cd60e01b81526001600160a01b039092166004830152602482015260208160448173450421a334de63f75e1d47399d9713f755aaeff25af4908115610a4b575f91613c8b575090565b61069a915060203d6020116115a6576115988183611289565b519060078210156104d557565b9080601f830112156104d557815191613cc983612fb1565b92613cd76040519485611289565b80845260208085019160051b830101918383116104d55760208101915b838310613d0357505050505090565b82516001600160401b0381116104d557820190610260828703601f1901126104d557613d2d6112ca565b9060208301516001600160401b0381116104d557876020613d50928601016137dc565b8252613d5e60408401613188565b602083015260608301516040830152613d7960808401613429565b606083015260a08301516001600160401b0381116104d557876020613da0928601016137dc565b608083015260c083015160a083015260e083015160c0830152613dc661010084016135c4565b60e0830152613dd86101208401613429565b610100830152613deb6101408401613429565b6101208301526101608301516101408301526101808301516101608301526101a08301516101808301526101c0830151916001600160401b0383116104d557613e9461026085613e438b602080999881990101613798565b6101a0850152613e566101e08201613ca4565b6101c0850152613e696102008201613429565b6101e0850152610220810151610200850152613e886102408201613429565b61022085015201613429565b610240820152815201920191613cf4565b9190916040818403126104d55780516001600160401b0381116104d55783613ece9183016138cf565b9260208201516001600160401b0381116104d55761069a9201613cb1565b60405190603854808352826020810160385f5260205f20925f5b818110613f1b5750506104f792500383611289565b84546001600160a01b0316835260019485019487945060209093019201613f06565b91908260409103126104d55761069a602083519301613429565b6040516333abc92760e21b815260026004820152606f6024820152606e604482015260e060648201529392918491613f939060e4840190610961565b600319838203016084840152602080835192838152019201905f5b81811061403b575050506001600160a01b0390921660a48201526040918190613fe2908281036003190160c48401526139d4565b038173450421a334de63f75e1d47399d9713f755aaeff25af4918215610a4b575f905f9361400f57509190565b9050610af791925060403d604011614034575b61402c8183611289565b810190613f3d565b503d614022565b8251845287945060209384019390920191600101613fae565b6001600160a01b0381166140655750565b6104f790614eee565b906020828203126104d55781516001600160401b0381116104d55761069a9201613cb1565b906141005f916141456140a4613eec565b91614133603d54916141296140b7614f1f565b91604051998a9889986375feb8b360e11b8a52600260048b0152600360248b0152600460448b0152606f60648b0152606e60848b015261018060a48b01526101848a0190610961565b60c48901969096526001600160a01b0390811660e489015261010488018a905216610124870152565b1515610144850152565b828103600319016101648401526139d4565b038173450421a334de63f75e1d47399d9713f755aaeff25af4908115610a4b575f9161416f575090565b61069a91503d805f833e6141838183611289565b81019061406e565b915f916141456141f9926141336141a0613eec565b93614129603d54936141b0614f1f565b926040519a8b998a996375feb8b360e11b8b52600260048c0152600360248c0152600460448c0152606f60648c0152606e60848c015261018060a48c01526101848b0190610961565b60c48a01979097526001600160a01b0390811660e48a015290811661010489015216610124870152565b9061422d82612fb1565b61423a6040519182611289565b828152809261424b601f1991612fb1565b01905f5b82811061425b57505050565b60209060405161426a8161126e565b6142726112ca565b61427a613724565b81525f848201525f60408201525f6060820152614295613724565b60808201525f60a08201525f60c08201525f60e08201525f6101008201525f6101208201525f6101408201525f6101608201525f61018082015260606101a08201525f6101c08201525f6101e08201525f6102008201525f6102208201525f6102408201528152606083820152606060408201528282850101520161424f565b90602061069a92818152019061069d565b90815161433281614223565b60405163e567e86960e01b6020820152600481529093614353602483611289565b5f916060905f5b85811061436957505050505050565b614387602061437883876132f8565b5101516001600160a01b031690565b8882158015614454575b61441e575b6143f683928660206143c486614409966143b260019a8e6132f8565b516143bd83836132f8565b51526132f8565b5101526144046101a06143d7868b6132f8565b51015160405163867430a560e01b602082015293849160248301614315565b03601f198101845283611289565b6152f0565b6040614415838c6132f8565b5101520161435a565b8596508294506143f6826144099260206143c461443e8960019998615186565b939b509298509495508994509250614396915050565b506001600160a01b038281169088161415614391565b335f9081527f511d0314ee32589a99ab73eccd900c257efd9224711c0e5aadda466017c07f6c602052604090205460ff161561058157565b908160209103126104d5575190565b90602080835192838152019201905f5b8181106144ce5750505090565b82518452602093840193909201916001016144c1565b634e487b7160e01b5f52601160045260245ffd5b90601f820180921161207657565b604001908160401161207657565b9190820180921161207657565b5f1981146120765760010190565b6001600160a01b0381166145405750565b6104f7906149a4565b5f8181525f516020615a9e5f395f51905f526020908152604080832033845290915290205460ff16156145795750565b63e2517d3f60e01b5f523360045260245260445ffd5b6001600160a01b0381165f9081525f516020615a5e5f395f51905f52602052604090205460ff16614613576001600160a01b03165f8181525f516020615a5e5f395f51905f5260205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b505f90565b5f8181525f516020615a9e5f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff166146ba575f8181525f516020615a9e5f395f51905f52602090815260408083206001600160a01b03861684529091529020805460ff1916600117905533916001600160a01b0316907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b5f8181525f516020615a9e5f395f51905f52602090815260408083206001600160a01b038616845290915290205460ff16156146ba575f8181525f516020615a9e5f395f51905f52602090815260408083206001600160a01b03861684529091529020805460ff1916905533916001600160a01b0316907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4600190565b73549f6fb0ec34e18a82a320b79c968a9ca6e7b96b803b156104d5575f6040518092632255f1e560e11b8252606e6004830152606f602483015273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60448301526080606483015281806147c9608482016139d4565b03915af48015610a4b576147da5750565b806147e65f8093611289565b8003126104d557565b73549f6fb0ec34e18a82a320b79c968a9ca6e7b96b90813b156104d557604051632255f1e560e11b8152606e6004820152606f60248201526001600160a01b03909116604482015260806064820152905f90829081806147c9608482016139d4565b919273450421a334de63f75e1d47399d9713f755aaeff292833b156104d557604051636f067e9b60e01b8152600260048201526001600160a01b039182166024820152921660448301526064820193909352915f91839160a49183916148bb90608484019061172b565b5af48015610a4b576147da5750565b5f1981019190821161207657565b9190820391821161207657565b6148ed613724565b506001600160a01b03165f908152606f60205260409020548015614952575f19810190811161207657606e548110156132f357600361069a91606e5f52027f9930d9ff0dee0ef5ca2f7710ea66b8f84dd0f5f5351ecffe72b952cd9db7142a01613b57565b63470cbf4760e01b5f5260045ffd5b916020908281520191905f5b81811061497a5750505090565b909192602080600192863561498e816104d9565b848060a01b03168152019401910191909161496d565b6001600160a01b03165f908152606f60205260409020541561495257565b6149ca615387565b6149d560355461399c565b601f81116149ee575b5060066208aa8960eb1b01603555565b60038111156149de5760355f52614a1890601f0160051c5f516020615a3e5f395f51905f52614a1e565b5f6149de565b5f5b828110614a2c57505050565b5f82820155600101614a20565b601f8111614a45575050565b818111614a50575050565b60355f526104f7915f516020615a3e5f395f51905f5291601f820160051c91602011614a87575b601f82910160051c039101614a1e565b5f9150614a77565b9081516001600160401b03811161124e57614ab481614aaf60355461399c565b614a39565b602092601f8211600114614af457614ae4929382915f92614ae9575b50508160011b915f199060031b1c19161790565b603555565b015190505f80614ad0565b60355f52601f198216935f516020615a3e5f395f51905f52915f5b868110614b455750836001959610614b2d575b505050811b01603555565b01515f1960f88460031b161c191690555f8080614b22565b91926020600181928685015181550194019201614b0f565b603b54906001600160a01b038216610626576001600160a01b03166001600160a01b0319919091168117603b55603854600160401b81101561124e5760018101806038558110156132f3577f38395c5dceade9603479b177b68959049485df8aa97b39f3533039af5f4561990180546001600160a01b031916919091179055603b546001600160a01b03165f908152603960205260409020805460ff19169055603b546001600160a01b03165f908152603a602052604090206104f790805460ff19166001179055565b6001600160a01b0381165f9081526003602052604090209094919291905415801590614ec4575b15614ebb578315614eb3575b508215614ea55750505f5b6001600160a01b0383165f9081526003602052604081209093815490614c8a826155d6565b915f935f5b828110614e69575050506001600160a01b03165f9081526004602052604090209180151580614e61575b80614e58575b614d4b575b50505460201c63ffffffff169163ffffffff831615159081614d42575b5080614d39575b614cf157505090565b614d13614d1d91614d076305f5e1008092615612565b5f8112614d2b5761598c565b9163ffffffff1690565b10614d255790565b50600190565b614d3490615645565b61598c565b505f8113614ce8565b9050155f614ce1565b614d5581836158f4565b600181811603614dfb57614d72614d6c8260011c90565b836132f8565b515b505f915f5b828110614dc957505050614d91825463ffffffff1690565b9063ffffffff821615159182614db9575b5050614db0575b5f80614cc4565b60019350614da9565b63ffffffff161090505f80614da2565b614de186614d07614dda84866132f8565b5182615612565b848111614df2575b50600101614d79565b93506001614de9565b614e53614e088260011c90565b614e4d614e46614e20614e1a846148ca565b876132f8565b5192614e3f614e39614e32838a6132f8565b51926148ca565b886132f8565b5190615612565b6002900590565b9061562a565b614d74565b505f8413614cbf565b508415614cb9565b80614e7f614e796001938561344a565b506156b7565b15614e9f57614e97614e9089614521565b98886132f8565b525b01614c8f565b50614e99565b614eae91615553565b614c65565b92505f614c5a565b50505050505f90565b506001600160a01b0385165f90815260046020526040902063ffffffff905460201c161515614c4e565b6001600160a01b03165f8181526002602052604090205415614f0d5750565b638a7a791d60e01b5f5260045260245ffd5b6001546001600160a01b0316614f33575f90565b61069a613c36565b603a8152603c60208201526001600160a01b03909116604082015260806060820181905261069a929101906144b1565b8054905f815581614f7a575050565b600182901b916001600160ff1b03811603612076575f5260205f205f5b828110614fa357505050565b5f82820181815560010155600201614f97565b6001600160a01b03165f818152600260205260409020614fd590614f6b565b7fb1b3fcfbeb66e833b921ec0d9e5657f63d4a91bcce4ce3d3997908e59587d2735f80a2565b6001600160a01b03165f81815260036020526040902061501a90614f6b565b805f5260046020525f60408120557fa1b6dc7deb026229c35bf2f00bc74652d705ee14b199882a625f1101cc5c66ee5f80a2565b73549f6fb0ec34e18a82a320b79c968a9ca6e7b96b90813b156104d557604051636ee3218f60e11b8152606e6004820152606f60248201526001600160a01b039091166044820152905f90829060649082905af48015610a4b576150af5750565b5f6104f791611289565b6301ffc9a760e01b5f526301ffc9a760e01b60045260205f60248184617530fa5f511515601f3d11168161512a575b5015614613576301ffc9a760e01b5f9081526001600160e01b03196004526020916024908290617530fa5f511515601f3d111681615124575090565b90501590565b90505f6150e8565b3d1561515c573d90615143826112da565b916151516040519384611289565b82523d5f602084013e565b606090565b906020828203126104d55781516001600160401b0381116104d55761069a9201613798565b5f918291602082519201905afa61519b615132565b90158015615218575b61520f57602081018051602060408401519114801590615205575b6151fa576151cf601f19916144f8565b166151db835191614506565b116151f05760208261069a9351010190615161565b505061069a612614565b50505061069a612614565b50825181116151bf565b5061069a612614565b5060408151106151a4565b60405190615232602083611289565b5f80835282815b82811061524557505050565b806060602080938501015201615239565b6020818303126104d5578051906001600160401b0382116104d557019080601f830112156104d557815161528981612fb1565b926152976040519485611289565b81845260208085019260051b820101918383116104d55760208201905b8382106152c357505050505090565b81516001600160401b0381116104d5576020916152e587848094880101613798565b8152019101906152b4565b5f918291602082519201905afa615305615132565b9015801561537c575b615373575f6153319160405180938192632fcb619b60e11b835260048301614315565b038130620f4240fa5f918161534f575b5061069a575061069a615223565b61536c9192503d805f833e6153648183611289565b810190615256565b905f615341565b5061069a615223565b50604081511061530e565b60ff5f516020615abe5f395f51905f525460401c16156153a357565b631afcd79f60e31b5f5260045ffd5b90813b15615430575f516020615a7e5f395f51905f5280546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115615418576133f791615451565b50503461542157565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b905f8091602081519101845af480806154b1575b1561547457505061069a615655565b1561549957639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b3d15155f0361321f5763d6bda27560e01b5f5260045ffd5b503d1515806154655750813b1515615465565b604d811161207657600a0a90565b634e487b7160e01b5f52601260045260245ffd5b80156154f8576001600160ff1b030590565b6154d2565b80156154f85760015f1982141661207657600160ff1b0590565b81156154f857600160ff1b81145f19831416612076570590565b81810292915f8212600160ff1b82141661207657818405149015171561207657565b9060ff16600881146155d257600881116155ab57600803600881116120765761557b906154c4565b615584816154e6565b8213801561559a575b6146ba5761069a91615531565b506155a4816154fd565b821261558d565b60071981019190821161207657604c82116146ba576155cc61069a926154c4565b90615517565b5090565b906155e082612fb1565b6155ed6040519182611289565b82815280926155fe601f1991612fb1565b0190602036910137565b81156154f8570490565b81810392915f13801582851316918412161761207657565b9190915f838201938412911290801582169115161761207657565b600160ff1b8114612076575f0390565b604051903d82523d5f602084013e60203d830101604052565b519069ffffffffffffffffffff821682036104d557565b908160a09103126104d5576156998161566e565b9160208201519160408101519161069a60806060840151930161566e565b80549060a882901c60ff166156cb81611721565b6003810361583757506156e7610f246001600160a01b03841681565b90604051638e15f47360e01b8152604081600481865afa90815f915f93615814575b506157195750505050505f905f90565b90801561580c575b615802576001600160ff1b0381116158025791600460a05f9260405192838092633fabe5a360e21b82525afa5f91816157cc575b506157c4575b50806157bf575042156157b957615771426148ca565b428111156157ae57506001615787425b426148d8565b91015411156157a6576157a09160a01c60ff1690615553565b90600190565b50505f905f90565b615787600191615781565b5f615771565b615771565b90505f61575b565b6157ef91925060a03d60a0116157fb575b6157e78183611289565b810190615685565b5092505050905f615755565b503d6157dd565b505050505f905f90565b508015615721565b909250615830915060403d6040116140345761402c8183611289565b915f615709565b90600460a061584f610f246001600160a01b03871681565b604051633fabe5a360e21b815292839182905afa90815f915f936158c0575b5061587e5750505050505f905f90565b5f8113156158b5576002819461589381611721565b1461589f575b50615771565b6402540be400900592508215615802575f615899565b50505050505f905f90565b9092506158dc915060a03d60a0116157fb576157e78183611289565b5092505090915f61586e565b8015612076575f190190565b91906001905b8082106159075750509050565b61591182856132f8565b5192825b8015158061596e575b15615952575f198101908082116120765761593c61594d92886132f8565b5161594782896132f8565b526158e8565b615915565b9361596360019394929695866132f8565b5201909291926158fa565b505f198101818111612076576159858691886132f8565b511361591e565b9061599961271083615a1a565b9190928315615a0e5783821115615a0157612710829109815f0382168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b6011600383150218615a2d565b509061069a9250615608565b905f198183099102908180821091030391565b634e487b715f526020526024601cfdfecfa4bec1d3298408bb5afcfcd9c430549c5b31f8aa5c5848151c0a55f473c34db7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000822000a
🤖 Code Reader

Generate instant answers for your smart contract questions using AI Models. Read more.

Custom Contract ABI

                            

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.