Smart Contract Repository
UiPoolDataProviderV3

UiPoolDataProviderV3

Deploy on Alchemy
Verified
Ethereum
Defi, Oracle, Router
Solidity
Verified
Ethereum

Contract Information

The following smart contract is the UiPoolDataProviderV3 contract, which provides data on Aave protocol reserves and user data. It uses various interfaces and libraries to retrieve and aggregate data on reserves, including interest rate strategies, debt tokens, and collateral usage. It also retrieves data on the market reference currency and network base token prices. The contract is designed to be used by front-end applications to display information to users.
More Info

UiPoolDataProviderV3 Source Code

UiPoolDataProviderV3 ABI

[{"inputs":[{"internalType":"contract IEACAggregatorProxy","name":"_networkBaseTokenPriceInUsdProxyAggregator","type":"address"},{"internalType":"contract IEACAggregatorProxy","name":"_marketReferenceCurrencyPriceInUsdProxyAggregator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ETH_CURRENCY_UNIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MKR_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_bytes32","type":"bytes32"}],"name":"bytes32ToString","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"}],"name":"getReservesData","outputs":[{"components":[{"internalType":"address","name":"underlyingAsset","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"baseLTVasCollateral","type":"uint256"},{"internalType":"uint256","name":"reserveLiquidationThreshold","type":"uint256"},{"internalType":"uint256","name":"reserveLiquidationBonus","type":"uint256"},{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"bool","name":"usageAsCollateralEnabled","type":"bool"},{"internalType":"bool","name":"borrowingEnabled","type":"bool"},{"internalType":"bool","name":"stableBorrowRateEnabled","type":"bool"},{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"bool","name":"isFrozen","type":"bool"},{"internalType":"uint128","name":"liquidityIndex","type":"uint128"},{"internalType":"uint128","name":"variableBorrowIndex","type":"uint128"},{"internalType":"uint128","name":"liquidityRate","type":"uint128"},{"internalType":"uint128","name":"variableBorrowRate","type":"uint128"},{"internalType":"uint128","name":"stableBorrowRate","type":"uint128"},{"internalType":"uint40","name":"lastUpdateTimestamp","type":"uint40"},{"internalType":"address","name":"aTokenAddress","type":"address"},{"internalType":"address","name":"stableDebtTokenAddress","type":"address"},{"internalType":"address","name":"variableDebtTokenAddress","type":"address"},{"internalType":"address","name":"interestRateStrategyAddress","type":"address"},{"internalType":"uint256","name":"availableLiquidity","type":"uint256"},{"internalType":"uint256","name":"totalPrincipalStableDebt","type":"uint256"},{"internalType":"uint256","name":"averageStableRate","type":"uint256"},{"internalType":"uint256","name":"stableDebtLastUpdateTimestamp","type":"uint256"},{"internalType":"uint256","name":"totalScaledVariableDebt","type":"uint256"},{"internalType":"uint256","name":"priceInMarketReferenceCurrency","type":"uint256"},{"internalType":"address","name":"priceOracle","type":"address"},{"internalType":"uint256","name":"variableRateSlope1","type":"uint256"},{"internalType":"uint256","name":"variableRateSlope2","type":"uint256"},{"internalType":"uint256","name":"stableRateSlope1","type":"uint256"},{"internalType":"uint256","name":"stableRateSlope2","type":"uint256"},{"internalType":"uint256","name":"baseStableBorrowRate","type":"uint256"},{"internalType":"uint256","name":"baseVariableBorrowRate","type":"uint256"},{"internalType":"uint256","name":"optimalUsageRatio","type":"uint256"},{"internalType":"bool","name":"isPaused","type":"bool"},{"internalType":"bool","name":"isSiloedBorrowing","type":"bool"},{"internalType":"uint128","name":"accruedToTreasury","type":"uint128"},{"internalType":"uint128","name":"unbacked","type":"uint128"},{"internalType":"uint128","name":"isolationModeTotalDebt","type":"uint128"},{"internalType":"bool","name":"flashLoanEnabled","type":"bool"},{"internalType":"uint256","name":"debtCeiling","type":"uint256"},{"internalType":"uint256","name":"debtCeilingDecimals","type":"uint256"},{"internalType":"uint8","name":"eModeCategoryId","type":"uint8"},{"internalType":"uint256","name":"borrowCap","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint16","name":"eModeLtv","type":"uint16"},{"internalType":"uint16","name":"eModeLiquidationThreshold","type":"uint16"},{"internalType":"uint16","name":"eModeLiquidationBonus","type":"uint16"},{"internalType":"address","name":"eModePriceSource","type":"address"},{"internalType":"string","name":"eModeLabel","type":"string"},{"internalType":"bool","name":"borrowableInIsolation","type":"bool"}],"internalType":"struct IUiPoolDataProviderV3.AggregatedReserveData[]","name":"","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"marketReferenceCurrencyUnit","type":"uint256"},{"internalType":"int256","name":"marketReferenceCurrencyPriceInUsd","type":"int256"},{"internalType":"int256","name":"networkBaseTokenPriceInUsd","type":"int256"},{"internalType":"uint8","name":"networkBaseTokenPriceDecimals","type":"uint8"}],"internalType":"struct IUiPoolDataProviderV3.BaseCurrencyInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"}],"name":"getReservesList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserReservesData","outputs":[{"components":[{"internalType":"address","name":"underlyingAsset","type":"address"},{"internalType":"uint256","name":"scaledATokenBalance","type":"uint256"},{"internalType":"bool","name":"usageAsCollateralEnabledOnUser","type":"bool"},{"internalType":"uint256","name":"stableBorrowRate","type":"uint256"},{"internalType":"uint256","name":"scaledVariableDebt","type":"uint256"},{"internalType":"uint256","name":"principalStableDebt","type":"uint256"},{"internalType":"uint256","name":"stableBorrowLastUpdateTimestamp","type":"uint256"}],"internalType":"struct IUiPoolDataProviderV3.UserReserveData[]","name":"","type":"tuple[]"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketReferenceCurrencyPriceInUsdProxyAggregator","outputs":[{"internalType":"contract IEACAggregatorProxy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"networkBaseTokenPriceInUsdProxyAggregator","outputs":[{"internalType":"contract IEACAggregatorProxy","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
[{"inputs":[{"internalType":"contract IEACAggregatorProxy","name":"_networkBaseTokenPriceInUsdProxyAggregator","type":"address"},{"internalType":"contract IEACAggregatorProxy","name":"_marketReferenceCurrencyPriceInUsdProxyAggregator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ETH_CURRENCY_UNIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MKR_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_bytes32","type":"bytes32"}],"name":"bytes32ToString","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"}],"name":"getReservesData","outputs":[{"components":[{"internalType":"address","name":"underlyingAsset","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"uint256","name":"baseLTVasCollateral","type":"uint256"},{"internalType":"uint256","name":"reserveLiquidationThreshold","type":"uint256"},{"internalType":"uint256","name":"reserveLiquidationBonus","type":"uint256"},{"internalType":"uint256","name":"reserveFactor","type":"uint256"},{"internalType":"bool","name":"usageAsCollateralEnabled","type":"bool"},{"internalType":"bool","name":"borrowingEnabled","type":"bool"},{"internalType":"bool","name":"stableBorrowRateEnabled","type":"bool"},{"internalType":"bool","name":"isActive","type":"bool"},{"internalType":"bool","name":"isFrozen","type":"bool"},{"internalType":"uint128","name":"liquidityIndex","type":"uint128"},{"internalType":"uint128","name":"variableBorrowIndex","type":"uint128"},{"internalType":"uint128","name":"liquidityRate","type":"uint128"},{"internalType":"uint128","name":"variableBorrowRate","type":"uint128"},{"internalType":"uint128","name":"stableBorrowRate","type":"uint128"},{"internalType":"uint40","name":"lastUpdateTimestamp","type":"uint40"},{"internalType":"address","name":"aTokenAddress","type":"address"},{"internalType":"address","name":"stableDebtTokenAddress","type":"address"},{"internalType":"address","name":"variableDebtTokenAddress","type":"address"},{"internalType":"address","name":"interestRateStrategyAddress","type":"address"},{"internalType":"uint256","name":"availableLiquidity","type":"uint256"},{"internalType":"uint256","name":"totalPrincipalStableDebt","type":"uint256"},{"internalType":"uint256","name":"averageStableRate","type":"uint256"},{"internalType":"uint256","name":"stableDebtLastUpdateTimestamp","type":"uint256"},{"internalType":"uint256","name":"totalScaledVariableDebt","type":"uint256"},{"internalType":"uint256","name":"priceInMarketReferenceCurrency","type":"uint256"},{"internalType":"address","name":"priceOracle","type":"address"},{"internalType":"uint256","name":"variableRateSlope1","type":"uint256"},{"internalType":"uint256","name":"variableRateSlope2","type":"uint256"},{"internalType":"uint256","name":"stableRateSlope1","type":"uint256"},{"internalType":"uint256","name":"stableRateSlope2","type":"uint256"},{"internalType":"uint256","name":"baseStableBorrowRate","type":"uint256"},{"internalType":"uint256","name":"baseVariableBorrowRate","type":"uint256"},{"internalType":"uint256","name":"optimalUsageRatio","type":"uint256"},{"internalType":"bool","name":"isPaused","type":"bool"},{"internalType":"bool","name":"isSiloedBorrowing","type":"bool"},{"internalType":"uint128","name":"accruedToTreasury","type":"uint128"},{"internalType":"uint128","name":"unbacked","type":"uint128"},{"internalType":"uint128","name":"isolationModeTotalDebt","type":"uint128"},{"internalType":"bool","name":"flashLoanEnabled","type":"bool"},{"internalType":"uint256","name":"debtCeiling","type":"uint256"},{"internalType":"uint256","name":"debtCeilingDecimals","type":"uint256"},{"internalType":"uint8","name":"eModeCategoryId","type":"uint8"},{"internalType":"uint256","name":"borrowCap","type":"uint256"},{"internalType":"uint256","name":"supplyCap","type":"uint256"},{"internalType":"uint16","name":"eModeLtv","type":"uint16"},{"internalType":"uint16","name":"eModeLiquidationThreshold","type":"uint16"},{"internalType":"uint16","name":"eModeLiquidationBonus","type":"uint16"},{"internalType":"address","name":"eModePriceSource","type":"address"},{"internalType":"string","name":"eModeLabel","type":"string"},{"internalType":"bool","name":"borrowableInIsolation","type":"bool"}],"internalType":"struct IUiPoolDataProviderV3.AggregatedReserveData[]","name":"","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"marketReferenceCurrencyUnit","type":"uint256"},{"internalType":"int256","name":"marketReferenceCurrencyPriceInUsd","type":"int256"},{"internalType":"int256","name":"networkBaseTokenPriceInUsd","type":"int256"},{"internalType":"uint8","name":"networkBaseTokenPriceDecimals","type":"uint8"}],"internalType":"struct IUiPoolDataProviderV3.BaseCurrencyInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"}],"name":"getReservesList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getUserReservesData","outputs":[{"components":[{"internalType":"address","name":"underlyingAsset","type":"address"},{"internalType":"uint256","name":"scaledATokenBalance","type":"uint256"},{"internalType":"bool","name":"usageAsCollateralEnabledOnUser","type":"bool"},{"internalType":"uint256","name":"stableBorrowRate","type":"uint256"},{"internalType":"uint256","name":"scaledVariableDebt","type":"uint256"},{"internalType":"uint256","name":"principalStableDebt","type":"uint256"},{"internalType":"uint256","name":"stableBorrowLastUpdateTimestamp","type":"uint256"}],"internalType":"struct IUiPoolDataProviderV3.UserReserveData[]","name":"","type":"tuple[]"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketReferenceCurrencyPriceInUsdProxyAggregator","outputs":[{"internalType":"contract IEACAggregatorProxy","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"networkBaseTokenPriceInUsdProxyAggregator","outputs":[{"internalType":"contract IEACAggregatorProxy","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

UiPoolDataProviderV3 Bytecode

60c06040523480156200001157600080fd5b506040516200311738038062003117833981016040819052620000349162000069565b6001600160a01b039182166080521660a052620000a1565b80516001600160a01b03811681146200006457600080fd5b919050565b600080604083850312156200007d57600080fd5b62000088836200004c565b915062000098602084016200004c565b90509250929050565b60805160a05161303c620000db6000396000818161017c0152611e4601526000818160b401528181611c2c0152611cc4015261303c6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063825ffd921161005b578063825ffd921461013c5780639201de5514610157578063d22cf68a14610177578063ec489c211461019e57600080fd5b80630496f53a1461008d5780633c1740ed146100af57806351974cc0146100fb578063586c14421461011c575b600080fd5b61009c670de0b6b3a764000081565b6040519081526020015b60405180910390f35b6100d67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a6565b61010e6101093660046123f3565b6101bf565b6040516100a692919061242c565b61012f61012a3660046124d8565b6109e2565b6040516100a691906124f5565b6100d6739f8f72aa9304c8b593d555f12ef6589cc3a579a281565b61016a61016536600461254f565b610aef565b6040516100a691906125e2565b6100d67f000000000000000000000000000000000000000000000000000000000000000081565b6101b16101ac3660046124d8565b610c67565b6040516100a69291906125f5565b60606000808473ffffffffffffffffffffffffffffffffffffffff1663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023391906129c3565b905060008173ffffffffffffffffffffffffffffffffffffffff1663d1946dbc6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610282573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102c89190810190612aab565b6040517f4417a58300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152919250600091841690634417a58390602401602060405180830381865afa15801561033a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035e9190612b9f565b6040517feddf1b7900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015291925060009185169063eddf1b7990602401602060405180830381865afa1580156103d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f49190612bbb565b9050600073ffffffffffffffffffffffffffffffffffffffff881661041a57600061041d565b83515b67ffffffffffffffff811115610435576104356129e0565b6040519080825280602002602001820160405280156104be57816020015b6104ab6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816104535790505b50905060005b84518110156109d45760008673ffffffffffffffffffffffffffffffffffffffff166335ea6a758784815181106104fd576104fd612bd4565b60200260200101516040518263ffffffff1660e01b815260040161053d919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6101e060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f9190612c4a565b905085828151811061059357610593612bd4565b60200260200101518383815181106105ad576105ad612bd4565b602090810291909101015173ffffffffffffffffffffffffffffffffffffffff91821690526101008201516040517f1da24f3e0000000000000000000000000000000000000000000000000000000081528c83166004820152911690631da24f3e90602401602060405180830381865afa15801561062f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106539190612bbb565b83838151811061066557610665612bd4565b602090810291909101810151015261067d8583611ef5565b83838151811061068f5761068f612bd4565b60209081029190910101519015156040909101526106ad8583611f82565b156109c1576101408101516040517f1da24f3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c8116600483015290911690631da24f3e90602401602060405180830381865afa158015610725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107499190612bbb565b83838151811061075b5761075b612bd4565b6020908102919091010151608001526101208101516040517fc634dfaa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301529091169063c634dfaa90602401602060405180830381865afa1580156107dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108019190612bbb565b83838151811061081357610813612bd4565b602002602001015160a001818152505082828151811061083557610835612bd4565b602002602001015160a001516000146109c1576101208101516040517fe78c9b3b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301529091169063e78c9b3b90602401602060405180830381865afa1580156108bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108df9190612bbb565b8383815181106108f1576108f1612bd4565b6020908102919091010151606001526101208101516040517f79ce6b8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152909116906379ce6b8c90602401602060405180830381865afa158015610973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109979190612d6d565b64ffffffffff168383815181106109b0576109b0612bd4565b602002602001015160c00181815250505b50806109cc81612db7565b9150506104c4565b509890975095505050505050565b606060008273ffffffffffffffffffffffffffffffffffffffff1663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5591906129c3565b90508073ffffffffffffffffffffffffffffffffffffffff1663d1946dbc6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610aa2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ae89190810190612aab565b9392505050565b606060005b60208160ff16108015610b405750828160ff1660208110610b1757610b17612bd4565b1a60f81b7fff000000000000000000000000000000000000000000000000000000000000001615155b15610b575780610b4f81612df0565b915050610af4565b60008160ff1667ffffffffffffffff811115610b7557610b756129e0565b6040519080825280601f01601f191660200182016040528015610b9f576020820181803683370190505b509050600091505b60208260ff16108015610bf35750838260ff1660208110610bca57610bca612bd4565b1a60f81b7fff000000000000000000000000000000000000000000000000000000000000001615155b15610ae857838260ff1660208110610c0d57610c0d612bd4565b1a60f81b818360ff1681518110610c2657610c26612bd4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535081610c5f81612df0565b925050610ba7565b6060610c976040518060800160405280600081526020016000815260200160008152602001600060ff1681525090565b60008373ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0891906129c3565b905060008473ffffffffffffffffffffffffffffffffffffffff1663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b91906129c3565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e860accb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee91906129c3565b905060008273ffffffffffffffffffffffffffffffffffffffff1663d1946dbc6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e839190810190612aab565b90506000815167ffffffffffffffff811115610ea157610ea16129e0565b60405190808252806020026020018201604052801561109d57816020015b604080516106c0810182526000808252606060208084018290529383018190528083018290526080830182905260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e08301829052610200830182905261022083018290526102408301829052610260830182905261028083018290526102a083018290526102c083018290526102e08301829052610300830182905261032083018290526103408301829052610360830182905261038083018290526103a083018290526103c083018290526103e08301829052610400830182905261042083018290526104408301829052610460830182905261048083018290526104a083018290526104c083018290526104e08301829052610500830182905261052083018290526105408301829052610560830182905261058083018290526105a083018290526105c083018290526105e0830182905261060083018290526106208301829052610640830182905261066083018290526106808301526106a082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ebf5790505b50905060005b8251811015611bfb5760008282815181106110c0576110c0612bd4565b602002602001015190508382815181106110dc576110dc612bd4565b602090810291909101015173ffffffffffffffffffffffffffffffffffffffff9081168083526040517f35ea6a7500000000000000000000000000000000000000000000000000000000815260048101919091526000918816906335ea6a75906024016101e060405180830381865afa15801561115d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111819190612c4a565b60208101516fffffffffffffffffffffffffffffffff9081166101a0850152606082015181166101c085015260408083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015261010082015173ffffffffffffffffffffffffffffffffffffffff908116610260860152610120830151811661028086015261014083015181166102a086015261016083015181166102c0860152845191517fb3596f0700000000000000000000000000000000000000000000000000000000815291811660048301529192509089169063b3596f0790602401602060405180830381865afa158015611292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b69190612bbb565b61038083015281516040517f92bf2be000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908916906392bf2be090602401602060405180830381865afa15801561132b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134f91906129c3565b73ffffffffffffffffffffffffffffffffffffffff9081166103a084015282516102608401516040517f70a0823100000000000000000000000000000000000000000000000000000000815290831660048201529116906370a0823190602401602060405180830381865afa1580156113cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f09190612bbb565b826102e001818152505081610280015173ffffffffffffffffffffffffffffffffffffffff1663797743386040518163ffffffff1660e01b8152600401608060405180830381865afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190612e10565b64ffffffffff16610340860152610320850152506103008301526102a0820151604080517fb1bf962d000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169163b1bf962d916004808201926020929091908290030181865afa1580156114fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151f9190612bbb565b610360830152815173ffffffffffffffffffffffffffffffffffffffff16739f8f72aa9304c8b593d555f12ef6589cc3a579a2141561166a576000826000015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cd9190612bbb565b90506000836000015173ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116449190612bbb565b905061164f82610aef565b604085015261165d81610aef565b6020850152506117a29050565b816000015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156116b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116ff9190810190612ed9565b8260400181905250816000015173ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015611756573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261179c9190810190612ed9565b60208301525b8051805161ffff604082901c811660e086015260ff603083901c81166060870152602083901c821660c0870152601083901c821660a08701529082166080860181905215156101008601528251671000000000000000811615156104a08701526708000000000000008116151561014087015267040000000000000081161515610120870152670200000000000000811615156101808701526701000000000000001615156101608601526102c085015160a89290921c169060009061186790612004565b80516103c087015260208101516103e087015260408101516104008701526060810151610420870152608081015161044087015260a081015161046087015260c081015161048087015260ff83166105a0870152835190915060d41c64ffffffffff16856105600181815250508873ffffffffffffffffffffffffffffffffffffffff166369b169e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119439190612bbb565b6105808601528251640fffffffff605082901c81169160741c166105e08701526105c086015284516040517fd7ed3ef400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908a169063d7ed3ef490602401602060405180830381865afa925050508015611a12575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a0f91810190612f0e565b60015b611a54573d808015611a40576040519150601f19603f3d011682016040523d82523d6000602084013e611a45565b606091505b50506001610540860152611a5d565b15156105408601525b825167400000000000000016151515156104c08601526101a08401516fffffffffffffffffffffffffffffffff9081166105008701526101c08501518116610520870152610180850151166104e08601526105a08501516040517f6c6f6ae100000000000000000000000000000000000000000000000000000000815260ff909116600482015260009073ffffffffffffffffffffffffffffffffffffffff8c1690636c6f6ae190602401600060405180830381865afa158015611b25573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611b6b9190810190612f30565b805161ffff90811661060089015260208201518116610620890152604082015116610640880152606081015173ffffffffffffffffffffffffffffffffffffffff1661066088015260808101516106808801529050611bd4845167200000000000000016151590565b15156106a09096019590955250849350611bf39250839150612db79050565b9150506110a3565b50611c2a6040518060800160405280600081526020016000815260200160008152602001600060ff1681525090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb99190612bbb565b8160400181815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d519190612fe3565b60ff166060820152604080517f8c89b64f000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff881691638c89b64f9160048083019260209291908290030181865afa925050508015611dfe575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611dfb91810190612bbb565b60015b611ede573d808015611e2c576040519150601f19603f3d011682016040523d82523d6000602084013e611e31565b606091505b50670de0b6b3a76400008260000181815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed39190612bbb565b602083015250611ee7565b80825260208201525b909890975095505050505050565b60408051808201909152600281527f3734000000000000000000000000000000000000000000000000000000000000602082015260009060808310611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6791906125e2565b60405180910390fd5b50509051600191821b82011c16151590565b60408051808201909152600281527f3734000000000000000000000000000000000000000000000000000000000000602082015260009060808310611ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6791906125e2565b50509051600191821b1c16151590565b6120446040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6120846040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8273ffffffffffffffffffffffffffffffffffffffff16630b3429a26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f39190612bbb565b8160000181815250508273ffffffffffffffffffffffffffffffffffffffff1663f42024096040518163ffffffff1660e01b8152600401602060405180830381865afa158015612147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216b9190612bbb565b8160200181815250508273ffffffffffffffffffffffffffffffffffffffff1663d5cd73916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e39190612bbb565b8160400181815250508273ffffffffffffffffffffffffffffffffffffffff166314e32da46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190612bbb565b8160600181815250508273ffffffffffffffffffffffffffffffffffffffff1663acd786866040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d39190612bbb565b8160800181815250508273ffffffffffffffffffffffffffffffffffffffff166334762ca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234b9190612bbb565b8160a00181815250508273ffffffffffffffffffffffffffffffffffffffff166354c365c66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c39190612bbb565b60c082015292915050565b73ffffffffffffffffffffffffffffffffffffffff811681146123f057600080fd5b50565b6000806040838503121561240657600080fd5b8235612411816123ce565b91506020830135612421816123ce565b809150509250929050565b6040808252835182820181905260009190606090818501906020808901865b838110156124b9578151805173ffffffffffffffffffffffffffffffffffffffff16865283810151848701528781015115158887015286810151878701526080808201519087015260a0808201519087015260c0908101519086015260e0909401939082019060010161244b565b50508295506124cc8188018960ff169052565b50505050509392505050565b6000602082840312156124ea57600080fd5b8135610ae8816123ce565b6020808252825182820181905260009190848201906040850190845b8181101561254357835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612511565b50909695505050505050565b60006020828403121561256157600080fd5b5035919050565b60005b8381101561258357818101518382015260200161256b565b83811115612592576000848401525b50505050565b600081518084526125b0816020860160208601612568565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610ae86020830184612598565b600060a080830181845280865180835260c092508286019150828160051b8701016020808a0160005b84811015612971578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400186528151805173ffffffffffffffffffffffffffffffffffffffff1685526106c084820151818688015261268182880182612598565b9150506040808301518783038289015261269b8382612598565b606085810151908a0152608080860151908a01528c8501518d8a01528b8501518c8a015260e080860151908a0152610100808601511515908a0152610120808601511515908a0152610140808601511515908a0152610160808601511515908a0152610180808601511515908a01526101a0808601516fffffffffffffffffffffffffffffffff908116918b01919091526101c0808701518216908b01526101e0808701518216908b0152610200808701518216908b0152610220808701518216908b01526102408087015164ffffffffff16908b01526102608087015173ffffffffffffffffffffffffffffffffffffffff908116918c0191909152610280808801518216908c01526102a0808801518216908c01526102c0808801518216908c01526102e080880151908c015261030080880151908c015261032080880151908c015261034080880151908c015261036080880151908c015261038080880151908c01526103a0808801518216908c01526103c080880151908c01526103e080880151908c015261040080880151908c015261042080880151908c015261044080880151908c015261046080880151908c015261048080880151908c01526104a0808801511515908c01526104c0808801511515908c01526104e0808801518316908c0152610500808801518316908c015261052080880151909216918b0191909152610540808701511515908b015261056080870151908b015261058080870151908b01526105a08087015160ff16908b01526105c080870151908b01526105e080870151908b01526106008087015161ffff908116918c0191909152610620808801518216908c015261064080880151909116908b015261066080870151909116908a0152610680808601518a8303828c0152919450925090506129438382612598565b925050506106a080830151925061295d8188018415159052565b50968401969450509082019060010161261e565b50508196506129a68189018a80518252602081015160208301526040810151604083015260ff60608201511660608301525050565b5050505050509392505050565b80516129be816123ce565b919050565b6000602082840312156129d557600080fd5b8151610ae8816123ce565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101e0810167ffffffffffffffff81118282101715612a3357612a336129e0565b60405290565b60405160a0810167ffffffffffffffff81118282101715612a3357612a336129e0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612aa357612aa36129e0565b604052919050565b60006020808385031215612abe57600080fd5b825167ffffffffffffffff80821115612ad657600080fd5b818501915085601f830112612aea57600080fd5b815181811115612afc57612afc6129e0565b8060051b9150612b0d848301612a5c565b8181529183018401918481019088841115612b2757600080fd5b938501935b83851015612b515784519250612b41836123ce565b8282529385019390850190612b2c565b98975050505050505050565b600060208284031215612b6f57600080fd5b6040516020810181811067ffffffffffffffff82111715612b9257612b926129e0565b6040529151825250919050565b600060208284031215612bb157600080fd5b610ae88383612b5d565b600060208284031215612bcd57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80516fffffffffffffffffffffffffffffffff811681146129be57600080fd5b805164ffffffffff811681146129be57600080fd5b805161ffff811681146129be57600080fd5b60006101e08284031215612c5d57600080fd5b612c65612a0f565b612c6f8484612b5d565b8152612c7d60208401612c03565b6020820152612c8e60408401612c03565b6040820152612c9f60608401612c03565b6060820152612cb060808401612c03565b6080820152612cc160a08401612c03565b60a0820152612cd260c08401612c23565b60c0820152612ce360e08401612c38565b60e0820152610100612cf68185016129b3565b90820152610120612d088482016129b3565b90820152610140612d1a8482016129b3565b90820152610160612d2c8482016129b3565b90820152610180612d3e848201612c03565b908201526101a0612d50848201612c03565b908201526101c0612d62848201612c03565b908201529392505050565b600060208284031215612d7f57600080fd5b610ae882612c23565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612de957612de9612d88565b5060010190565b600060ff821660ff811415612e0757612e07612d88565b60010192915050565b60008060008060808587031215612e2657600080fd5b845193506020850151925060408501519150612e4460608601612c23565b905092959194509250565b600082601f830112612e6057600080fd5b815167ffffffffffffffff811115612e7a57612e7a6129e0565b612eab60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a5c565b818152846020838601011115612ec057600080fd5b612ed1826020830160208701612568565b949350505050565b600060208284031215612eeb57600080fd5b815167ffffffffffffffff811115612f0257600080fd5b612ed184828501612e4f565b600060208284031215612f2057600080fd5b81518015158114610ae857600080fd5b600060208284031215612f4257600080fd5b815167ffffffffffffffff80821115612f5a57600080fd5b9083019060a08286031215612f6e57600080fd5b612f76612a39565b612f7f83612c38565b8152612f8d60208401612c38565b6020820152612f9e60408401612c38565b60408201526060830151612fb1816123ce565b6060820152608083015182811115612fc857600080fd5b612fd487828601612e4f565b60808301525095945050505050565b600060208284031215612ff557600080fd5b815160ff81168114610ae857600080fdfea2646970667358221220ea8b91961650102890327ad62b0cc9c8a16ef928494315853d831f7131c7bc5264736f6c634300080a00330000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419
60c06040523480156200001157600080fd5b506040516200311738038062003117833981016040819052620000349162000069565b6001600160a01b039182166080521660a052620000a1565b80516001600160a01b03811681146200006457600080fd5b919050565b600080604083850312156200007d57600080fd5b62000088836200004c565b915062000098602084016200004c565b90509250929050565b60805160a05161303c620000db6000396000818161017c0152611e4601526000818160b401528181611c2c0152611cc4015261303c6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063825ffd921161005b578063825ffd921461013c5780639201de5514610157578063d22cf68a14610177578063ec489c211461019e57600080fd5b80630496f53a1461008d5780633c1740ed146100af57806351974cc0146100fb578063586c14421461011c575b600080fd5b61009c670de0b6b3a764000081565b6040519081526020015b60405180910390f35b6100d67f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a6565b61010e6101093660046123f3565b6101bf565b6040516100a692919061242c565b61012f61012a3660046124d8565b6109e2565b6040516100a691906124f5565b6100d6739f8f72aa9304c8b593d555f12ef6589cc3a579a281565b61016a61016536600461254f565b610aef565b6040516100a691906125e2565b6100d67f000000000000000000000000000000000000000000000000000000000000000081565b6101b16101ac3660046124d8565b610c67565b6040516100a69291906125f5565b60606000808473ffffffffffffffffffffffffffffffffffffffff1663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561020f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023391906129c3565b905060008173ffffffffffffffffffffffffffffffffffffffff1663d1946dbc6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610282573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102c89190810190612aab565b6040517f4417a58300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152919250600091841690634417a58390602401602060405180830381865afa15801561033a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035e9190612b9f565b6040517feddf1b7900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015291925060009185169063eddf1b7990602401602060405180830381865afa1580156103d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f49190612bbb565b9050600073ffffffffffffffffffffffffffffffffffffffff881661041a57600061041d565b83515b67ffffffffffffffff811115610435576104356129e0565b6040519080825280602002602001820160405280156104be57816020015b6104ab6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816104535790505b50905060005b84518110156109d45760008673ffffffffffffffffffffffffffffffffffffffff166335ea6a758784815181106104fd576104fd612bd4565b60200260200101516040518263ffffffff1660e01b815260040161053d919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6101e060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f9190612c4a565b905085828151811061059357610593612bd4565b60200260200101518383815181106105ad576105ad612bd4565b602090810291909101015173ffffffffffffffffffffffffffffffffffffffff91821690526101008201516040517f1da24f3e0000000000000000000000000000000000000000000000000000000081528c83166004820152911690631da24f3e90602401602060405180830381865afa15801561062f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106539190612bbb565b83838151811061066557610665612bd4565b602090810291909101810151015261067d8583611ef5565b83838151811061068f5761068f612bd4565b60209081029190910101519015156040909101526106ad8583611f82565b156109c1576101408101516040517f1da24f3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c8116600483015290911690631da24f3e90602401602060405180830381865afa158015610725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107499190612bbb565b83838151811061075b5761075b612bd4565b6020908102919091010151608001526101208101516040517fc634dfaa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301529091169063c634dfaa90602401602060405180830381865afa1580156107dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108019190612bbb565b83838151811061081357610813612bd4565b602002602001015160a001818152505082828151811061083557610835612bd4565b602002602001015160a001516000146109c1576101208101516040517fe78c9b3b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301529091169063e78c9b3b90602401602060405180830381865afa1580156108bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108df9190612bbb565b8383815181106108f1576108f1612bd4565b6020908102919091010151606001526101208101516040517f79ce6b8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152909116906379ce6b8c90602401602060405180830381865afa158015610973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109979190612d6d565b64ffffffffff168383815181106109b0576109b0612bd4565b602002602001015160c00181815250505b50806109cc81612db7565b9150506104c4565b509890975095505050505050565b606060008273ffffffffffffffffffffffffffffffffffffffff1663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5591906129c3565b90508073ffffffffffffffffffffffffffffffffffffffff1663d1946dbc6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610aa2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ae89190810190612aab565b9392505050565b606060005b60208160ff16108015610b405750828160ff1660208110610b1757610b17612bd4565b1a60f81b7fff000000000000000000000000000000000000000000000000000000000000001615155b15610b575780610b4f81612df0565b915050610af4565b60008160ff1667ffffffffffffffff811115610b7557610b756129e0565b6040519080825280601f01601f191660200182016040528015610b9f576020820181803683370190505b509050600091505b60208260ff16108015610bf35750838260ff1660208110610bca57610bca612bd4565b1a60f81b7fff000000000000000000000000000000000000000000000000000000000000001615155b15610ae857838260ff1660208110610c0d57610c0d612bd4565b1a60f81b818360ff1681518110610c2657610c26612bd4565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535081610c5f81612df0565b925050610ba7565b6060610c976040518060800160405280600081526020016000815260200160008152602001600060ff1681525090565b60008373ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0891906129c3565b905060008473ffffffffffffffffffffffffffffffffffffffff1663026b1d5f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b91906129c3565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e860accb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dee91906129c3565b905060008273ffffffffffffffffffffffffffffffffffffffff1663d1946dbc6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e839190810190612aab565b90506000815167ffffffffffffffff811115610ea157610ea16129e0565b60405190808252806020026020018201604052801561109d57816020015b604080516106c0810182526000808252606060208084018290529383018190528083018290526080830182905260a0830182905260c0830182905260e08301829052610100830182905261012083018290526101408301829052610160830182905261018083018290526101a083018290526101c083018290526101e08301829052610200830182905261022083018290526102408301829052610260830182905261028083018290526102a083018290526102c083018290526102e08301829052610300830182905261032083018290526103408301829052610360830182905261038083018290526103a083018290526103c083018290526103e08301829052610400830182905261042083018290526104408301829052610460830182905261048083018290526104a083018290526104c083018290526104e08301829052610500830182905261052083018290526105408301829052610560830182905261058083018290526105a083018290526105c083018290526105e0830182905261060083018290526106208301829052610640830182905261066083018290526106808301526106a082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610ebf5790505b50905060005b8251811015611bfb5760008282815181106110c0576110c0612bd4565b602002602001015190508382815181106110dc576110dc612bd4565b602090810291909101015173ffffffffffffffffffffffffffffffffffffffff9081168083526040517f35ea6a7500000000000000000000000000000000000000000000000000000000815260048101919091526000918816906335ea6a75906024016101e060405180830381865afa15801561115d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111819190612c4a565b60208101516fffffffffffffffffffffffffffffffff9081166101a0850152606082015181166101c085015260408083015182166101e08601526080830151821661020086015260a083015190911661022085015260c082015164ffffffffff1661024085015261010082015173ffffffffffffffffffffffffffffffffffffffff908116610260860152610120830151811661028086015261014083015181166102a086015261016083015181166102c0860152845191517fb3596f0700000000000000000000000000000000000000000000000000000000815291811660048301529192509089169063b3596f0790602401602060405180830381865afa158015611292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b69190612bbb565b61038083015281516040517f92bf2be000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908916906392bf2be090602401602060405180830381865afa15801561132b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134f91906129c3565b73ffffffffffffffffffffffffffffffffffffffff9081166103a084015282516102608401516040517f70a0823100000000000000000000000000000000000000000000000000000000815290831660048201529116906370a0823190602401602060405180830381865afa1580156113cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f09190612bbb565b826102e001818152505081610280015173ffffffffffffffffffffffffffffffffffffffff1663797743386040518163ffffffff1660e01b8152600401608060405180830381865afa15801561144a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061146e9190612e10565b64ffffffffff16610340860152610320850152506103008301526102a0820151604080517fb1bf962d000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169163b1bf962d916004808201926020929091908290030181865afa1580156114fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151f9190612bbb565b610360830152815173ffffffffffffffffffffffffffffffffffffffff16739f8f72aa9304c8b593d555f12ef6589cc3a579a2141561166a576000826000015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115cd9190612bbb565b90506000836000015173ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401602060405180830381865afa158015611620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116449190612bbb565b905061164f82610aef565b604085015261165d81610aef565b6020850152506117a29050565b816000015173ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156116b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526116ff9190810190612ed9565b8260400181905250816000015173ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015611756573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261179c9190810190612ed9565b60208301525b8051805161ffff604082901c811660e086015260ff603083901c81166060870152602083901c821660c0870152601083901c821660a08701529082166080860181905215156101008601528251671000000000000000811615156104a08701526708000000000000008116151561014087015267040000000000000081161515610120870152670200000000000000811615156101808701526701000000000000001615156101608601526102c085015160a89290921c169060009061186790612004565b80516103c087015260208101516103e087015260408101516104008701526060810151610420870152608081015161044087015260a081015161046087015260c081015161048087015260ff83166105a0870152835190915060d41c64ffffffffff16856105600181815250508873ffffffffffffffffffffffffffffffffffffffff166369b169e16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561191f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119439190612bbb565b6105808601528251640fffffffff605082901c81169160741c166105e08701526105c086015284516040517fd7ed3ef400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908a169063d7ed3ef490602401602060405180830381865afa925050508015611a12575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a0f91810190612f0e565b60015b611a54573d808015611a40576040519150601f19603f3d011682016040523d82523d6000602084013e611a45565b606091505b50506001610540860152611a5d565b15156105408601525b825167400000000000000016151515156104c08601526101a08401516fffffffffffffffffffffffffffffffff9081166105008701526101c08501518116610520870152610180850151166104e08601526105a08501516040517f6c6f6ae100000000000000000000000000000000000000000000000000000000815260ff909116600482015260009073ffffffffffffffffffffffffffffffffffffffff8c1690636c6f6ae190602401600060405180830381865afa158015611b25573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611b6b9190810190612f30565b805161ffff90811661060089015260208201518116610620890152604082015116610640880152606081015173ffffffffffffffffffffffffffffffffffffffff1661066088015260808101516106808801529050611bd4845167200000000000000016151590565b15156106a09096019590955250849350611bf39250839150612db79050565b9150506110a3565b50611c2a6040518060800160405280600081526020016000815260200160008152602001600060ff1681525090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb99190612bbb565b8160400181815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d519190612fe3565b60ff166060820152604080517f8c89b64f000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff881691638c89b64f9160048083019260209291908290030181865afa925050508015611dfe575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611dfb91810190612bbb565b60015b611ede573d808015611e2c576040519150601f19603f3d011682016040523d82523d6000602084013e611e31565b606091505b50670de0b6b3a76400008260000181815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed39190612bbb565b602083015250611ee7565b80825260208201525b909890975095505050505050565b60408051808201909152600281527f3734000000000000000000000000000000000000000000000000000000000000602082015260009060808310611f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6791906125e2565b60405180910390fd5b50509051600191821b82011c16151590565b60408051808201909152600281527f3734000000000000000000000000000000000000000000000000000000000000602082015260009060808310611ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6791906125e2565b50509051600191821b1c16151590565b6120446040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6120846040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8273ffffffffffffffffffffffffffffffffffffffff16630b3429a26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f39190612bbb565b8160000181815250508273ffffffffffffffffffffffffffffffffffffffff1663f42024096040518163ffffffff1660e01b8152600401602060405180830381865afa158015612147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216b9190612bbb565b8160200181815250508273ffffffffffffffffffffffffffffffffffffffff1663d5cd73916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e39190612bbb565b8160400181815250508273ffffffffffffffffffffffffffffffffffffffff166314e32da46040518163ffffffff1660e01b8152600401602060405180830381865afa158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190612bbb565b8160600181815250508273ffffffffffffffffffffffffffffffffffffffff1663acd786866040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d39190612bbb565b8160800181815250508273ffffffffffffffffffffffffffffffffffffffff166334762ca56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234b9190612bbb565b8160a00181815250508273ffffffffffffffffffffffffffffffffffffffff166354c365c66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c39190612bbb565b60c082015292915050565b73ffffffffffffffffffffffffffffffffffffffff811681146123f057600080fd5b50565b6000806040838503121561240657600080fd5b8235612411816123ce565b91506020830135612421816123ce565b809150509250929050565b6040808252835182820181905260009190606090818501906020808901865b838110156124b9578151805173ffffffffffffffffffffffffffffffffffffffff16865283810151848701528781015115158887015286810151878701526080808201519087015260a0808201519087015260c0908101519086015260e0909401939082019060010161244b565b50508295506124cc8188018960ff169052565b50505050509392505050565b6000602082840312156124ea57600080fd5b8135610ae8816123ce565b6020808252825182820181905260009190848201906040850190845b8181101561254357835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612511565b50909695505050505050565b60006020828403121561256157600080fd5b5035919050565b60005b8381101561258357818101518382015260200161256b565b83811115612592576000848401525b50505050565b600081518084526125b0816020860160208601612568565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610ae86020830184612598565b600060a080830181845280865180835260c092508286019150828160051b8701016020808a0160005b84811015612971578984037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff400186528151805173ffffffffffffffffffffffffffffffffffffffff1685526106c084820151818688015261268182880182612598565b9150506040808301518783038289015261269b8382612598565b606085810151908a0152608080860151908a01528c8501518d8a01528b8501518c8a015260e080860151908a0152610100808601511515908a0152610120808601511515908a0152610140808601511515908a0152610160808601511515908a0152610180808601511515908a01526101a0808601516fffffffffffffffffffffffffffffffff908116918b01919091526101c0808701518216908b01526101e0808701518216908b0152610200808701518216908b0152610220808701518216908b01526102408087015164ffffffffff16908b01526102608087015173ffffffffffffffffffffffffffffffffffffffff908116918c0191909152610280808801518216908c01526102a0808801518216908c01526102c0808801518216908c01526102e080880151908c015261030080880151908c015261032080880151908c015261034080880151908c015261036080880151908c015261038080880151908c01526103a0808801518216908c01526103c080880151908c01526103e080880151908c015261040080880151908c015261042080880151908c015261044080880151908c015261046080880151908c015261048080880151908c01526104a0808801511515908c01526104c0808801511515908c01526104e0808801518316908c0152610500808801518316908c015261052080880151909216918b0191909152610540808701511515908b015261056080870151908b015261058080870151908b01526105a08087015160ff16908b01526105c080870151908b01526105e080870151908b01526106008087015161ffff908116918c0191909152610620808801518216908c015261064080880151909116908b015261066080870151909116908a0152610680808601518a8303828c0152919450925090506129438382612598565b925050506106a080830151925061295d8188018415159052565b50968401969450509082019060010161261e565b50508196506129a68189018a80518252602081015160208301526040810151604083015260ff60608201511660608301525050565b5050505050509392505050565b80516129be816123ce565b919050565b6000602082840312156129d557600080fd5b8151610ae8816123ce565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516101e0810167ffffffffffffffff81118282101715612a3357612a336129e0565b60405290565b60405160a0810167ffffffffffffffff81118282101715612a3357612a336129e0565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612aa357612aa36129e0565b604052919050565b60006020808385031215612abe57600080fd5b825167ffffffffffffffff80821115612ad657600080fd5b818501915085601f830112612aea57600080fd5b815181811115612afc57612afc6129e0565b8060051b9150612b0d848301612a5c565b8181529183018401918481019088841115612b2757600080fd5b938501935b83851015612b515784519250612b41836123ce565b8282529385019390850190612b2c565b98975050505050505050565b600060208284031215612b6f57600080fd5b6040516020810181811067ffffffffffffffff82111715612b9257612b926129e0565b6040529151825250919050565b600060208284031215612bb157600080fd5b610ae88383612b5d565b600060208284031215612bcd57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80516fffffffffffffffffffffffffffffffff811681146129be57600080fd5b805164ffffffffff811681146129be57600080fd5b805161ffff811681146129be57600080fd5b60006101e08284031215612c5d57600080fd5b612c65612a0f565b612c6f8484612b5d565b8152612c7d60208401612c03565b6020820152612c8e60408401612c03565b6040820152612c9f60608401612c03565b6060820152612cb060808401612c03565b6080820152612cc160a08401612c03565b60a0820152612cd260c08401612c23565b60c0820152612ce360e08401612c38565b60e0820152610100612cf68185016129b3565b90820152610120612d088482016129b3565b90820152610140612d1a8482016129b3565b90820152610160612d2c8482016129b3565b90820152610180612d3e848201612c03565b908201526101a0612d50848201612c03565b908201526101c0612d62848201612c03565b908201529392505050565b600060208284031215612d7f57600080fd5b610ae882612c23565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612de957612de9612d88565b5060010190565b600060ff821660ff811415612e0757612e07612d88565b60010192915050565b60008060008060808587031215612e2657600080fd5b845193506020850151925060408501519150612e4460608601612c23565b905092959194509250565b600082601f830112612e6057600080fd5b815167ffffffffffffffff811115612e7a57612e7a6129e0565b612eab60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612a5c565b818152846020838601011115612ec057600080fd5b612ed1826020830160208701612568565b949350505050565b600060208284031215612eeb57600080fd5b815167ffffffffffffffff811115612f0257600080fd5b612ed184828501612e4f565b600060208284031215612f2057600080fd5b81518015158114610ae857600080fd5b600060208284031215612f4257600080fd5b815167ffffffffffffffff80821115612f5a57600080fd5b9083019060a08286031215612f6e57600080fd5b612f76612a39565b612f7f83612c38565b8152612f8d60208401612c38565b6020820152612f9e60408401612c38565b60408201526060830151612fb1816123ce565b6060820152608083015182811115612fc857600080fd5b612fd487828601612e4f565b60808301525095945050505050565b600060208284031215612ff557600080fd5b815160ff81168114610ae857600080fdfea2646970667358221220ea8b91961650102890327ad62b0cc9c8a16ef928494315853d831f7131c7bc5264736f6c634300080a00330000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419

Check out more smart contracts

Build blockchain magic with Alchemy

Alchemy combines the most powerful web3 developer products and tools with resources, community and legendary support.