// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
import {HooxTokenV3} from "./HooxTokenV3.sol";
import {
IERC20Minimal,
IUniswapV3Factory,
IUniswapV3Pool
} from "../interfaces/IVlady.sol";
import {
IAggregatorV3,
IUniswapV3PoolOracle,
IHooxTradeRouterV3,
IHooxFeeVaultV3,
IHooxAssetRegistryV3,
IHooxInfrastructureV3,
IHooxTokenDeployerV3
} from "./IHooxV3.sol";
import {SafeTransfer, ReentrancyGuard} from "../libraries/SafeTransfer.sol";
import {FullMath} from "../libraries/FullMath.sol";
import {LaunchMath} from "../libraries/LaunchMath.sol";
import {HooxLaunchMathV3} from "./libraries/HooxLaunchMathV3.sol";
/// @title HooxFactoryV3
/// @notice Side-by-side HOOX factory. It leaves every legacy Vlady token,
/// pool, vault and claim right untouched while adding variable supply,
/// oracle-priced starting FDV, curve profiles and four strategy modules.
contract HooxFactoryV3 is ReentrancyGuard {
error InvalidConfiguration();
error InvalidLaunch();
error UnsupportedStrategy();
error OracleFailure();
error TransferFailure();
error UnknownToken();
enum Strategy { CREATOR_CLAIM, STAKING, AUTO_BURN, RWA_REWARDS }
enum CurveProfile { SOFT, BALANCED, TURBO }
struct LaunchParams {
string name;
string symbol;
string metadataURI;
bytes32 salt;
uint256 totalSupply;
uint32 startingFdvUsd;
CurveProfile curveProfile;
uint24 poolFee;
Strategy strategy;
address feeRecipient;
address rewardAsset;
uint256 creatorInitialBuy;
uint256 minCreatorTokensOut;
uint64 deadline;
}
struct LaunchCore {
address token;
address pool;
bool tokenIsToken0;
int24 tickLower;
int24 tickUpper;
uint128 liquidity;
uint160 sqrtPriceX96;
}
struct LaunchState {
LaunchCore core;
address vault;
address module;
uint256 id;
}
struct TokenInfo {
address token;
address pool;
address creator;
address vault;
address module;
address rewardAsset;
uint256 totalSupply;
uint256 creatorInitialBuy;
uint32 startingFdvUsd;
uint24 poolFee;
Strategy strategy;
CurveProfile curveProfile;
bool tokenIsToken0;
int24 tickLower;
int24 tickUpper;
uint128 liquidity;
uint64 createdAt;
}
struct TokenView {
address token;
string name;
string symbol;
address creator;
address pool;
address vault;
address module;
address rewardAsset;
uint256 totalSupply;
uint256 creatorInitialBuy;
uint32 startingFdvUsd;
uint24 poolFee;
Strategy strategy;
CurveProfile curveProfile;
uint256 circulatingFromPool;
uint256 poolWeth;
uint256 spotWeiPerToken;
uint256 distributionBps;
uint256 marketCapWei;
uint256 createdAt;
}
uint16 public constant BPS = 10_000;
uint16 public constant PLATFORM_SHARE_BPS = 2_500;
uint16 public constant CREATOR_BUY_PLATFORM_BPS = 500;
uint16 public constant VANITY_SUFFIX = 0x1234;
uint256 public constant SPONSORED_OPENING_BUY = 0.001 ether;
uint256 public constant MAX_CREATOR_INITIAL_BUY = 1 ether;
uint256 public constant BURN_MIN_WETH = 0.01 ether;
uint64 public constant BURN_COOLDOWN = 1 hours;
uint32 public constant BURN_TWAP_WINDOW = 15 minutes;
uint24 public constant BURN_MAX_TWAP_DEVIATION = 1_200;
uint16 public constant FDV_TOLERANCE_BPS = 10;
uint64 public constant SEQUENCER_GRACE_PERIOD = 1 hours;
address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
address public immutable platformWallet;
address public immutable uniFactory;
address public immutable weth;
address public immutable tradeRouter;
address public immutable infrastructure;
address public immutable tokenDeployer;
address public immutable ethUsdFeed;
address public immutable sequencerUptimeFeed;
address public immutable assetRegistry;
address public immutable keeper;
uint32 public immutable maxOracleAge;
uint256 public tokenCount;
mapping(uint256 => TokenInfo) public tokens;
mapping(address => uint256) public idOfToken;
mapping(address => uint256) public idOfPool;
event TokenLaunched(
uint256 indexed id,
address indexed token,
address indexed creator,
address pool,
address vault,
address module,
address rewardAsset,
uint256 totalSupply,
uint32 startingFdvUsd,
uint24 poolFee,
Strategy strategy,
CurveProfile curveProfile,
uint256 creatorInitialBuy,
string name,
string symbol
);
event TokenMetadataPublished(
address indexed token,
bytes32 indexed metadataDigest,
string metadataURI
);
event CreatorOpeningBuy(
uint256 indexed id,
address indexed creator,
uint256 ethSpent,
uint256 creatorTokens,
uint256 platformTokens
);
event SponsoredOpeningBuy(uint256 indexed id, address indexed recipient, uint256 ethSpent, uint256 tokensOut);
constructor(
address platformWallet_,
address uniFactory_,
address weth_,
address tradeRouter_,
address infrastructure_,
address tokenDeployer_,
address ethUsdFeed_,
address sequencerUptimeFeed_,
address assetRegistry_,
address keeper_,
uint32 maxOracleAge_
) {
require(
platformWallet_ != address(0) && uniFactory_ != address(0) && weth_ != address(0)
&& tradeRouter_ != address(0) && infrastructure_ != address(0)
&& tokenDeployer_ != address(0) && ethUsdFeed_ != address(0) && assetRegistry_ != address(0) && keeper_ != address(0),
InvalidConfiguration()
);
require(maxOracleAge_ >= 60, InvalidConfiguration());
platformWallet = platformWallet_;
uniFactory = uniFactory_;
weth = weth_;
tradeRouter = tradeRouter_;
infrastructure = infrastructure_;
tokenDeployer = tokenDeployer_;
ethUsdFeed = ethUsdFeed_;
sequencerUptimeFeed = sequencerUptimeFeed_;
assetRegistry = assetRegistry_;
keeper = keeper_;
maxOracleAge = maxOracleAge_;
}
receive() external payable {}
function launchCost() external pure returns (uint256) { return 0; }
function sponsorFloat() external view returns (uint256) { return address(this).balance; }
function INITIAL_BUY() external pure returns (uint256) { return SPONSORED_OPENING_BUY; }
function isSupportedFee(uint24 fee) public view returns (bool) {
if (fee != 500 && fee != 3000 && fee != 10000) return false;
return IUniswapV3Factory(uniFactory).feeAmountTickSpacing(fee) > 0;
}
function isSupportedSupply(uint256 supply) public pure returns (bool) {
return supply == 1_000_000 ether
|| supply == 10_000_000 ether
|| supply == 69_000_000 ether
|| supply == 100_000_000 ether
|| supply == 420_000_000 ether
|| supply == 1_000_000_000 ether;
}
function isSupportedFdv(uint32 fdvUsd) public pure returns (bool) {
return fdvUsd == 5_000 || fdvUsd == 8_000 || fdvUsd == 10_000;
}
function tokenInitCodeHash(
string calldata name,
string calldata symbol,
string calldata metadataURI,
uint256 totalSupply,
address rewardAsset
) public view returns (bytes32) {
return IHooxTokenDeployerV3(tokenDeployer).tokenInitCodeHash(
address(this), name, symbol, metadataURI, totalSupply, rewardAsset
);
}
function predictToken(
string calldata name,
string calldata symbol,
string calldata metadataURI,
uint256 totalSupply,
address rewardAsset,
bytes32 salt
) public view returns (address) {
return IHooxTokenDeployerV3(tokenDeployer).predictToken(
address(this), name, symbol, metadataURI, totalSupply, rewardAsset, salt
);
}
function previewInitialSqrtPriceX96(uint256 totalSupply, uint32 startingFdvUsd, bool tokenIsToken0)
external view returns (uint160 sqrtPriceX96, uint256 ethUsdAnswer, uint8 feedDecimals)
{
(ethUsdAnswer, feedDecimals) = _readEthUsd();
sqrtPriceX96 = _initialSqrtPrice(totalSupply, startingFdvUsd, tokenIsToken0, ethUsdAnswer, feedDecimals);
}
function createToken(LaunchParams calldata params)
external payable nonReentrant returns (uint256, address, address, address, address)
{
_validate(params);
LaunchState memory state;
state.core = _deployMarket(params);
state.vault = IHooxInfrastructureV3(infrastructure).deployVault(address(this));
state.module = _deployModule(params, state.core, state.vault);
_configureRewards(params, state);
_initializeAndSeedVault(params, state);
state.id = _recordLaunch(params, state);
_emitLaunch(params, state);
_creatorOpeningBuy(params, state);
_sponsorOpeningBuy(params, state);
return (state.id, state.core.token, state.core.pool, state.vault, state.module);
}
function collectFees(uint256 id) external returns (uint256 wethAmount, uint256 tokenAmount) {
address vault = tokens[id].vault;
require(vault != address(0), UnknownToken());
return IHooxFeeVaultV3(vault).harvest();
}
function getToken(uint256 id) external view returns (TokenView memory viewData) {
TokenInfo storage info = tokens[id];
if (info.token == address(0)) return viewData;
uint256 inPool = IERC20Minimal(info.token).balanceOf(info.pool);
uint256 inVault = IERC20Minimal(info.token).balanceOf(info.vault);
uint256 burned = IERC20Minimal(info.token).balanceOf(DEAD);
uint256 excluded = inPool + inVault + burned;
uint256 circulating = excluded >= info.totalSupply ? 0 : info.totalSupply - excluded;
uint256 reserve = IERC20Minimal(weth).balanceOf(info.pool);
uint256 spot = _spot(info.pool, info.tokenIsToken0);
viewData = TokenView({
token: info.token,
name: HooxTokenV3(info.token).name(),
symbol: HooxTokenV3(info.token).symbol(),
creator: info.creator,
pool: info.pool,
vault: info.vault,
module: info.module,
rewardAsset: info.rewardAsset,
totalSupply: info.totalSupply,
creatorInitialBuy: info.creatorInitialBuy,
startingFdvUsd: info.startingFdvUsd,
poolFee: info.poolFee,
strategy: info.strategy,
curveProfile: info.curveProfile,
circulatingFromPool: circulating,
poolWeth: reserve,
spotWeiPerToken: spot,
distributionBps: circulating * BPS / info.totalSupply,
marketCapWei: FullMath.mulDiv(spot, info.totalSupply, 1 ether),
createdAt: info.createdAt
});
}
function _validate(LaunchParams calldata params) private view {
require(msg.value == params.creatorInitialBuy, InvalidLaunch());
require(params.creatorInitialBuy <= MAX_CREATOR_INITIAL_BUY, InvalidLaunch());
require(params.deadline == 0 || block.timestamp <= params.deadline, InvalidLaunch());
require(address(this).balance - msg.value >= SPONSORED_OPENING_BUY, InvalidLaunch());
require(bytes(params.name).length != 0 && bytes(params.name).length <= 32, InvalidLaunch());
require(bytes(params.symbol).length != 0 && bytes(params.symbol).length <= 10, InvalidLaunch());
bytes memory metadataBytes = bytes(params.metadataURI);
require(metadataBytes.length > 7 && metadataBytes.length <= 200, InvalidLaunch());
require(
metadataBytes[0] == 0x69 && metadataBytes[1] == 0x70 && metadataBytes[2] == 0x66
&& metadataBytes[3] == 0x73 && metadataBytes[4] == 0x3a
&& metadataBytes[5] == 0x2f && metadataBytes[6] == 0x2f,
InvalidLaunch()
);
require(params.salt != bytes32(0), InvalidLaunch());
require(isSupportedSupply(params.totalSupply), InvalidLaunch());
require(isSupportedFdv(params.startingFdvUsd), InvalidLaunch());
require(isSupportedFee(params.poolFee), InvalidLaunch());
require(uint8(params.curveProfile) <= uint8(CurveProfile.TURBO), InvalidLaunch());
require(uint8(params.strategy) <= uint8(Strategy.RWA_REWARDS), InvalidLaunch());
if (params.strategy == Strategy.RWA_REWARDS) {
require(params.rewardAsset != address(0), InvalidLaunch());
require(IHooxAssetRegistryV3(assetRegistry).isAssetEnabled(params.rewardAsset), InvalidLaunch());
} else {
require(params.rewardAsset == address(0), InvalidLaunch());
}
address predicted = predictToken(
params.name, params.symbol, params.metadataURI, params.totalSupply, params.rewardAsset, params.salt
);
require(uint160(predicted) & 0xffff == VANITY_SUFFIX, InvalidLaunch());
require(idOfToken[predicted] == 0, InvalidLaunch());
}
function _deployMarket(LaunchParams calldata params) private returns (LaunchCore memory core) {
core.token = IHooxTokenDeployerV3(tokenDeployer).deployToken(
params.name,
params.symbol,
params.metadataURI,
params.totalSupply,
params.rewardAsset,
params.salt
);
core.pool = IUniswapV3Factory(uniFactory).createPool(core.token, weth, params.poolFee);
core.tokenIsToken0 = IUniswapV3Pool(core.pool).token0() == core.token;
(uint256 ethUsdAnswer, uint8 feedDecimals) = _readEthUsd();
core.sqrtPriceX96 = _initialSqrtPrice(
params.totalSupply, params.startingFdvUsd, core.tokenIsToken0, ethUsdAnswer, feedDecimals
);
IUniswapV3Pool(core.pool).initialize(core.sqrtPriceX96);
IUniswapV3PoolOracle(core.pool).increaseObservationCardinalityNext(16);
(, int24 currentTick,,,,,) = IUniswapV3Pool(core.pool).slot0();
int24 spacing = IUniswapV3Factory(uniFactory).feeAmountTickSpacing(params.poolFee);
(core.tickLower, core.tickUpper) = HooxLaunchMathV3.profileRange(
currentTick, spacing, core.tokenIsToken0, uint8(params.curveProfile)
);
core.liquidity = LaunchMath.liquidityForSingleSided(
params.totalSupply, core.tickLower, core.tickUpper, core.tokenIsToken0
);
_validateImpliedFdv(params, core, ethUsdAnswer, feedDecimals);
}
function _deployModule(LaunchParams calldata params, LaunchCore memory core, address vault)
private returns (address module)
{
IHooxInfrastructureV3 infra = IHooxInfrastructureV3(infrastructure);
if (params.strategy == Strategy.CREATOR_CLAIM) {
address recipient = params.feeRecipient == address(0) ? msg.sender : params.feeRecipient;
return infra.deployClaim(vault, core.token, weth, recipient);
}
if (params.strategy == Strategy.STAKING) {
return infra.deployStaking(vault, core.token, weth);
}
if (params.strategy == Strategy.AUTO_BURN) {
return infra.deployBurn(
vault, core.token, weth, core.pool, tradeRouter, params.poolFee,
BURN_MIN_WETH, BURN_COOLDOWN, BURN_TWAP_WINDOW, BURN_MAX_TWAP_DEVIATION
);
}
if (params.strategy == Strategy.RWA_REWARDS) {
return infra.deployRwa(
vault, core.token, weth, params.rewardAsset, assetRegistry, keeper
);
}
revert UnsupportedStrategy();
}
function _configureRewards(LaunchParams calldata params, LaunchState memory state) private {
if (params.strategy != Strategy.RWA_REWARDS) return;
address[] memory excluded = new address[](7);
excluded[0] = address(this);
excluded[1] = state.core.pool;
excluded[2] = state.vault;
excluded[3] = state.module;
excluded[4] = platformWallet;
excluded[5] = tradeRouter;
excluded[6] = DEAD;
HooxTokenV3(state.core.token).finalizeRewardConfiguration(state.module, excluded);
}
function _initializeAndSeedVault(LaunchParams calldata params, LaunchState memory state) private {
LaunchCore memory core = state.core;
IHooxFeeVaultV3(state.vault).initialize(
core.token,
weth,
core.pool,
platformWallet,
state.module,
core.tokenIsToken0,
core.tickLower,
core.tickUpper,
core.liquidity,
PLATFORM_SHARE_BPS,
params.poolFee
);
SafeTransfer.safeTransfer(core.token, state.vault, params.totalSupply);
IHooxFeeVaultV3(state.vault).seed();
}
function _recordLaunch(LaunchParams calldata params, LaunchState memory state) private returns (uint256 id) {
LaunchCore memory core = state.core;
id = ++tokenCount;
tokens[id] = TokenInfo({
token: core.token,
pool: core.pool,
creator: msg.sender,
vault: state.vault,
module: state.module,
rewardAsset: params.rewardAsset,
totalSupply: params.totalSupply,
creatorInitialBuy: params.creatorInitialBuy,
startingFdvUsd: params.startingFdvUsd,
poolFee: params.poolFee,
strategy: params.strategy,
curveProfile: params.curveProfile,
tokenIsToken0: core.tokenIsToken0,
tickLower: core.tickLower,
tickUpper: core.tickUpper,
liquidity: core.liquidity,
createdAt: uint64(block.timestamp)
});
idOfToken[core.token] = id;
idOfPool[core.pool] = id;
}
function _emitLaunch(LaunchParams calldata params, LaunchState memory state) private {
emit TokenLaunched(
state.id,
state.core.token,
msg.sender,
state.core.pool,
state.vault,
state.module,
params.rewardAsset,
params.totalSupply,
params.startingFdvUsd,
params.poolFee,
params.strategy,
params.curveProfile,
params.creatorInitialBuy,
params.name,
params.symbol
);
emit TokenMetadataPublished(
state.core.token,
keccak256(bytes(params.metadataURI)),
params.metadataURI
);
}
function _creatorOpeningBuy(LaunchParams calldata params, LaunchState memory state) private {
if (params.creatorInitialBuy == 0) return;
(uint256 tokensOut, uint256 ethSpent) = IHooxTradeRouterV3(tradeRouter).buyExactEth{
value: params.creatorInitialBuy
}(
state.core.token,
state.core.pool,
params.poolFee,
params.minCreatorTokensOut,
address(this),
params.deadline
);
uint256 platformTokens = tokensOut * CREATOR_BUY_PLATFORM_BPS / BPS;
uint256 creatorTokens = tokensOut - platformTokens;
SafeTransfer.safeTransfer(state.core.token, msg.sender, creatorTokens);
if (platformTokens != 0) SafeTransfer.safeTransfer(state.core.token, platformWallet, platformTokens);
uint256 refund = params.creatorInitialBuy - ethSpent;
if (refund != 0) {
(bool ok,) = msg.sender.call{value: refund}("");
require(ok, TransferFailure());
}
emit CreatorOpeningBuy(state.id, msg.sender, ethSpent, creatorTokens, platformTokens);
}
function _sponsorOpeningBuy(LaunchParams calldata params, LaunchState memory state) private {
(uint256 tokensOut, uint256 ethSpent) = IHooxTradeRouterV3(tradeRouter).buyExactEth{
value: SPONSORED_OPENING_BUY
}(
state.core.token,
state.core.pool,
params.poolFee,
0,
platformWallet,
uint64(block.timestamp + 5 minutes)
);
emit SponsoredOpeningBuy(state.id, platformWallet, ethSpent, tokensOut);
}
function _readEthUsd() private view returns (uint256 answer, uint8 decimals_) {
if (sequencerUptimeFeed != address(0)) {
(, int256 sequencerAnswer, uint256 startedAt,,) = IAggregatorV3(sequencerUptimeFeed).latestRoundData();
require(sequencerAnswer == 0, OracleFailure());
require(startedAt != 0 && block.timestamp > startedAt + SEQUENCER_GRACE_PERIOD, OracleFailure());
}
(uint80 roundId, int256 signedAnswer,, uint256 updatedAt, uint80 answeredInRound) =
IAggregatorV3(ethUsdFeed).latestRoundData();
require(signedAnswer > 0 && updatedAt != 0 && answeredInRound >= roundId, OracleFailure());
require(updatedAt <= block.timestamp && block.timestamp - updatedAt <= maxOracleAge, OracleFailure());
decimals_ = IAggregatorV3(ethUsdFeed).decimals();
require(decimals_ <= 18, OracleFailure());
answer = uint256(signedAnswer);
}
function _initialSqrtPrice(
uint256 totalSupply,
uint32 startingFdvUsd,
bool tokenIsToken0,
uint256 ethUsdAnswer,
uint8 feedDecimals
) private pure returns (uint160) {
uint256 numerator = uint256(startingFdvUsd) * 1 ether * (10 ** feedDecimals);
uint256 denominator = totalSupply * ethUsdAnswer;
return tokenIsToken0
? HooxLaunchMathV3.encodeSqrtPriceX96(numerator, denominator)
: HooxLaunchMathV3.encodeSqrtPriceX96(denominator, numerator);
}
function _validateImpliedFdv(
LaunchParams calldata params,
LaunchCore memory core,
uint256 ethUsdAnswer,
uint8 feedDecimals
) private pure {
uint256 spot = _spotFromSqrt(core.sqrtPriceX96, core.tokenIsToken0);
uint256 tokenUsd18 = FullMath.mulDiv(spot, ethUsdAnswer, 10 ** feedDecimals);
uint256 impliedFdvUsd18 = FullMath.mulDiv(tokenUsd18, params.totalSupply, 1 ether);
uint256 targetFdvUsd18 = uint256(params.startingFdvUsd) * 1 ether;
uint256 difference = impliedFdvUsd18 > targetFdvUsd18
? impliedFdvUsd18 - targetFdvUsd18
: targetFdvUsd18 - impliedFdvUsd18;
require(difference * BPS <= targetFdvUsd18 * FDV_TOLERANCE_BPS, InvalidLaunch());
}
function _spot(address pool, bool tokenIsToken0) private view returns (uint256) {
(uint160 sqrtPriceX96,,,,,,) = IUniswapV3Pool(pool).slot0();
return _spotFromSqrt(sqrtPriceX96, tokenIsToken0);
}
function _spotFromSqrt(uint160 sqrtPriceX96, bool tokenIsToken0) private pure returns (uint256) {
uint256 q = uint256(sqrtPriceX96);
if (q <= type(uint128).max) {
uint256 ratioX192 = q * q;
return tokenIsToken0
? FullMath.mulDiv(ratioX192, 1 ether, 1 << 192)
: FullMath.mulDiv(1 << 192, 1 ether, ratioX192);
}
uint256 ratioX128 = FullMath.mulDiv(q, q, 1 << 64);
return tokenIsToken0
? FullMath.mulDiv(ratioX128, 1 ether, 1 << 128)
: FullMath.mulDiv(1 << 128, 1 ether, ratioX128);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "platformWallet_",
"type": "address",
"internalType": "address"
},
{
"name": "uniFactory_",
"type": "address",
"internalType": "address"
},
{
"name": "weth_",
"type": "address",
"internalType": "address"
},
{
"name": "tradeRouter_",
"type": "address",
"internalType": "address"
},
{
"name": "infrastructure_",
"type": "address",
"internalType": "address"
},
{
"name": "tokenDeployer_",
"type": "address",
"internalType": "address"
},
{
"name": "ethUsdFeed_",
"type": "address",
"internalType": "address"
},
{
"name": "sequencerUptimeFeed_",
"type": "address",
"internalType": "address"
},
{
"name": "assetRegistry_",
"type": "address",
"internalType": "address"
},
{
"name": "keeper_",
"type": "address",
"internalType": "address"
},
{
"name": "maxOracleAge_",
"type": "uint32",
"internalType": "uint32"
}
],
"stateMutability": "nonpayable"
},
{
"name": "InvalidConfiguration",
"type": "error",
"inputs": []
},
{
"name": "InvalidLaunch",
"type": "error",
"inputs": []
},
{
"name": "OracleFailure",
"type": "error",
"inputs": []
},
{
"name": "TransferFailed",
"type": "error",
"inputs": []
},
{
"name": "TransferFailure",
"type": "error",
"inputs": []
},
{
"name": "UnknownToken",
"type": "error",
"inputs": []
},
{
"name": "UnsupportedStrategy",
"type": "error",
"inputs": []
},
{
"name": "CreatorOpeningBuy",
"type": "event",
"inputs": [
{
"name": "id",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "creator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "ethSpent",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "creatorTokens",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "platformTokens",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SponsoredOpeningBuy",
"type": "event",
"inputs": [
{
"name": "id",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "recipient",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "ethSpent",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokensOut",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "TokenLaunched",
"type": "event",
"inputs": [
{
"name": "id",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "creator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "vault",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "module",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "rewardAsset",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "totalSupply",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "startingFdvUsd",
"type": "uint32",
"indexed": false,
"internalType": "uint32"
},
{
"name": "poolFee",
"type": "uint24",
"indexed": false,
"internalType": "uint24"
},
{
"name": "strategy",
"type": "uint8",
"indexed": false,
"internalType": "enum HooxFactoryV3.Strategy"
},
{
"name": "curveProfile",
"type": "uint8",
"indexed": false,
"internalType": "enum HooxFactoryV3.CurveProfile"
},
{
"name": "creatorInitialBuy",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "name",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"indexed": false,
"internalType": "string"
}
],
"anonymous": false
},
{
"name": "TokenMetadataPublished",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "metadataDigest",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
},
{
"name": "metadataURI",
"type": "string",
"indexed": false,
"internalType": "string"
}
],
"anonymous": false
},
{
"name": "BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "BURN_COOLDOWN",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
},
{
"name": "BURN_MAX_TWAP_DEVIATION",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint24",
"internalType": "uint24"
}
],
"stateMutability": "view"
},
{
"name": "BURN_MIN_WETH",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "BURN_TWAP_WINDOW",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint32",
"internalType": "uint32"
}
],
"stateMutability": "view"
},
{
"name": "CREATOR_BUY_PLATFORM_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "DEAD",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "FDV_TOLERANCE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "INITIAL_BUY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "pure"
},
{
"name": "MAX_CREATOR_INITIAL_BUY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "PLATFORM_SHARE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "SEQUENCER_GRACE_PERIOD",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
},
{
"name": "SPONSORED_OPENING_BUY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "VANITY_SUFFIX",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "assetRegistry",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "collectFees",
"type": "function",
"inputs": [
{
"name": "id",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "wethAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "tokenAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "createToken",
"type": "function",
"inputs": [
{
"name": "params",
"type": "tuple",
"components": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "metadataURI",
"type": "string",
"internalType": "string"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "totalSupply",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "startingFdvUsd",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "curveProfile",
"type": "uint8",
"internalType": "enum HooxFactoryV3.CurveProfile"
},
{
"name": "poolFee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "strategy",
"type": "uint8",
"internalType": "enum HooxFactoryV3.Strategy"
},
{
"name": "feeRecipient",
"type": "address",
"internalType": "address"
},
{
"name": "rewardAsset",
"type": "address",
"internalType": "address"
},
{
"name": "creatorInitialBuy",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "minCreatorTokensOut",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "deadline",
"type": "uint64",
"internalType": "uint64"
}
],
"internalType": "struct HooxFactoryV3.LaunchParams"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "payable"
},
{
"name": "ethUsdFeed",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "getToken",
"type": "function",
"inputs": [
{
"name": "id",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "viewData",
"type": "tuple",
"components": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "creator",
"type": "address",
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"internalType": "address"
},
{
"name": "vault",
"type": "address",
"internalType": "address"
},
{
"name": "module",
"type": "address",
"internalType": "address"
},
{
"name": "rewardAsset",
"type": "address",
"internalType": "address"
},
{
"name": "totalSupply",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "creatorInitialBuy",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "startingFdvUsd",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "poolFee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "strategy",
"type": "uint8",
"internalType": "enum HooxFactoryV3.Strategy"
},
{
"name": "curveProfile",
"type": "uint8",
"internalType": "enum HooxFactoryV3.CurveProfile"
},
{
"name": "circulatingFromPool",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "poolWeth",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "spotWeiPerToken",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "distributionBps",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "marketCapWei",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "createdAt",
"type": "uint256",
"internalType": "uint256"
}
],
"internalType": "struct HooxFactoryV3.TokenView"
}
],
"stateMutability": "view"
},
{
"name": "idOfPool",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "idOfToken",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "infrastructure",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "isSupportedFdv",
"type": "function",
"inputs": [
{
"name": "fdvUsd",
"type": "uint32",
"internalType": "uint32"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "pure"
},
{
"name": "isSupportedFee",
"type": "function",
"inputs": [
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isSupportedSupply",
"type": "function",
"inputs": [
{
"name": "supply",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "pure"
},
{
"name": "keeper",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "launchCost",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "pure"
},
{
"name": "maxOracleAge",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint32",
"internalType": "uint32"
}
],
"stateMutability": "view"
},
{
"name": "platformWallet",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "predictToken",
"type": "function",
"inputs": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "metadataURI",
"type": "string",
"internalType": "string"
},
{
"name": "totalSupply",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "rewardAsset",
"type": "address",
"internalType": "address"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "previewInitialSqrtPriceX96",
"type": "function",
"inputs": [
{
"name": "totalSupply",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "startingFdvUsd",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "tokenIsToken0",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [
{
"name": "sqrtPriceX96",
"type": "uint160",
"internalType": "uint160"
},
{
"name": "ethUsdAnswer",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "feedDecimals",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "sequencerUptimeFeed",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "sponsorFloat",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "tokenCount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "tokenDeployer",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "tokenInitCodeHash",
"type": "function",
"inputs": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "metadataURI",
"type": "string",
"internalType": "string"
},
{
"name": "totalSupply",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "rewardAsset",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "tokens",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"internalType": "address"
},
{
"name": "creator",
"type": "address",
"internalType": "address"
},
{
"name": "vault",
"type": "address",
"internalType": "address"
},
{
"name": "module",
"type": "address",
"internalType": "address"
},
{
"name": "rewardAsset",
"type": "address",
"internalType": "address"
},
{
"name": "totalSupply",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "creatorInitialBuy",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "startingFdvUsd",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "poolFee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "strategy",
"type": "uint8",
"internalType": "enum HooxFactoryV3.Strategy"
},
{
"name": "curveProfile",
"type": "uint8",
"internalType": "enum HooxFactoryV3.CurveProfile"
},
{
"name": "tokenIsToken0",
"type": "bool",
"internalType": "bool"
},
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "liquidity",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "createdAt",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
},
{
"name": "tradeRouter",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "uniFactory",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "weth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x6101e03461033257601f614bb838819003918201601f19168301916001600160401b038311848410176103375780849261016094604052833981010312610332576100498161034d565b906100566020820161034d565b6100626040830161034d565b61006e6060840161034d565b61007a6080850161034d565b61008660a0860161034d565b9061009360c0870161034d565b926100a060e0880161034d565b946100ae610100890161034d565b966101406100bf6101208b0161034d565b9901519963ffffffff8b16808c036103325760016000556001600160a01b038216151580610320575b8061030e575b806102fc575b806102ea575b806102d8575b806102c6575b806102b4575b806102a2575b1561029157603c116102915760805260a05260c05260e05261010052610120526101405261016052610180526101a0526101c052604051614856908161036282396080518181816102200152818161114b015281816117c70152818161187a015281816133310152613641015260a051818181610c9b01528181610e4701528181611e30015261268d015260c051818181610c60015281816111180152818161207c015281816129e301528181612fd6015281816130d8015281816131980152613234015260e051818181611809015281816121340152818161310b0152818161336a01526135480152610100518181816106f2015281816110060152612f23015261012051818181610bf001528181612179015281816122be015261255c015261014051818181610798015261372501526101605181818161065601526136e701526101805181818161075301528181610a1e015261300501526101a051818181610611015261302d01526101c051818181611df6015261382c0152f35b63c52a9bd360e01b60005260046000fd5b506001600160a01b038b161515610112565b506001600160a01b038a16151561010c565b506001600160a01b0388161515610106565b506001600160a01b0387161515610100565b506001600160a01b03861615156100fa565b506001600160a01b03851615156100f4565b506001600160a01b03841615156100ee565b506001600160a01b03831615156100e8565b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036103325756fe61010080604052600436101561001e575b50361561001c57600080fd5b005b600090813560e01c90816303fd2a4514612337575080630974f2c6146121c5578063249d39e9146121a85780632a2dae0a1461216357806331d7ba591461211e57806334d33bcb1461210157806336074a06146120c857806336adefd3146120ab5780633fc8cef314612066578063456da091146104ae5780634f64b2be14611f3d57806350e3696d146104a957806352e0702214611f215780635360add614611e7c5780635fdd27e814611e5f57806376771d4b14611e1a5780637c87a99314611dd95780637f0259ba146107c75780638009b7bd14610782578063979d7e861461073d5780639818a77e146107215780639bd565d6146106dc5780639f181b5e146106be578063a1d80d6014610685578063a726470514610640578063aced1661146105fb578063b05f0e07146105cd578063b17acdcd1461051a578063b4e4f694146104ed578063cac539f2146104d0578063cb4df527146104ae578063d307b6db146104a9578063d5afe2b114610486578063d846435414610469578063d9dbf77c146103fe578063dde91a98146103e2578063e4b50cb814610271578063e8e121491461024f578063fa2af9da1461020a5763fdb415a40361001057346102075760203660031901126102075760206101fd600435612d38565b6040519015158152f35b80fd5b50346102075780600319360112610207576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102075780600319360112610207576020604051662386f26fc100008152f35b50346102075760203660031901126102075761028e600435612834565b60405180916020825260018060a01b0381511660208301526102606102dd6102c7602084015161028060408701526102a0860190612421565b6040840151858203601f19016060870152612421565b9160018060a01b03606082015116608085015260018060a01b0360808201511660a085015260018060a01b0360a08201511660c085015260018060a01b0360c08201511660e085015260018060a01b0360e08201511661010085015261010081015161012085015261012081015161014085015263ffffffff6101408201511661016085015262ffffff610160820151166101808501526103886101808201516101a08601906123b1565b61039c6101a08201516101c08601906123d4565b6101c08101516101e08501526101e08101516102008501526102008101516102208501526102208101516102408501526102408101518285015201516102808301520390f35b5034610207578060031936011261020757602090604051908152f35b5034610207576060366003190112610207576024359063ffffffff8216820361020757604435908115158203610207575060ff60609261044d61043f6136e5565b929080958492600435613944565b926040519360018060a01b031684526020840152166040820152f35b503461020757806003193601126102075760206040516109c48152f35b50346102075780600319360112610207576020604051670de0b6b3a76400008152f35b6123e1565b5034610207578060031936011261020757602060405166038d7ea4c680008152f35b503461020757806003193601126102075760206040516101f48152f35b5034610207576020366003190112610207576004359062ffffff821682036102075760206101fd83612655565b5034610207576020366003190112610207576004358152600260205260408120600301546001600160a01b031680156105be57604082916004825180958193634641257d60e01b83525af180156105b1576040928291610582575b5082519182526020820152f35b90506105a49150823d84116105aa575b61059c8183612478565b810190612631565b38610575565b503d610592565b50604051903d90823e3d90fd5b638698bf3760e01b8252600482fd5b5034610207576020366003190112610207576004359063ffffffff821682036102075760206101fd836125ff565b50346102075780600319360112610207576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102075780600319360112610207576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610207576020366003190112610207576020906040906001600160a01b036106ad61239b565b168152600383522054604051908152f35b50346102075780600319360112610207576020600154604051908152f35b50346102075780600319360112610207576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610207578060031936011261020757602047604051908152f35b50346102075780600319360112610207576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102075780600319360112610207576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b506020366003190112610207576004356080526001600160401b0360805111610207576101c060031960805136030112610207576001815403611da8576002815561016460805101353403611c3657670de0b6b3a7640000610164608051013511611c36576101a4608051016001600160401b0361084482612dd4565b1615908115611d8b575b5015611c365766038d7ea4c68000610866344761274b565b10611c365760805161087b9060040180612de8565b9050151580611d6e575b15611c365761089e602460805101608051600401612de8565b9050151580611d4e575b15611c36576108cb6108c4604460805101608051600401612de8565b3691612e1a565b8051600781119081611d42575b5015611bbf57805115611c6b5760208101516001600160f81b031916606960f81b149081611d1b575b81611cf4575b81611ccd575b81611ca6575b81611c7f575b81611c45575b5015611c3657606460805101358015611bbf5761094160846080510135612d38565b15611bbf5761095c61095760a460805101612e51565b6125ff565b15611bbf5761097761097260e460805101612e62565b612655565b15611bbf57600360c460805101351015611b2d57600260ff60c460805101351611611bbf57600461010460805101351015611b2d57600360ff61010460805101351611611bbf576080516101040135600303611c0857608051610144016001600160a01b036109e582612e72565b16156119e5576109f490612e72565b60405163114cb92f60e01b81526001600160a01b03918216600482015290602090829060249082907f0000000000000000000000000000000000000000000000000000000000000000165afa908115611983578391611bce575b5015611bbf575b610ab781610a6d608051600401608051600401612de8565b90610a82602460805101608051600401612de8565b90610a97604460805101608051600401612de8565b929091610aa961014460805101612e72565b9560846080510135956124d9565b61123461ffff8216036119e5576001600160a01b0316825260036020526040822054611bbf5760405190608082018281106001600160401b03821117611bab57604052610b026125b8565b8252826020830152826040830152826060830152610ba16020610b236125b8565b92610bc5610b3b608051600401608051600401612de8565b919092610b52602460805101608051600401612de8565b9290610bb3610b6b604460805101608051600401612de8565b919092610b7d61014460805101612e72565b966040519b8c9a8b9a632417bc8d60e21b8c5260c060048d015260c48c0191612499565b8981036003190160248b015291612499565b86810360031901604488015291612499565b9160846080510135606485015260018060a01b0316608484015260a483015203818760018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1908115611b64578491611b8c575b506001600160a01b031680825260805162ffffff90610c419060e401612e62565b60405163a167129560e01b815260048101939093526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024850152911660448301526020908290606490829088907f0000000000000000000000000000000000000000000000000000000000000000165af1908115611b64576004916020918691611b6f575b506001600160a01b0316838201819052604051630dfe168160e01b815292839182905afa908115611b64578491611b45575b5081516001600160a01b039182169116146040820152610d216136e5565b84610d498284610d3560a460805101612e51565b604088015115159060846080510135613944565b6001600160a01b0381811660c0870152602086015116803b156119a35760405163f637731d60e01b81526001600160a01b0390921660048301529091908290602490829084905af18015611b0957611b31575b50602083015185906001600160a01b0316803b15611b2d578180916024604051809481936332148f6760e01b8352601060048401525af180156119a757611b14575b50506020830151604051633850c7bd60e01b81529060e090829060049082906001600160a01b03165afa908115611b09578691611ad3575b50610e2560e460805101612e62565b6040516322afcccb60e01b815262ffffff9091166004820152906020826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015611ac8578790611a89575b610e989250604086015115159060c4608051013592613de0565b60020b9081608086015260020b806060860152610ec4610ebe6040870151151592614347565b92614347565b9015611a5e57610efc916001600160a01b0391821691610eef9116610ee98382613aa0565b9261274b565b9060846080510135613d1c565b80151580611a4d575b15611a1c57610f59926001600160801b03610f54921660a0860152610f3d60018060a01b0360c08701511660408701511515906141fb565b90610f4e6084608051013594613933565b91613d1c565b613ae9565b63ffffffff610f6c60a460805101612e51565b169081670de0b6b3a7640000810204670de0b6b3a764000014821517156119f457610fbd90670de0b6b3a76400008302811115611a0857610fb890670de0b6b3a764000084029061274b565b6127d1565b678ac7230489e80000820291670de0b6b3a76400008082028404600a1491021517156119f457116119e5578152604051635eb512e760e01b8152306004820152602081602481867f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156119835783916119b6575b506001600160a01b03908116602083018190528251608051611064929190600401612f1a565b16604082015261107981608051600401613289565b80518260018060a01b0360208401511660018060a01b0383511660018060a01b0360208501511660018060a01b03604087015116926040860151151592606087015160020b608088015160020b926001600160801b0360a08a015116956110e460e460805101612e62565b823b156119b257899761016496899562ffffff946040519c8d9b8c9a631f592b2f60e11b8c5260048c015260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660248c015260448b015260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660648b015260848a015260a489015260c488015260e48701526101048601526109c4610124860152166101448401525af180156119a75761198e575b50505160805160208301516111cf92608490920135916001600160a01b03918216911661408f565b602081015160408051633eca3c9560e11b8152918290600490829087906001600160a01b03165af1801561198357611965575b508051600154906000198214611914576001828101905580516020808301519085015160408601516080516001600160a01b03948516949384169392831692909116906112529061014401612e72565b61126060a460805101612e51565b61126e60e460805101612e62565b906040880151151592606089015160020b9460808a015160020b966001600160801b0360a08c015116986040519a8b6001600160401b03610220828181011092011117611950579162ffffff9695939163ffffffff95936102208e016040528d5260208d01523360408d015260608c015260808b015260018060a01b031660a08a01526084608051013560c08a0152610164608051013560e08a0152166101008801521661012086015261132d6101046080510135610140870161281c565b61134160c460805101356101608701612828565b6101808501526101a08401526101c08301526101e0820152426001600160401b031661020082015260018381018652600260208181526040808920855181546001600160a01b03199081166001600160a01b039283161783558488015196830180548216978316979097179096559186015193810180548616948316949094179093556060850151600384018054861691831691909117905560808501516004808501805487169284169290921790915560a086015160058501805490961692169190911790935560c0840151600683015560e084015160078301556101008401516008830154610120860151610140870151949563ffffffff9390931694939192911b66ffffff00000000169083101561193c576101608601516003811015611928576009936001600160801b036001600160401b03979469ff00000000000000000061020098958f958c965068ff0000000000000000610180880151151560481b946101a089015160501b9767ff000000000000006101c08b015160681b9a6101e08a1991015160801b169b62ffffff60681b199662ffffff60501b19948919928719916001600160401b031916171617169160381b1617169160401b161716911617169062ffffff60501b16179062ffffff60681b161717600882015501920151166001600160401b031982541617905560018060a01b0381511684526003602052600182016040852055602060018060a01b039101511683526004602052600181016040842055600181016060830152815160018060a01b0381511690602060018060a01b03910151167f10b1258239878897e70045c8101303897fd85c4e72de1634a1e69808e6c7a22160018060a01b0360208601511660018060a01b03604087015116926116c96115dd61014460805101612e72565b6116b46115ee60a460805101612e51565b63ffffffff62ffffff8d61160660e460805101612e62565b6080519091506116199060040180612de8565b939094611630602460805101608051600401612de8565b98909d6040519c8d9c8d5260208d015260408c015260018060a01b031660608b01526084608051013560808b01521660a08901521660c087015261167e60e0870161010460805101356123b1565b611692610100870160c460805101356123d4565b6101646080510135610120870152610180610140870152610180860191612499565b90838203610160850152600133990196612499565b0390a460018060a01b03815151166116ee6108c4604460805101608051600401612de8565b60208151910120907fda501d3bc98798bb93263e8c3419bbb9bd1c998452266c12ebf26e900962ec5e61172b604460805101608051600401612de8565b611742604051928392602084526020840191612499565b0390a3611754816080516004016134b5565b805180516020909101516080516001600160a01b0392831694929091169061177e9060e401612e62565b61012c420191824211611914576001600160401b03929162ffffff916040519763609298b960e01b89526004890152602488015216604486015282606486015260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660848601521660a484015260408360c48166038d7ea4c6800060018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156105b15760a093829083926118f2575b5060608401519060405192835260208301527f77da58c1f9b499e2abd0f2b886a5b135f134e662039f8fb7d4e9891e305d78fd6040600180881b037f00000000000000000000000000000000000000000000000000000000000000001693a36060820151918051600180861b03815116906020600180881b03910151169060018080881b0360208501511693604082808a1b039101511694556040519485526020850152604084015260608301526080820152f35b905061190d915060403d6040116105aa5761059c8183612478565b903861183d565b634e487b7160e01b84526011600452602484fd5b634e487b7160e01b8b52602160045260248bfd5b634e487b7160e01b8a52602160045260248afd5b50634e487b7160e01b8f52604160045260248ffd5b61197d9060403d6040116105aa5761059c8183612478565b50611202565b6040513d85823e3d90fd5b8161199891612478565b6119a35782386111a7565b8280fd5b6040513d84823e3d90fd5b8980fd5b6119d8915060203d6020116119de575b6119d08183612478565b8101906124ba565b3861103e565b503d6119c6565b6336f1f42360e11b8352600483fd5b634e487b7160e01b85526011600452602485fd5b610fb890670de0b6b3a7640000840261274b565b60405162461bcd60e51b81526020600482015260096024820152686c697175696469747960b81b6044820152606490fd5b506001600160801b03811115610f05565b611a8491611a78916001600160a01b03918216911661274b565b608460805101356139a7565b610efc565b506020823d602011611ac0575b81611aa360209383612478565b81010312611abc57611ab7610e9892612647565b610e7e565b8680fd5b3d9150611a96565b6040513d89823e3d90fd5b611af5915060e03d60e011611b02575b611aed8183612478565b810190612eb0565b5050505050905038610e16565b503d611ae3565b6040513d88823e3d90fd5b81611b1e91612478565b611b29578438610dde565b8480fd5b5080fd5b85611b3e91969296612478565b9338610d9c565b611b5e915060203d6020116119de576119d08183612478565b38610d03565b6040513d86823e3d90fd5b611b869150823d84116119de576119d08183612478565b38610cd1565b611ba5915060203d6020116119de576119d08183612478565b38610c20565b634e487b7160e01b84526041600452602484fd5b6336f1f42360e11b8252600482fd5b90506020813d602011611c00575b81611be960209383612478565b810103126119a357611bfa90612e86565b38610a4e565b3d9150611bdc565b6080516001600160a01b0390611c219061014401612e72565b1615610a55576336f1f42360e11b8252600482fd5b6336f1f42360e11b8152600490fd5b8091505160061015611c6b57602601516001600160f81b031916602f60f81b143861091f565b634e487b7160e01b82526032600452602482fd5b8091505160051015611c6b5760258101516001600160f81b031916602f60f81b1490610919565b8091505160041015611c6b5760248101516001600160f81b031916601d60f91b1490610913565b8091505160031015611c6b5760238101516001600160f81b031916607360f81b149061090d565b8091505160021015611c6b5760228101516001600160f81b031916603360f91b1490610907565b8091505160011015611c6b5760218101516001600160f81b031916600760fc1b1490610901565b60c891501115386108d8565b50600a611d65602460805101608051600401612de8565b905011156108a8565b50608051602090611d829060040180612de8565b90501115610885565b6001600160401b039150611d9e90612dd4565b164211153861084e565b60405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b6044820152606490fd5b5034610207578060031936011261020757602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346102075780600319360112610207576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461020757806003193601126102075760206040516112348152f35b50346102075760c0366003190112610207576004356001600160401b038111611b2d57611ead903690600401612353565b91906024356001600160401b0381116119a357611ece903690600401612353565b9092604435906001600160401b038211610207576020611f0f87878787611ef83660048a01612353565b91611f01612385565b9460a43596606435956124d9565b6040516001600160a01b039091168152f35b50346102075780600319360112610207576020604051600a8152f35b50346102075760203660031901126102075760048035825260026020818152604093849020805460018201549382015460038301549583015460058401546006850154600786015460088701546009909701548b516001600160a01b0397881681529987168a8a01529486169a89019a909a529784166060880152908316608087015290911660a085015260c084019490945260e083019490945263ffffffff841661010083015283901c62ffffff166101208201526102209290916001600160401b0316906120186101408401603883901c60ff166123b1565b61202c610160840160ff8360401c166123d4565b60ff8160481c1615156101808401528060501c60020b6101a08401528060681c60020b6101c084015260801c6101e0830152610200820152f35b50346102075780600319360112610207576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461020757806003193601126102075760206040516103848152f35b5034610207576020366003190112610207576020906040906001600160a01b036120f061239b565b168152600483522054604051908152f35b503461020757806003193601126102075760206040516104b08152f35b50346102075780600319360112610207576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346102075780600319360112610207576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b503461020757806003193601126102075760206040516127108152f35b50346102075760a0366003190112610207576004356001600160401b038111611b2d576121f6903690600401612353565b6024356001600160401b03811161233357612215903690600401612353565b929091604435936001600160401b03851161232f5761229d60209461228b612244612279983690600401612353565b91909261224f612385565b956040519a8b998a9963d8142e0360e01b8b523060048c015260c060248c015260c48b0191612499565b8881036003190160448a015291612499565b85810360031901606487015291612499565b60643560848401526001600160a01b0391821660a4840152919091039082907f0000000000000000000000000000000000000000000000000000000000000000165afa9081156119a75782916122f9575b602082604051908152f35b90506020813d602011612327575b8161231460209383612478565b81010312611b2d576020915051386122ee565b3d9150612307565b8580fd5b8380fd5b905034611b2d5781600319360112611b2d578061dead60209252f35b9181601f84011215612380578235916001600160401b038311612380576020838186019501011161238057565b600080fd5b608435906001600160a01b038216820361238057565b600435906001600160a01b038216820361238057565b9060048210156123be5752565b634e487b7160e01b600052602160045260246000fd5b9060038210156123be5752565b34612380576000366003190112612380576020604051610e108152f35b60005b8381106124115750506000910152565b8181015183820152602001612401565b9060209161243a815180928185528580860191016123fe565b601f01601f1916010190565b61028081019081106001600160401b0382111761246257604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761246257604052565b908060209392818452848401376000828201840152601f01601f1916010190565b9081602091031261238057516001600160a01b03811681036123805790565b9360249561252760209994612539949b9661251560e09b996040519e8f9d8e9d8e63c1a72285831b8152306004820152015260e48d0191612499565b8a81036003190160448c015291612499565b87810360031901606489015291612499565b92608485015260018060a01b031660a484015260c4830152038160018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa9081156125ac57600091612590575090565b6125a9915060203d6020116119de576119d08183612478565b90565b6040513d6000823e3d90fd5b6040519060e082018281106001600160401b0382111761246257604052600060c0838281528260208201528260408201528260608201528260808201528260a08201520152565b63ffffffff166113888114908115612625575b811561261c575090565b61271091501490565b611f4081149150612612565b9190826040910312612380576020825192015190565b51908160020b820361238057565b62ffffff166101f48114158061271c575b80612710575b61270a576040516322afcccb60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156125ac576000906126d0575b6000915060020b1390565b506020813d602011612702575b816126ea60209383612478565b81010312612380576126fd600091612647565b6126c5565b3d91506126dd565b50600090565b5061271081141561266c565b50610bb8811415612666565b9190820180921161273557565b634e487b7160e01b600052601160045260246000fd5b9190820391821161273557565b6001600160401b03811161246257601f01601f191660200190565b602081830312612380578051906001600160401b038211612380570181601f820112156123805780516127a581612758565b926127b36040519485612478565b81845260208284010111612380576125a991602080850191016123fe565b90612710820291808304612710149015171561273557565b8181029291811591840414171561273557565b8115612806570490565b634e487b7160e01b600052601260045260246000fd5b60048210156123be5752565b60038210156123be5752565b6040519061284182612446565b6000825260606020830152606060408301526000606083015260006080830152600060a0830152600060c0830152600060e08301526000610100830152600061012083015260006101408301526000610160830152600061018083015260006101a083015260006101c083015260006101e08301526000610200830152600061022083015260006102408301526000610260830152600052600260205260406000209060018060a01b03825416908115612d32575060018201546040516370a0823160e01b81526001600160a01b039091166004820181905291602082602481845afa9182156125ac57600092612cfe575b5060038401546040516370a0823160e01b81526001600160a01b039091166004820181905292602082602481865afa9182156125ac57600092612cca575b506040516370a0823160e01b815261dead600482015290602082602481875afa9182156125ac57600092612c94575b506129b3926129ae91612728565b612728565b60068501549390848110612c8457506000905b6040516370a0823160e01b815260048101829052926020846024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9384156125ac57600094612c50575b50600887015491604051633850c7bd60e01b815260e081600481855afa80156125ac57612a5991600091612c2b575b5060ff8560481c16906141fb565b956040516306fdde0360e01b8152600081600481875afa80156125ac57600060e052612c0e575b506040516395d89b4160e01b815290600082600481875afa9081156125ac5789938b93600093612be9575b50600284015460048501546005860154600790960154976001600160a01b03968716969182169591909216918c88612ae28d6127d1565b90612aec916127fc565b9e612af691613ae9565b9e600901546001600160401b031660a05260405160c05260c051612b1990612446565b60c0515260e05160c0516020015260c0516040015260c0516060015260c0516080015260c05160a0015260c05160c0015260c05160e0015260c051610100015260c051610120015263ffffffff811660c05161014001528060201c62ffffff1660c05161016001528060381c60ff1660c0516101800190612b999161281c565b60401c60ff1660c0516101a00190612bb091612828565b60c0516101c0015260c0516101e0015260c051610200015260c051610220015260c051610240015260a05160c051610260015260c05190565b612c079193503d806000833e612bff8183612478565b810190612773565b9138612aab565b612c22903d806000833e612bff8183612478565b60e05238612a80565b612c44915060e03d60e011611b0257611aed8183612478565b50505050505038612a4b565b9093506020813d602011612c7c575b81612c6c60209383612478565b8101031261238057519238612a1c565b3d9150612c5f565b612c8e908561274b565b906129c6565b9091506020813d602011612cc2575b81612cb060209383612478565b810103126123805751906129b36129a0565b3d9150612ca3565b9091506020813d602011612cf6575b81612ce660209383612478565b8101031261238057519038612971565b3d9150612cd9565b9091506020813d602011612d2a575b81612d1a60209383612478565b8101031261238057519038612933565b3d9150612d0d565b91505090565b69d3c21bcecceda10000008114908115612dbf575b8115612daa575b8115612d95575b8115612d7f575b8115612d6c575090565b6b033b2e3c9fd0803ce800000091501490565b6b015b6a759f4835dc2400000081149150612d62565b6a52b7d2dcc80cd2e400000081149150612d5b565b6a3913517ebd3c0c6500000081149150612d54565b6a084595161401484a00000081149150612d4d565b356001600160401b03811681036123805790565b903590601e198136030182121561238057018035906001600160401b0382116123805760200191813603831361238057565b929192612e2682612758565b91612e346040519384612478565b829481845281830111612380578281602093846000960137010152565b3563ffffffff811681036123805790565b3562ffffff811681036123805790565b356001600160a01b03811681036123805790565b5190811515820361238057565b519061ffff8216820361238057565b519060ff8216820361238057565b908160e09103126123805780516001600160a01b03811681036123805791612eda60208301612647565b91612ee760408201612e93565b91612ef460608301612e93565b91612f0160808201612e93565b916125a960c0612f1360a08501612ea2565b9301612e86565b610100810135927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692600485101561238057600085156131e1575060006001861461316f57506000600286146130785750600360009514612f8d5763e9f21d6160e01b8552600485fd5b516020926001600160a01b039091169160c4918690612faf9061014001612e72565b604051632c780dd360e21b81526001600160a01b03938416600482015260248101959095527f000000000000000000000000000000000000000000000000000000000000000083166044860152821660648501527f0000000000000000000000000000000000000000000000000000000000000000821660848501527f000000000000000000000000000000000000000000000000000000000000000090911660a48401529193849283915af191821561306c5791612590575090565b604051903d90823e3d90fd5b94509061014490856020949562ffffff6130ab60e060018060a01b03885116978960018060a01b03910151169901612e62565b60405198899788966301f4a07360e61b885260018060a01b03166004880152602487015260018060a01b037f0000000000000000000000000000000000000000000000000000000000000000166044870152606486015260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001660848601521660a4840152662386f26fc1000060c4840152610e1060e48401526103846101048401526104b06101248401525af191821561306c5791612590575090565b9051604051630a0f83f160e31b81526001600160a01b03938416600482015290831660248201527f00000000000000000000000000000000000000000000000000000000000000009092166044830152935091602091508290606490829086905af191821561306c5791612590575090565b94509260209290916084918690610120016001600160a01b0361320382612e72565b1661327a575033955b516040516302959c5f60e31b81526001600160a01b03938416600482015290831660248201527f00000000000000000000000000000000000000000000000000000000000000008316604482015295909116606486015284928391905af191821561306c5791612590575090565b61328390612e72565b9561320c565b90610100600092013560048110156119a3576002190161348157604051906101006132b48184612478565b600783526020830190601f190136823782511561346d5730815260018060a01b036020835101511683516001101561344557604084015260018060a01b03602083015116835160021015613445576060840152604082019160018060a01b03835116845160031015613459576080850152835160041015613445577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660a0850152835160051015613445577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660c08501528351600610156134455761dead60e0850152515191516001600160a01b039283169216823b15611b29576040805163148aca5760e01b815260048101929092526024820152925160448401819052849284929091606484019190855b818110613420575050508383809203925af180156119a757613413575050565b8161341d91612478565b50565b82516001600160a01b03168452889650879550602093840193909201916001016133f3565b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b84526032600452602484fd5b5050565b3d156134b0573d9061349682612758565b916134a46040519384612478565b82523d6000602084013e565b606090565b61016081013590811561369757825180516020909101516001600160a01b03918216926001600160401b0392909116906101809062ffffff6134f960e08301612e62565b6135066101a08401612dd4565b946040519763609298b960e01b895260048901526024880152166044860152013560648401523060848401521660a482015260408160c4818560018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19283156125ac576000918294613674575b506101f482028281046101f4148315171561273557846135a36127106135c49304809561274b565b946135ba8660018060a01b0386515116339061408f565b846136365761274b565b80613608575b506060015191604051938452602084015260408301527f8e49dc9a9ac63c0ce033eb1355622489bf724e508e725a1831f750dfbffe291160603393a3565b600080808093335af1613619613485565b501561362557386135ca565b637bf340bd60e11b60005260046000fd5b83515161366f9086907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031661408f565b61274b565b909350613690915060403d6040116105aa5761059c8183612478565b923861357b565b505050565b519069ffffffffffffffffffff8216820361238057565b908160a0910312612380576136c78161369c565b916020820151916040810151916125a960806060840151930161369c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316806138b3575b50604051633fabe5a360e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169060a081600481855afa9081156125ac5760008092600092600091613879575b5060008413918261386f575b82613854575b5050156137cd5742811115908161381a575b50156137cd5760206004926040519384809263313ce56760e01b82525afa9182156125ac576000926137de575b50601260ff8316116137cd5791565b630ae360c360e11b60005260046000fd5b9091506020813d602011613812575b816137fa60209383612478565b810103126123805761380b90612ea2565b90386137be565b3d91506137ed565b61382591504261274b565b63ffffffff7f000000000000000000000000000000000000000000000000000000000000000016101538613791565b69ffffffffffffffffffff919250811691161015388061377f565b8315159250613779565b9250505061389f915060a03d60a0116138ac575b6138978183612478565b8101906136b3565b929150929092913861376d565b503d61388d565b60a060049160405192838092633fabe5a360e21b82525afa9081156125ac5760009060009261390e575b506137cd5780151590816138f8575b50156137cd5738613715565b9050610e108101809111612735574211386138ec565b9050613929915060a03d60a0116138ac576138978183612478565b50509150386138dd565b60ff16604d811161273557600a0a90565b929063ffffffff909492941691670de0b6b3a7640000830292808404670de0b6b3a764000014901517156127355761398e9261398261398892613933565b906127e9565b926127e9565b911561399e57906125a991614130565b6125a991614130565b600019600160601b8209918160601b91828085109403938085039414613a635783821115613a2c578190600160601b900960018219018216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b60405162461bcd60e51b815260206004820152600f60248201526e4d554c4449565f4f564552464c4f5760881b6044820152606490fd5b5080925015613a70570490565b60405162461bcd60e51b81526020600482015260086024820152674449565f5a45524f60c01b6044820152606490fd5b6000198282099082810292838084109303928084039314613ae057600160601b831015613a2c57600160601b910990828211900360a01b910360601c1790565b50505060601c90565b60001982820982820291828083109203918083039214613b535781670de0b6b3a76400001115613a2c577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066993670de0b6b3a7640000910990828211900360ee1b910360121c170290565b5050670de0b6b3a764000091500490565b600019600160c01b8209918160c01b91828085109403938085039414613a635783821115613a2c578190600160c01b900960018219018216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b8015613a70576503782dace9d960d21b0490565b600019670de0b6b3a76400008209670de0b6b3a7640000820291828083109203918083039214613c5657600160c01b821015613a2c57600160c01b90670de0b6b3a7640000900990828211900360401b910360c01c1790565b505060c01c90565b6000198282099082810292838084109303928084039314613c9e5782600160401b1115613a2c57600160401b910990828211900360c01b910360401c1790565b50505060401c90565b8015613a70576503782dace9d960921b0490565b600019670de0b6b3a76400008209670de0b6b3a7640000820291828083109203918083039214613d1457600160801b821015613a2c57600160801b90670de0b6b3a7640000900990828211900360801b910360801c1790565b505060801c90565b916000198284099282810292838086109503948086039514613d975784831115613a2c5782910960018219018216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b505080925015613a70570490565b600291820b910b0390627fffff198212627fffff83131761273557565b9060020b9060020b0190627fffff198212627fffff83131761273557565b939260ff166002811161405a578015613f5957600103613f4f576203a980915b15613ecd57613e0f81856142fe565b9360020b8460020b1315613ebc575b8360020b9160020b916000838201938412911290801582169115161761273557613e5481613e4f81620d89e8614269565b61428c565b918260020b8113600014613eaa5750505b905b8160020b8360020b1215613e7757565b60405162461bcd60e51b815260206004820152600b60248201526a63757276652072616e676560a81b6044820152606490fd5b613eb7925060020b6142b5565b613e65565b9283613ec791613dc2565b92613e1e565b613ed9818594956142b5565b9260020b8360020b1215613f3e575b8260020b9160020b916000838203931281841281169184139015161761273557613f1581613e4f81614257565b918260020b8112600014613f2c5750505b91613e67565b613f39925060020b6142fe565b613f26565b9182613f4991613da5565b91613ee8565b6201d4c091613e00565b509060008260020b131561402b5715613fed57613f7681846142fe565b9260020b8360020b1315613fd7575b613f9690613e4f81620d89e8614269565b915b8260020b8160020b1215613faa579190565b60405162461bcd60e51b815260206004820152600560248201526472616e676560d81b6044820152606490fd5b91613fe583613f9692613dc2565b929050613f85565b613ffa81613e4f81614257565b9061400581856142b5565b9360020b8460020b121561401a575b50613f98565b6140249193613da5565b9138614014565b60405162461bcd60e51b815260206004820152600760248201526673706163696e6760c81b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c63757276652070726f66696c6560981b6044820152606490fd5b6000929183809360405190602082019363a9059cbb60e01b855260018060a01b031660248301526044820152604481526140ca606482612478565b51925af16140d6613485565b90159081156140f8575b506140e757565b6312171d8360e31b60005260046000fd5b805180151592508261410d575b5050386140e0565b81925090602091810103126123805760206141289101612e86565b153880614105565b801515806141f2575b156141bf576141509161414b91613b64565b6146df565b6401000276a3811015806141a2575b15614170576001600160a01b031690565b60405162461bcd60e51b815260206004820152600a6024820152697371727420707269636560b01b6044820152606490fd5b5073fffd8963efd1fc6a506488495d951d5263988d26811061415f565b60405162461bcd60e51b815260206004820152600b60248201526a707269636520726174696f60a81b6044820152606490fd5b50811515614139565b6001600160a01b03166001600160801b03811115614235578061421d91613c5e565b901561422c576125a990613cbb565b6125a990613ca7565b8061423f916127e9565b901561424e576125a990613bfd565b6125a990613be9565b60020b801561280657620d89e7190590565b60020b9060020b90811561280657627fffff198114600019831416612735570590565b9060020b9060020b02908160020b91820361273557565b9060020b9081156128065760020b0790565b91906142c581613e4f8186614269565b928160008260020b1291826142e8575b50506142de5750565b6125a99192613da5565b6142f292506142a3565b60020b151581386142d5565b919061430e81613e4f8186614269565b928160008260020b139182614331575b50506143275750565b6125a99192613dc2565b61433b92506142a3565b60020b1515813861431e565b62ffffff8160020b91600083126000146146d85760000316905b620d89e882116146af57600182161561469d576001600160881b036ffffcb933bd6fad37aa2d162d1a5940015b169160028116614681575b60048116614665575b60088116614649575b6010811661462d575b60208116614611575b604081166145f5575b608081166145d9575b61010081166145bd575b61020081166145a1575b6104008116614585575b6108008116614569575b611000811661454d575b6120008116614531575b6140008116614515575b61800081166144f9575b6201000081166144dd575b6202000081166144c2575b6204000081166144a7575b620800001661448e575b60001261447f575b63ffffffff8116614477576000905b60201c60ff91909116016001600160a01b031690565b600190614461565b80156128065760001904614452565b6b048a170391f7dc42444e8fa290910260801c9061444a565b6d2216e584f5fa1ea926041bedfe9890920260801c91614440565b916e5d6af8dedb81196699c329225ee6040260801c91614435565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161442a565b916f31be135f97d08fd981231505542fcfa60260801c9161441f565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614415565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161440b565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614401565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916143f7565b916ff3392b0822b70005940c7a398e4b70f30260801c916143ed565b916ff987a7253ac413176f2b074cf7815e540260801c916143e3565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916143d9565b916ffe5dee046a99a2a811c461f1969c30530260801c916143cf565b916fff2ea16466c96a3843ec78b326b528610260801c916143c6565b916fff973b41fa98c081472e6896dfb254c00260801c916143bd565b916fffcb9843d60f6159c9db58835c9266440260801c916143b4565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916143ab565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916143a2565b916ffff97272373d413259a46990580e213a0260801c91614399565b6001600160881b03600160801b61438e565b60405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606490fd5b1690614361565b801561270a576147ae6001826000908460801c80614814575b508060401c80614807575b508060201c806147fa575b508060101c806147ed575b508060081c806147e0575b508060041c806147d3575b508060021c806147c6575b50821c6147bf575b811c1b61474f81846127fc565b0160011c61475d81846127fc565b0160011c61476b81846127fc565b0160011c61477981846127fc565b0160011c61478781846127fc565b0160011c61479581846127fc565b0160011c6147a381846127fc565b0160011c80926127fc565b808210156147ba575090565b905090565b8101614742565b600291509101903861473a565b600491509101903861472f565b6008915091019038614724565b6010915091019038614719565b602091509101903861470e565b6040915091019038614703565b915050608090386146f856fea2646970667358221220ecaa448124b3a68c489891d6ade549fe9c3a8190f009f4d99f40aff2f0c0aec364736f6c634300081a00330000000000000000000000007b5dd5b08e3bf44fc5aaa1b57c5cf6fffb753e110000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad730000000000000000000000006da35ffb6a22a73c16efcb0c57b77ae61d2e0322000000000000000000000000feeb8bae5a736ad8706e9e47924217e5d198b3430000000000000000000000001f4b1595eb6149be40813f8e7c950444bbd0acd300000000000000000000000078f3556b67e17df817d51ef5a990cdaf09e8d3a90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d6bb4e2c464653f9e2fefd4b5abf660c9b26f9790000000000000000000000007b5dd5b08e3bf44fc5aaa1b57c5cf6fffb753e110000000000000000000000000000000000000000000000000000000000000e10
0x61010080604052600436101561001e575b50361561001c57600080fd5b005b600090813560e01c90816303fd2a4514612337575080630974f2c6146121c5578063249d39e9146121a85780632a2dae0a1461216357806331d7ba591461211e57806334d33bcb1461210157806336074a06146120c857806336adefd3146120ab5780633fc8cef314612066578063456da091146104ae5780634f64b2be14611f3d57806350e3696d146104a957806352e0702214611f215780635360add614611e7c5780635fdd27e814611e5f57806376771d4b14611e1a5780637c87a99314611dd95780637f0259ba146107c75780638009b7bd14610782578063979d7e861461073d5780639818a77e146107215780639bd565d6146106dc5780639f181b5e146106be578063a1d80d6014610685578063a726470514610640578063aced1661146105fb578063b05f0e07146105cd578063b17acdcd1461051a578063b4e4f694146104ed578063cac539f2146104d0578063cb4df527146104ae578063d307b6db146104a9578063d5afe2b114610486578063d846435414610469578063d9dbf77c146103fe578063dde91a98146103e2578063e4b50cb814610271578063e8e121491461024f578063fa2af9da1461020a5763fdb415a40361001057346102075760203660031901126102075760206101fd600435612d38565b6040519015158152f35b80fd5b50346102075780600319360112610207576040517f0000000000000000000000007b5dd5b08e3bf44fc5aaa1b57c5cf6fffb753e116001600160a01b03168152602090f35b50346102075780600319360112610207576020604051662386f26fc100008152f35b50346102075760203660031901126102075761028e600435612834565b60405180916020825260018060a01b0381511660208301526102606102dd6102c7602084015161028060408701526102a0860190612421565b6040840151858203601f19016060870152612421565b9160018060a01b03606082015116608085015260018060a01b0360808201511660a085015260018060a01b0360a08201511660c085015260018060a01b0360c08201511660e085015260018060a01b0360e08201511661010085015261010081015161012085015261012081015161014085015263ffffffff6101408201511661016085015262ffffff610160820151166101808501526103886101808201516101a08601906123b1565b61039c6101a08201516101c08601906123d4565b6101c08101516101e08501526101e08101516102008501526102008101516102208501526102208101516102408501526102408101518285015201516102808301520390f35b5034610207578060031936011261020757602090604051908152f35b5034610207576060366003190112610207576024359063ffffffff8216820361020757604435908115158203610207575060ff60609261044d61043f6136e5565b929080958492600435613944565b926040519360018060a01b031684526020840152166040820152f35b503461020757806003193601126102075760206040516109c48152f35b50346102075780600319360112610207576020604051670de0b6b3a76400008152f35b6123e1565b5034610207578060031936011261020757602060405166038d7ea4c680008152f35b503461020757806003193601126102075760206040516101f48152f35b5034610207576020366003190112610207576004359062ffffff821682036102075760206101fd83612655565b5034610207576020366003190112610207576004358152600260205260408120600301546001600160a01b031680156105be57604082916004825180958193634641257d60e01b83525af180156105b1576040928291610582575b5082519182526020820152f35b90506105a49150823d84116105aa575b61059c8183612478565b810190612631565b38610575565b503d610592565b50604051903d90823e3d90fd5b638698bf3760e01b8252600482fd5b5034610207576020366003190112610207576004359063ffffffff821682036102075760206101fd836125ff565b50346102075780600319360112610207576040517f0000000000000000000000007b5dd5b08e3bf44fc5aaa1b57c5cf6fffb753e116001600160a01b03168152602090f35b50346102075780600319360112610207576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610207576020366003190112610207576020906040906001600160a01b036106ad61239b565b168152600383522054604051908152f35b50346102075780600319360112610207576020600154604051908152f35b50346102075780600319360112610207576040517f000000000000000000000000feeb8bae5a736ad8706e9e47924217e5d198b3436001600160a01b03168152602090f35b5034610207578060031936011261020757602047604051908152f35b50346102075780600319360112610207576040517f000000000000000000000000d6bb4e2c464653f9e2fefd4b5abf660c9b26f9796001600160a01b03168152602090f35b50346102075780600319360112610207576040517f00000000000000000000000078f3556b67e17df817d51ef5a990cdaf09e8d3a96001600160a01b03168152602090f35b506020366003190112610207576004356080526001600160401b0360805111610207576101c060031960805136030112610207576001815403611da8576002815561016460805101353403611c3657670de0b6b3a7640000610164608051013511611c36576101a4608051016001600160401b0361084482612dd4565b1615908115611d8b575b5015611c365766038d7ea4c68000610866344761274b565b10611c365760805161087b9060040180612de8565b9050151580611d6e575b15611c365761089e602460805101608051600401612de8565b9050151580611d4e575b15611c36576108cb6108c4604460805101608051600401612de8565b3691612e1a565b8051600781119081611d42575b5015611bbf57805115611c6b5760208101516001600160f81b031916606960f81b149081611d1b575b81611cf4575b81611ccd575b81611ca6575b81611c7f575b81611c45575b5015611c3657606460805101358015611bbf5761094160846080510135612d38565b15611bbf5761095c61095760a460805101612e51565b6125ff565b15611bbf5761097761097260e460805101612e62565b612655565b15611bbf57600360c460805101351015611b2d57600260ff60c460805101351611611bbf57600461010460805101351015611b2d57600360ff61010460805101351611611bbf576080516101040135600303611c0857608051610144016001600160a01b036109e582612e72565b16156119e5576109f490612e72565b60405163114cb92f60e01b81526001600160a01b03918216600482015290602090829060249082907f000000000000000000000000d6bb4e2c464653f9e2fefd4b5abf660c9b26f979165afa908115611983578391611bce575b5015611bbf575b610ab781610a6d608051600401608051600401612de8565b90610a82602460805101608051600401612de8565b90610a97604460805101608051600401612de8565b929091610aa961014460805101612e72565b9560846080510135956124d9565b61123461ffff8216036119e5576001600160a01b0316825260036020526040822054611bbf5760405190608082018281106001600160401b03821117611bab57604052610b026125b8565b8252826020830152826040830152826060830152610ba16020610b236125b8565b92610bc5610b3b608051600401608051600401612de8565b919092610b52602460805101608051600401612de8565b9290610bb3610b6b604460805101608051600401612de8565b919092610b7d61014460805101612e72565b966040519b8c9a8b9a632417bc8d60e21b8c5260c060048d015260c48c0191612499565b8981036003190160248b015291612499565b86810360031901604488015291612499565b9160846080510135606485015260018060a01b0316608484015260a483015203818760018060a01b037f0000000000000000000000001f4b1595eb6149be40813f8e7c950444bbd0acd3165af1908115611b64578491611b8c575b506001600160a01b031680825260805162ffffff90610c419060e401612e62565b60405163a167129560e01b815260048101939093526001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7381166024850152911660448301526020908290606490829088907f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa165af1908115611b64576004916020918691611b6f575b506001600160a01b0316838201819052604051630dfe168160e01b815292839182905afa908115611b64578491611b45575b5081516001600160a01b039182169116146040820152610d216136e5565b84610d498284610d3560a460805101612e51565b604088015115159060846080510135613944565b6001600160a01b0381811660c0870152602086015116803b156119a35760405163f637731d60e01b81526001600160a01b0390921660048301529091908290602490829084905af18015611b0957611b31575b50602083015185906001600160a01b0316803b15611b2d578180916024604051809481936332148f6760e01b8352601060048401525af180156119a757611b14575b50506020830151604051633850c7bd60e01b81529060e090829060049082906001600160a01b03165afa908115611b09578691611ad3575b50610e2560e460805101612e62565b6040516322afcccb60e01b815262ffffff9091166004820152906020826024817f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa6001600160a01b03165afa8015611ac8578790611a89575b610e989250604086015115159060c4608051013592613de0565b60020b9081608086015260020b806060860152610ec4610ebe6040870151151592614347565b92614347565b9015611a5e57610efc916001600160a01b0391821691610eef9116610ee98382613aa0565b9261274b565b9060846080510135613d1c565b80151580611a4d575b15611a1c57610f59926001600160801b03610f54921660a0860152610f3d60018060a01b0360c08701511660408701511515906141fb565b90610f4e6084608051013594613933565b91613d1c565b613ae9565b63ffffffff610f6c60a460805101612e51565b169081670de0b6b3a7640000810204670de0b6b3a764000014821517156119f457610fbd90670de0b6b3a76400008302811115611a0857610fb890670de0b6b3a764000084029061274b565b6127d1565b678ac7230489e80000820291670de0b6b3a76400008082028404600a1491021517156119f457116119e5578152604051635eb512e760e01b8152306004820152602081602481867f000000000000000000000000feeb8bae5a736ad8706e9e47924217e5d198b3436001600160a01b03165af19081156119835783916119b6575b506001600160a01b03908116602083018190528251608051611064929190600401612f1a565b16604082015261107981608051600401613289565b80518260018060a01b0360208401511660018060a01b0383511660018060a01b0360208501511660018060a01b03604087015116926040860151151592606087015160020b608088015160020b926001600160801b0360a08a015116956110e460e460805101612e62565b823b156119b257899761016496899562ffffff946040519c8d9b8c9a631f592b2f60e11b8c5260048c015260018060a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad731660248c015260448b015260018060a01b037f0000000000000000000000007b5dd5b08e3bf44fc5aaa1b57c5cf6fffb753e111660648b015260848a015260a489015260c488015260e48701526101048601526109c4610124860152166101448401525af180156119a75761198e575b50505160805160208301516111cf92608490920135916001600160a01b03918216911661408f565b602081015160408051633eca3c9560e11b8152918290600490829087906001600160a01b03165af1801561198357611965575b508051600154906000198214611914576001828101905580516020808301519085015160408601516080516001600160a01b03948516949384169392831692909116906112529061014401612e72565b61126060a460805101612e51565b61126e60e460805101612e62565b906040880151151592606089015160020b9460808a015160020b966001600160801b0360a08c015116986040519a8b6001600160401b03610220828181011092011117611950579162ffffff9695939163ffffffff95936102208e016040528d5260208d01523360408d015260608c015260808b015260018060a01b031660a08a01526084608051013560c08a0152610164608051013560e08a0152166101008801521661012086015261132d6101046080510135610140870161281c565b61134160c460805101356101608701612828565b6101808501526101a08401526101c08301526101e0820152426001600160401b031661020082015260018381018652600260208181526040808920855181546001600160a01b03199081166001600160a01b039283161783558488015196830180548216978316979097179096559186015193810180548616948316949094179093556060850151600384018054861691831691909117905560808501516004808501805487169284169290921790915560a086015160058501805490961692169190911790935560c0840151600683015560e084015160078301556101008401516008830154610120860151610140870151949563ffffffff9390931694939192911b66ffffff00000000169083101561193c576101608601516003811015611928576009936001600160801b036001600160401b03979469ff00000000000000000061020098958f958c965068ff0000000000000000610180880151151560481b946101a089015160501b9767ff000000000000006101c08b015160681b9a6101e08a1991015160801b169b62ffffff60681b199662ffffff60501b19948919928719916001600160401b031916171617169160381b1617169160401b161716911617169062ffffff60501b16179062ffffff60681b161717600882015501920151166001600160401b031982541617905560018060a01b0381511684526003602052600182016040852055602060018060a01b039101511683526004602052600181016040842055600181016060830152815160018060a01b0381511690602060018060a01b03910151167f10b1258239878897e70045c8101303897fd85c4e72de1634a1e69808e6c7a22160018060a01b0360208601511660018060a01b03604087015116926116c96115dd61014460805101612e72565b6116b46115ee60a460805101612e51565b63ffffffff62ffffff8d61160660e460805101612e62565b6080519091506116199060040180612de8565b939094611630602460805101608051600401612de8565b98909d6040519c8d9c8d5260208d015260408c015260018060a01b031660608b01526084608051013560808b01521660a08901521660c087015261167e60e0870161010460805101356123b1565b611692610100870160c460805101356123d4565b6101646080510135610120870152610180610140870152610180860191612499565b90838203610160850152600133990196612499565b0390a460018060a01b03815151166116ee6108c4604460805101608051600401612de8565b60208151910120907fda501d3bc98798bb93263e8c3419bbb9bd1c998452266c12ebf26e900962ec5e61172b604460805101608051600401612de8565b611742604051928392602084526020840191612499565b0390a3611754816080516004016134b5565b805180516020909101516080516001600160a01b0392831694929091169061177e9060e401612e62565b61012c420191824211611914576001600160401b03929162ffffff916040519763609298b960e01b89526004890152602488015216604486015282606486015260018060a01b037f0000000000000000000000007b5dd5b08e3bf44fc5aaa1b57c5cf6fffb753e111660848601521660a484015260408360c48166038d7ea4c6800060018060a01b037f0000000000000000000000006da35ffb6a22a73c16efcb0c57b77ae61d2e0322165af180156105b15760a093829083926118f2575b5060608401519060405192835260208301527f77da58c1f9b499e2abd0f2b886a5b135f134e662039f8fb7d4e9891e305d78fd6040600180881b037f0000000000000000000000007b5dd5b08e3bf44fc5aaa1b57c5cf6fffb753e111693a36060820151918051600180861b03815116906020600180881b03910151169060018080881b0360208501511693604082808a1b039101511694556040519485526020850152604084015260608301526080820152f35b905061190d915060403d6040116105aa5761059c8183612478565b903861183d565b634e487b7160e01b84526011600452602484fd5b634e487b7160e01b8b52602160045260248bfd5b634e487b7160e01b8a52602160045260248afd5b50634e487b7160e01b8f52604160045260248ffd5b61197d9060403d6040116105aa5761059c8183612478565b50611202565b6040513d85823e3d90fd5b8161199891612478565b6119a35782386111a7565b8280fd5b6040513d84823e3d90fd5b8980fd5b6119d8915060203d6020116119de575b6119d08183612478565b8101906124ba565b3861103e565b503d6119c6565b6336f1f42360e11b8352600483fd5b634e487b7160e01b85526011600452602485fd5b610fb890670de0b6b3a7640000840261274b565b60405162461bcd60e51b81526020600482015260096024820152686c697175696469747960b81b6044820152606490fd5b506001600160801b03811115610f05565b611a8491611a78916001600160a01b03918216911661274b565b608460805101356139a7565b610efc565b506020823d602011611ac0575b81611aa360209383612478565b81010312611abc57611ab7610e9892612647565b610e7e565b8680fd5b3d9150611a96565b6040513d89823e3d90fd5b611af5915060e03d60e011611b02575b611aed8183612478565b810190612eb0565b5050505050905038610e16565b503d611ae3565b6040513d88823e3d90fd5b81611b1e91612478565b611b29578438610dde565b8480fd5b5080fd5b85611b3e91969296612478565b9338610d9c565b611b5e915060203d6020116119de576119d08183612478565b38610d03565b6040513d86823e3d90fd5b611b869150823d84116119de576119d08183612478565b38610cd1565b611ba5915060203d6020116119de576119d08183612478565b38610c20565b634e487b7160e01b84526041600452602484fd5b6336f1f42360e11b8252600482fd5b90506020813d602011611c00575b81611be960209383612478565b810103126119a357611bfa90612e86565b38610a4e565b3d9150611bdc565b6080516001600160a01b0390611c219061014401612e72565b1615610a55576336f1f42360e11b8252600482fd5b6336f1f42360e11b8152600490fd5b8091505160061015611c6b57602601516001600160f81b031916602f60f81b143861091f565b634e487b7160e01b82526032600452602482fd5b8091505160051015611c6b5760258101516001600160f81b031916602f60f81b1490610919565b8091505160041015611c6b5760248101516001600160f81b031916601d60f91b1490610913565b8091505160031015611c6b5760238101516001600160f81b031916607360f81b149061090d565b8091505160021015611c6b5760228101516001600160f81b031916603360f91b1490610907565b8091505160011015611c6b5760218101516001600160f81b031916600760fc1b1490610901565b60c891501115386108d8565b50600a611d65602460805101608051600401612de8565b905011156108a8565b50608051602090611d829060040180612de8565b90501115610885565b6001600160401b039150611d9e90612dd4565b164211153861084e565b60405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b6044820152606490fd5b5034610207578060031936011261020757602060405163ffffffff7f0000000000000000000000000000000000000000000000000000000000000e10168152f35b50346102075780600319360112610207576040517f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa6001600160a01b03168152602090f35b503461020757806003193601126102075760206040516112348152f35b50346102075760c0366003190112610207576004356001600160401b038111611b2d57611ead903690600401612353565b91906024356001600160401b0381116119a357611ece903690600401612353565b9092604435906001600160401b038211610207576020611f0f87878787611ef83660048a01612353565b91611f01612385565b9460a43596606435956124d9565b6040516001600160a01b039091168152f35b50346102075780600319360112610207576020604051600a8152f35b50346102075760203660031901126102075760048035825260026020818152604093849020805460018201549382015460038301549583015460058401546006850154600786015460088701546009909701548b516001600160a01b0397881681529987168a8a01529486169a89019a909a529784166060880152908316608087015290911660a085015260c084019490945260e083019490945263ffffffff841661010083015283901c62ffffff166101208201526102209290916001600160401b0316906120186101408401603883901c60ff166123b1565b61202c610160840160ff8360401c166123d4565b60ff8160481c1615156101808401528060501c60020b6101a08401528060681c60020b6101c084015260801c6101e0830152610200820152f35b50346102075780600319360112610207576040517f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03168152602090f35b503461020757806003193601126102075760206040516103848152f35b5034610207576020366003190112610207576020906040906001600160a01b036120f061239b565b168152600483522054604051908152f35b503461020757806003193601126102075760206040516104b08152f35b50346102075780600319360112610207576040517f0000000000000000000000006da35ffb6a22a73c16efcb0c57b77ae61d2e03226001600160a01b03168152602090f35b50346102075780600319360112610207576040517f0000000000000000000000001f4b1595eb6149be40813f8e7c950444bbd0acd36001600160a01b03168152602090f35b503461020757806003193601126102075760206040516127108152f35b50346102075760a0366003190112610207576004356001600160401b038111611b2d576121f6903690600401612353565b6024356001600160401b03811161233357612215903690600401612353565b929091604435936001600160401b03851161232f5761229d60209461228b612244612279983690600401612353565b91909261224f612385565b956040519a8b998a9963d8142e0360e01b8b523060048c015260c060248c015260c48b0191612499565b8881036003190160448a015291612499565b85810360031901606487015291612499565b60643560848401526001600160a01b0391821660a4840152919091039082907f0000000000000000000000001f4b1595eb6149be40813f8e7c950444bbd0acd3165afa9081156119a75782916122f9575b602082604051908152f35b90506020813d602011612327575b8161231460209383612478565b81010312611b2d576020915051386122ee565b3d9150612307565b8580fd5b8380fd5b905034611b2d5781600319360112611b2d578061dead60209252f35b9181601f84011215612380578235916001600160401b038311612380576020838186019501011161238057565b600080fd5b608435906001600160a01b038216820361238057565b600435906001600160a01b038216820361238057565b9060048210156123be5752565b634e487b7160e01b600052602160045260246000fd5b9060038210156123be5752565b34612380576000366003190112612380576020604051610e108152f35b60005b8381106124115750506000910152565b8181015183820152602001612401565b9060209161243a815180928185528580860191016123fe565b601f01601f1916010190565b61028081019081106001600160401b0382111761246257604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b0382111761246257604052565b908060209392818452848401376000828201840152601f01601f1916010190565b9081602091031261238057516001600160a01b03811681036123805790565b9360249561252760209994612539949b9661251560e09b996040519e8f9d8e9d8e63c1a72285831b8152306004820152015260e48d0191612499565b8a81036003190160448c015291612499565b87810360031901606489015291612499565b92608485015260018060a01b031660a484015260c4830152038160018060a01b037f0000000000000000000000001f4b1595eb6149be40813f8e7c950444bbd0acd3165afa9081156125ac57600091612590575090565b6125a9915060203d6020116119de576119d08183612478565b90565b6040513d6000823e3d90fd5b6040519060e082018281106001600160401b0382111761246257604052600060c0838281528260208201528260408201528260608201528260808201528260a08201520152565b63ffffffff166113888114908115612625575b811561261c575090565b61271091501490565b611f4081149150612612565b9190826040910312612380576020825192015190565b51908160020b820361238057565b62ffffff166101f48114158061271c575b80612710575b61270a576040516322afcccb60e01b815260048101919091526020816024817f0000000000000000000000001f7d7550b1b028f7571e69a784071f0205fd2efa6001600160a01b03165afa80156125ac576000906126d0575b6000915060020b1390565b506020813d602011612702575b816126ea60209383612478565b81010312612380576126fd600091612647565b6126c5565b3d91506126dd565b50600090565b5061271081141561266c565b50610bb8811415612666565b9190820180921161273557565b634e487b7160e01b600052601160045260246000fd5b9190820391821161273557565b6001600160401b03811161246257601f01601f191660200190565b602081830312612380578051906001600160401b038211612380570181601f820112156123805780516127a581612758565b926127b36040519485612478565b81845260208284010111612380576125a991602080850191016123fe565b90612710820291808304612710149015171561273557565b8181029291811591840414171561273557565b8115612806570490565b634e487b7160e01b600052601260045260246000fd5b60048210156123be5752565b60038210156123be5752565b6040519061284182612446565b6000825260606020830152606060408301526000606083015260006080830152600060a0830152600060c0830152600060e08301526000610100830152600061012083015260006101408301526000610160830152600061018083015260006101a083015260006101c083015260006101e08301526000610200830152600061022083015260006102408301526000610260830152600052600260205260406000209060018060a01b03825416908115612d32575060018201546040516370a0823160e01b81526001600160a01b039091166004820181905291602082602481845afa9182156125ac57600092612cfe575b5060038401546040516370a0823160e01b81526001600160a01b039091166004820181905292602082602481865afa9182156125ac57600092612cca575b506040516370a0823160e01b815261dead600482015290602082602481875afa9182156125ac57600092612c94575b506129b3926129ae91612728565b612728565b60068501549390848110612c8457506000905b6040516370a0823160e01b815260048101829052926020846024817f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03165afa9384156125ac57600094612c50575b50600887015491604051633850c7bd60e01b815260e081600481855afa80156125ac57612a5991600091612c2b575b5060ff8560481c16906141fb565b956040516306fdde0360e01b8152600081600481875afa80156125ac57600060e052612c0e575b506040516395d89b4160e01b815290600082600481875afa9081156125ac5789938b93600093612be9575b50600284015460048501546005860154600790960154976001600160a01b03968716969182169591909216918c88612ae28d6127d1565b90612aec916127fc565b9e612af691613ae9565b9e600901546001600160401b031660a05260405160c05260c051612b1990612446565b60c0515260e05160c0516020015260c0516040015260c0516060015260c0516080015260c05160a0015260c05160c0015260c05160e0015260c051610100015260c051610120015263ffffffff811660c05161014001528060201c62ffffff1660c05161016001528060381c60ff1660c0516101800190612b999161281c565b60401c60ff1660c0516101a00190612bb091612828565b60c0516101c0015260c0516101e0015260c051610200015260c051610220015260c051610240015260a05160c051610260015260c05190565b612c079193503d806000833e612bff8183612478565b810190612773565b9138612aab565b612c22903d806000833e612bff8183612478565b60e05238612a80565b612c44915060e03d60e011611b0257611aed8183612478565b50505050505038612a4b565b9093506020813d602011612c7c575b81612c6c60209383612478565b8101031261238057519238612a1c565b3d9150612c5f565b612c8e908561274b565b906129c6565b9091506020813d602011612cc2575b81612cb060209383612478565b810103126123805751906129b36129a0565b3d9150612ca3565b9091506020813d602011612cf6575b81612ce660209383612478565b8101031261238057519038612971565b3d9150612cd9565b9091506020813d602011612d2a575b81612d1a60209383612478565b8101031261238057519038612933565b3d9150612d0d565b91505090565b69d3c21bcecceda10000008114908115612dbf575b8115612daa575b8115612d95575b8115612d7f575b8115612d6c575090565b6b033b2e3c9fd0803ce800000091501490565b6b015b6a759f4835dc2400000081149150612d62565b6a52b7d2dcc80cd2e400000081149150612d5b565b6a3913517ebd3c0c6500000081149150612d54565b6a084595161401484a00000081149150612d4d565b356001600160401b03811681036123805790565b903590601e198136030182121561238057018035906001600160401b0382116123805760200191813603831361238057565b929192612e2682612758565b91612e346040519384612478565b829481845281830111612380578281602093846000960137010152565b3563ffffffff811681036123805790565b3562ffffff811681036123805790565b356001600160a01b03811681036123805790565b5190811515820361238057565b519061ffff8216820361238057565b519060ff8216820361238057565b908160e09103126123805780516001600160a01b03811681036123805791612eda60208301612647565b91612ee760408201612e93565b91612ef460608301612e93565b91612f0160808201612e93565b916125a960c0612f1360a08501612ea2565b9301612e86565b610100810135927f000000000000000000000000feeb8bae5a736ad8706e9e47924217e5d198b3436001600160a01b031692600485101561238057600085156131e1575060006001861461316f57506000600286146130785750600360009514612f8d5763e9f21d6160e01b8552600485fd5b516020926001600160a01b039091169160c4918690612faf9061014001612e72565b604051632c780dd360e21b81526001600160a01b03938416600482015260248101959095527f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7383166044860152821660648501527f000000000000000000000000d6bb4e2c464653f9e2fefd4b5abf660c9b26f979821660848501527f0000000000000000000000007b5dd5b08e3bf44fc5aaa1b57c5cf6fffb753e1190911660a48401529193849283915af191821561306c5791612590575090565b604051903d90823e3d90fd5b94509061014490856020949562ffffff6130ab60e060018060a01b03885116978960018060a01b03910151169901612e62565b60405198899788966301f4a07360e61b885260018060a01b03166004880152602487015260018060a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73166044870152606486015260018060a01b037f0000000000000000000000006da35ffb6a22a73c16efcb0c57b77ae61d2e03221660848601521660a4840152662386f26fc1000060c4840152610e1060e48401526103846101048401526104b06101248401525af191821561306c5791612590575090565b9051604051630a0f83f160e31b81526001600160a01b03938416600482015290831660248201527f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad739092166044830152935091602091508290606490829086905af191821561306c5791612590575090565b94509260209290916084918690610120016001600160a01b0361320382612e72565b1661327a575033955b516040516302959c5f60e31b81526001600160a01b03938416600482015290831660248201527f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad738316604482015295909116606486015284928391905af191821561306c5791612590575090565b61328390612e72565b9561320c565b90610100600092013560048110156119a3576002190161348157604051906101006132b48184612478565b600783526020830190601f190136823782511561346d5730815260018060a01b036020835101511683516001101561344557604084015260018060a01b03602083015116835160021015613445576060840152604082019160018060a01b03835116845160031015613459576080850152835160041015613445577f0000000000000000000000007b5dd5b08e3bf44fc5aaa1b57c5cf6fffb753e116001600160a01b031660a0850152835160051015613445577f0000000000000000000000006da35ffb6a22a73c16efcb0c57b77ae61d2e03226001600160a01b031660c08501528351600610156134455761dead60e0850152515191516001600160a01b039283169216823b15611b29576040805163148aca5760e01b815260048101929092526024820152925160448401819052849284929091606484019190855b818110613420575050508383809203925af180156119a757613413575050565b8161341d91612478565b50565b82516001600160a01b03168452889650879550602093840193909201916001016133f3565b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b84526032600452602484fd5b5050565b3d156134b0573d9061349682612758565b916134a46040519384612478565b82523d6000602084013e565b606090565b61016081013590811561369757825180516020909101516001600160a01b03918216926001600160401b0392909116906101809062ffffff6134f960e08301612e62565b6135066101a08401612dd4565b946040519763609298b960e01b895260048901526024880152166044860152013560648401523060848401521660a482015260408160c4818560018060a01b037f0000000000000000000000006da35ffb6a22a73c16efcb0c57b77ae61d2e0322165af19283156125ac576000918294613674575b506101f482028281046101f4148315171561273557846135a36127106135c49304809561274b565b946135ba8660018060a01b0386515116339061408f565b846136365761274b565b80613608575b506060015191604051938452602084015260408301527f8e49dc9a9ac63c0ce033eb1355622489bf724e508e725a1831f750dfbffe291160603393a3565b600080808093335af1613619613485565b501561362557386135ca565b637bf340bd60e11b60005260046000fd5b83515161366f9086907f0000000000000000000000007b5dd5b08e3bf44fc5aaa1b57c5cf6fffb753e11906001600160a01b031661408f565b61274b565b909350613690915060403d6040116105aa5761059c8183612478565b923861357b565b505050565b519069ffffffffffffffffffff8216820361238057565b908160a0910312612380576136c78161369c565b916020820151916040810151916125a960806060840151930161369c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316806138b3575b50604051633fabe5a360e21b81527f00000000000000000000000078f3556b67e17df817d51ef5a990cdaf09e8d3a96001600160a01b03169060a081600481855afa9081156125ac5760008092600092600091613879575b5060008413918261386f575b82613854575b5050156137cd5742811115908161381a575b50156137cd5760206004926040519384809263313ce56760e01b82525afa9182156125ac576000926137de575b50601260ff8316116137cd5791565b630ae360c360e11b60005260046000fd5b9091506020813d602011613812575b816137fa60209383612478565b810103126123805761380b90612ea2565b90386137be565b3d91506137ed565b61382591504261274b565b63ffffffff7f0000000000000000000000000000000000000000000000000000000000000e1016101538613791565b69ffffffffffffffffffff919250811691161015388061377f565b8315159250613779565b9250505061389f915060a03d60a0116138ac575b6138978183612478565b8101906136b3565b929150929092913861376d565b503d61388d565b60a060049160405192838092633fabe5a360e21b82525afa9081156125ac5760009060009261390e575b506137cd5780151590816138f8575b50156137cd5738613715565b9050610e108101809111612735574211386138ec565b9050613929915060a03d60a0116138ac576138978183612478565b50509150386138dd565b60ff16604d811161273557600a0a90565b929063ffffffff909492941691670de0b6b3a7640000830292808404670de0b6b3a764000014901517156127355761398e9261398261398892613933565b906127e9565b926127e9565b911561399e57906125a991614130565b6125a991614130565b600019600160601b8209918160601b91828085109403938085039414613a635783821115613a2c578190600160601b900960018219018216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b60405162461bcd60e51b815260206004820152600f60248201526e4d554c4449565f4f564552464c4f5760881b6044820152606490fd5b5080925015613a70570490565b60405162461bcd60e51b81526020600482015260086024820152674449565f5a45524f60c01b6044820152606490fd5b6000198282099082810292838084109303928084039314613ae057600160601b831015613a2c57600160601b910990828211900360a01b910360601c1790565b50505060601c90565b60001982820982820291828083109203918083039214613b535781670de0b6b3a76400001115613a2c577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066993670de0b6b3a7640000910990828211900360ee1b910360121c170290565b5050670de0b6b3a764000091500490565b600019600160c01b8209918160c01b91828085109403938085039414613a635783821115613a2c578190600160c01b900960018219018216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b8015613a70576503782dace9d960d21b0490565b600019670de0b6b3a76400008209670de0b6b3a7640000820291828083109203918083039214613c5657600160c01b821015613a2c57600160c01b90670de0b6b3a7640000900990828211900360401b910360c01c1790565b505060c01c90565b6000198282099082810292838084109303928084039314613c9e5782600160401b1115613a2c57600160401b910990828211900360c01b910360401c1790565b50505060401c90565b8015613a70576503782dace9d960921b0490565b600019670de0b6b3a76400008209670de0b6b3a7640000820291828083109203918083039214613d1457600160801b821015613a2c57600160801b90670de0b6b3a7640000900990828211900360801b910360801c1790565b505060801c90565b916000198284099282810292838086109503948086039514613d975784831115613a2c5782910960018219018216809204600281600302188082026002030280820260020302808202600203028082026002030280820260020302809102600203029360018380600003040190848311900302920304170290565b505080925015613a70570490565b600291820b910b0390627fffff198212627fffff83131761273557565b9060020b9060020b0190627fffff198212627fffff83131761273557565b939260ff166002811161405a578015613f5957600103613f4f576203a980915b15613ecd57613e0f81856142fe565b9360020b8460020b1315613ebc575b8360020b9160020b916000838201938412911290801582169115161761273557613e5481613e4f81620d89e8614269565b61428c565b918260020b8113600014613eaa5750505b905b8160020b8360020b1215613e7757565b60405162461bcd60e51b815260206004820152600b60248201526a63757276652072616e676560a81b6044820152606490fd5b613eb7925060020b6142b5565b613e65565b9283613ec791613dc2565b92613e1e565b613ed9818594956142b5565b9260020b8360020b1215613f3e575b8260020b9160020b916000838203931281841281169184139015161761273557613f1581613e4f81614257565b918260020b8112600014613f2c5750505b91613e67565b613f39925060020b6142fe565b613f26565b9182613f4991613da5565b91613ee8565b6201d4c091613e00565b509060008260020b131561402b5715613fed57613f7681846142fe565b9260020b8360020b1315613fd7575b613f9690613e4f81620d89e8614269565b915b8260020b8160020b1215613faa579190565b60405162461bcd60e51b815260206004820152600560248201526472616e676560d81b6044820152606490fd5b91613fe583613f9692613dc2565b929050613f85565b613ffa81613e4f81614257565b9061400581856142b5565b9360020b8460020b121561401a575b50613f98565b6140249193613da5565b9138614014565b60405162461bcd60e51b815260206004820152600760248201526673706163696e6760c81b6044820152606490fd5b60405162461bcd60e51b815260206004820152600d60248201526c63757276652070726f66696c6560981b6044820152606490fd5b6000929183809360405190602082019363a9059cbb60e01b855260018060a01b031660248301526044820152604481526140ca606482612478565b51925af16140d6613485565b90159081156140f8575b506140e757565b6312171d8360e31b60005260046000fd5b805180151592508261410d575b5050386140e0565b81925090602091810103126123805760206141289101612e86565b153880614105565b801515806141f2575b156141bf576141509161414b91613b64565b6146df565b6401000276a3811015806141a2575b15614170576001600160a01b031690565b60405162461bcd60e51b815260206004820152600a6024820152697371727420707269636560b01b6044820152606490fd5b5073fffd8963efd1fc6a506488495d951d5263988d26811061415f565b60405162461bcd60e51b815260206004820152600b60248201526a707269636520726174696f60a81b6044820152606490fd5b50811515614139565b6001600160a01b03166001600160801b03811115614235578061421d91613c5e565b901561422c576125a990613cbb565b6125a990613ca7565b8061423f916127e9565b901561424e576125a990613bfd565b6125a990613be9565b60020b801561280657620d89e7190590565b60020b9060020b90811561280657627fffff198114600019831416612735570590565b9060020b9060020b02908160020b91820361273557565b9060020b9081156128065760020b0790565b91906142c581613e4f8186614269565b928160008260020b1291826142e8575b50506142de5750565b6125a99192613da5565b6142f292506142a3565b60020b151581386142d5565b919061430e81613e4f8186614269565b928160008260020b139182614331575b50506143275750565b6125a99192613dc2565b61433b92506142a3565b60020b1515813861431e565b62ffffff8160020b91600083126000146146d85760000316905b620d89e882116146af57600182161561469d576001600160881b036ffffcb933bd6fad37aa2d162d1a5940015b169160028116614681575b60048116614665575b60088116614649575b6010811661462d575b60208116614611575b604081166145f5575b608081166145d9575b61010081166145bd575b61020081166145a1575b6104008116614585575b6108008116614569575b611000811661454d575b6120008116614531575b6140008116614515575b61800081166144f9575b6201000081166144dd575b6202000081166144c2575b6204000081166144a7575b620800001661448e575b60001261447f575b63ffffffff8116614477576000905b60201c60ff91909116016001600160a01b031690565b600190614461565b80156128065760001904614452565b6b048a170391f7dc42444e8fa290910260801c9061444a565b6d2216e584f5fa1ea926041bedfe9890920260801c91614440565b916e5d6af8dedb81196699c329225ee6040260801c91614435565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161442a565b916f31be135f97d08fd981231505542fcfa60260801c9161441f565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614415565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161440b565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614401565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916143f7565b916ff3392b0822b70005940c7a398e4b70f30260801c916143ed565b916ff987a7253ac413176f2b074cf7815e540260801c916143e3565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916143d9565b916ffe5dee046a99a2a811c461f1969c30530260801c916143cf565b916fff2ea16466c96a3843ec78b326b528610260801c916143c6565b916fff973b41fa98c081472e6896dfb254c00260801c916143bd565b916fffcb9843d60f6159c9db58835c9266440260801c916143b4565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916143ab565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916143a2565b916ffff97272373d413259a46990580e213a0260801c91614399565b6001600160881b03600160801b61438e565b60405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606490fd5b1690614361565b801561270a576147ae6001826000908460801c80614814575b508060401c80614807575b508060201c806147fa575b508060101c806147ed575b508060081c806147e0575b508060041c806147d3575b508060021c806147c6575b50821c6147bf575b811c1b61474f81846127fc565b0160011c61475d81846127fc565b0160011c61476b81846127fc565b0160011c61477981846127fc565b0160011c61478781846127fc565b0160011c61479581846127fc565b0160011c6147a381846127fc565b0160011c80926127fc565b808210156147ba575090565b905090565b8101614742565b600291509101903861473a565b600491509101903861472f565b6008915091019038614724565b6010915091019038614719565b602091509101903861470e565b6040915091019038614703565b915050608090386146f856fea2646970667358221220ecaa448124b3a68c489891d6ade549fe9c3a8190f009f4d99f40aff2f0c0aec364736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0xffb62a…440297 | 32 days agoThu, 16 Jul 2026 13:58:37 UTC | 0x77da58…78fd | [0] 0x000000000000…00000008 [1] 0x000000000000…fb753e11 data: 0x000000000000000000…1f32aab6 |
| 0xffb62a…440297 | 32 days agoThu, 16 Jul 2026 13:58:37 UTC | 0xda501d…ec5e | [0] 0x000000000000…871f1234 [1] 0x1a889ca6bf9d…ee5d0f00 data: 0x000000000000000000…00000000 |
| 0xffb62a…440297 | 32 days agoThu, 16 Jul 2026 13:58:37 UTC | 0x10b125…a221 | [0] 0x000000000000…00000008 [1] 0x000000000000…871f1234 [2] 0x000000000000…7cc5917a data: 0x000000000000000000…00000000 |
| 0x2cfdc7…d4b824 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0x77da58…78fd | [0] 0x000000000000…00000007 [1] 0x000000000000…fb753e11 data: 0x000000000000000000…80114283 |
| 0x2cfdc7…d4b824 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0x8e49dc…2911 | [0] 0x000000000000…00000007 [1] 0x000000000000…4f0f092b data: 0x000000000000000000…e94b49d6 |
| 0x2cfdc7…d4b824 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0xda501d…ec5e | [0] 0x000000000000…e9111234 [1] 0x8e9293a7f213…b1bf96be data: 0x000000000000000000…00000000 |
| 0x2cfdc7…d4b824 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0x10b125…a221 | [0] 0x000000000000…00000007 [1] 0x000000000000…e9111234 [2] 0x000000000000…4f0f092b data: 0x000000000000000000…00000000 |
| 0x8cc7b9…4b23ac | 32 days agoThu, 16 Jul 2026 13:48:39 UTC | 0x77da58…78fd | [0] 0x000000000000…00000006 [1] 0x000000000000…fb753e11 data: 0x000000000000000000…79d47cdd |
| 0x8cc7b9…4b23ac | 32 days agoThu, 16 Jul 2026 13:48:39 UTC | 0xda501d…ec5e | [0] 0x000000000000…5d761234 [1] 0xa509fa1fada5…a2cf0f6b data: 0x000000000000000000…00000000 |
| 0x8cc7b9…4b23ac | 32 days agoThu, 16 Jul 2026 13:48:39 UTC | 0x10b125…a221 | [0] 0x000000000000…00000006 [1] 0x000000000000…5d761234 [2] 0x000000000000…7cc5917a data: 0x000000000000000000…00000000 |
| 0x758875…b6a093 | 32 days agoThu, 16 Jul 2026 13:45:45 UTC | 0x77da58…78fd | [0] 0x000000000000…00000005 [1] 0x000000000000…fb753e11 data: 0x000000000000000000…1f32aab6 |
| 0x758875…b6a093 | 32 days agoThu, 16 Jul 2026 13:45:45 UTC | 0xda501d…ec5e | [0] 0x000000000000…23661234 [1] 0xd3249c35220a…a1eaed7d data: 0x000000000000000000…00000000 |
| 0x758875…b6a093 | 32 days agoThu, 16 Jul 2026 13:45:45 UTC | 0x10b125…a221 | [0] 0x000000000000…00000005 [1] 0x000000000000…23661234 [2] 0x000000000000…9c9f7dc2 data: 0x000000000000000000…00000000 |
| 0x725b4f…b66880 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0x77da58…78fd | [0] 0x000000000000…00000004 [1] 0x000000000000…fb753e11 data: 0x000000000000000000…0a7efd4d |
| 0x725b4f…b66880 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0x8e49dc…2911 | [0] 0x000000000000…00000004 [1] 0x000000000000…74499ec8 data: 0x000000000000000000…9aa866be |
| 0x725b4f…b66880 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0xda501d…ec5e | [0] 0x000000000000…3a4c1234 [1] 0xa1187f49cb70…49f53187 data: 0x000000000000000000…00000000 |
| 0x725b4f…b66880 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0x10b125…a221 | [0] 0x000000000000…00000004 [1] 0x000000000000…3a4c1234 [2] 0x000000000000…74499ec8 data: 0x000000000000000000…00000000 |
| 0x62c67c…3087d2 | 32 days agoThu, 16 Jul 2026 13:43:32 UTC | 0x77da58…78fd | [0] 0x000000000000…00000003 [1] 0x000000000000…fb753e11 data: 0x000000000000000000…51ff7d2f |
| 0x62c67c…3087d2 | 32 days agoThu, 16 Jul 2026 13:43:32 UTC | 0xda501d…ec5e | [0] 0x000000000000…392e1234 [1] 0x6b31867f5454…1795c562 data: 0x000000000000000000…00000000 |
| 0x62c67c…3087d2 | 32 days agoThu, 16 Jul 2026 13:43:32 UTC | 0x10b125…a221 | [0] 0x000000000000…00000003 [1] 0x000000000000…392e1234 [2] 0x000000000000…7cc5917a data: 0x000000000000000000…00000000 |
| 0xac1a55…1e1991 | 32 days agoThu, 16 Jul 2026 13:42:40 UTC | 0x77da58…78fd | [0] 0x000000000000…00000002 [1] 0x000000000000…fb753e11 data: 0x000000000000000000…16b2b761 |
| 0xac1a55…1e1991 | 32 days agoThu, 16 Jul 2026 13:42:40 UTC | 0xda501d…ec5e | [0] 0x000000000000…7ffb1234 [1] 0x7525fb793e1b…69cc3954 data: 0x000000000000000000…00000000 |
| 0xac1a55…1e1991 | 32 days agoThu, 16 Jul 2026 13:42:40 UTC | 0x10b125…a221 | [0] 0x000000000000…00000002 [1] 0x000000000000…7ffb1234 [2] 0x000000000000…826cfbad data: 0x000000000000000000…00000000 |
| 0x402d96…355667 | 32 days agoThu, 16 Jul 2026 13:13:44 UTC | 0x77da58…78fd | [0] 0x000000000000…00000001 [1] 0x000000000000…fb753e11 data: 0x000000000000000000…edac6742 |
| 0x402d96…355667 | 32 days agoThu, 16 Jul 2026 13:13:44 UTC | 0x8e49dc…2911 | [0] 0x000000000000…00000001 [1] 0x000000000000…fb753e11 data: 0x000000000000000000…2eced173 |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x493adb…2c7ba6 | collectFees | 11,946,779 | 31 days agoFri, 17 Jul 2026 07:39:30 UTC | 0x7b5d…3e11 | IN | HooxFactoryV3 | $0.000 ETH | 0.00001388 | |
| 0xdbfad3…fc569f | collectFees | 11,946,525 | 31 days agoFri, 17 Jul 2026 07:39:04 UTC | 0x7b5d…3e11 | IN | HooxFactoryV3 | $0.000 ETH | 0.00002586 | |
| 0x8cc384…376fab | Transfer | 11,325,058 | 32 days agoThu, 16 Jul 2026 14:21:33 UTC | 0x06f7…3aec | IN | HooxFactoryV3 | $1.870.00098 ETH | 0.00000134 | |
| 0x9869d2…19dce6 | Transfer | 11,323,366 | 32 days agoThu, 16 Jul 2026 14:18:43 UTC | 0xdf0f…ac05 | IN | HooxFactoryV3 | $3.140.00165 ETH | 0.00000134 | |
| 0xffb62a…440297 | createToken | 11,311,268 | 32 days agoThu, 16 Jul 2026 13:58:37 UTC | 0xec00…917a | IN | HooxFactoryV3 | $0.000 ETH | 0.00055688 | |
| 0xbc0c11…64cae2 | Transfer | 11,308,440 | 32 days agoThu, 16 Jul 2026 13:53:56 UTC | 0xd05a…4b36 | IN | HooxFactoryV3 | $2.180.00115 ETH | 0.00000134 | |
| 0x093629…86c419 | Transfer | 11,307,494 | 32 days agoThu, 16 Jul 2026 13:52:21 UTC | 0x578f…409e | IN | HooxFactoryV3 | $2.690.00141 ETH | 0.00000134 | |
| 0x2cfdc7…d4b824 | createToken | 11,307,082 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0x9383…092b | IN | HooxFactoryV3 | $94.730.05 ETH | 0.00056275 | |
| 0xb20d50…f56dab | Transfer | 11,307,033 | 32 days agoThu, 16 Jul 2026 13:51:35 UTC | 0x7b5d…3e11 | IN | HooxFactoryV3 | $18.950.01 ETH | 0.00000133 | |
| 0x8cc7b9…4b23ac | createToken | 11,305,250 | 32 days agoThu, 16 Jul 2026 13:48:39 UTC | 0xec00…917a | IN | HooxFactoryV3 | $0.000 ETH | 0.00055558 | |
| 0x5ee14a…31da76 | Transfer | 11,305,177 | 32 days agoThu, 16 Jul 2026 13:48:32 UTC | 0xbbeb…726d | IN | HooxFactoryV3 | $3.780.00199 ETH | 0.00000132 | |
| 0x19e325…5e97c9 | Transfer | 11,304,933 | 32 days agoThu, 16 Jul 2026 13:48:07 UTC | 0xb2b2…9bb7 | IN | HooxFactoryV3 | $5.200.00274 ETH | 0.00000133 | |
| 0x054074…5b3cb0 | Transfer | 11,304,765 | 32 days agoThu, 16 Jul 2026 13:47:50 UTC | 0x3380…b812 | IN | HooxFactoryV3 | $10.820.00570 ETH | 0.00000133 | |
| 0x758875…b6a093 | createToken | 11,303,515 | 32 days agoThu, 16 Jul 2026 13:45:45 UTC | 0xba94…7dc2 | IN | HooxFactoryV3 | $0.000 ETH | 0.00055580 | |
| 0x725b4f…b66880 | createToken | 11,303,428 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0xdcdb…9ec8 | IN | HooxFactoryV3 | $18.950.01 ETH | 0.00056172 | |
| 0x62c67c…3087d2 | createToken | 11,302,197 | 32 days agoThu, 16 Jul 2026 13:43:32 UTC | 0xec00…917a | IN | HooxFactoryV3 | $0.000 ETH | 0.00055100 | |
| 0xac1a55…1e1991 | createToken | 11,301,622 | 32 days agoThu, 16 Jul 2026 13:42:40 UTC | 0x61a5…fbad | IN | HooxFactoryV3 | $0.000 ETH | 0.00056840 | |
| 0x402d96…355667 | createToken | 11,284,150 | 32 days agoThu, 16 Jul 2026 13:13:44 UTC | 0x7b5d…3e11 | IN | HooxFactoryV3 | $18.950.01 ETH | 0.00055042 | |
| 0xf483da…8cd977 | Transfer | 11,283,397 | 32 days agoThu, 16 Jul 2026 13:12:28 UTC | 0x7b5d…3e11 | IN | HooxFactoryV3 | $18.950.01 ETH | 0.00000131 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xffb62a89…440297 | Transfer | 11,311,268 | 32 days agoThu, 16 Jul 2026 13:58:37 UTC | 0x5626…652d | OUT | 0xd0d7…faef | 1,000,000,000.000000 RH | Robinhoox (RH) | |
| 0xffb62a89…440297 | Transfer | 11,311,268 | 32 days agoThu, 16 Jul 2026 13:58:37 UTC | 0x0000…0000 | IN | 0x5626…652d | 1,000,000,000.000000 RH | Robinhoox (RH) | |
| 0x2cfdc7c2…d4b824 | Transfer | 11,307,082 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0x5626…652d | OUT | 0x7b5d…3e11 | 576,636.709666 HOOXCAT | HooxCat (HOOXCAT) | |
| 0x2cfdc7c2…d4b824 | Transfer | 11,307,082 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0x5626…652d | OUT | 0x9383…092b | 10,956,097.483654 HOOXCAT | HooxCat (HOOXCAT) | |
| 0x2cfdc7c2…d4b824 | Transfer | 11,307,082 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0xe7aa…40b8 | IN | 0x5626…652d | 11,532,734.193320 HOOXCAT | HooxCat (HOOXCAT) | |
| 0x2cfdc7c2…d4b824 | Transfer | 11,307,082 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0x5626…652d | OUT | 0x0f75…15f9 | 1,000,000,000.000000 HOOXCAT | HooxCat (HOOXCAT) | |
| 0x2cfdc7c2…d4b824 | Transfer | 11,307,082 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0x0000…0000 | IN | 0x5626…652d | 1,000,000,000.000000 HOOXCAT | HooxCat (HOOXCAT) | |
| 0x8cc7b92f…4b23ac | Transfer | 11,305,250 | 32 days agoThu, 16 Jul 2026 13:48:39 UTC | 0x5626…652d | OUT | 0xbb7d…153f | 1,000,000,000.000000 WHALE | Whale Hood (WHALE) | |
| 0x8cc7b92f…4b23ac | Transfer | 11,305,250 | 32 days agoThu, 16 Jul 2026 13:48:39 UTC | 0x0000…0000 | IN | 0x5626…652d | 1,000,000,000.000000 WHALE | Whale Hood (WHALE) | |
| 0x758875f4…b6a093 | Transfer | 11,303,515 | 32 days agoThu, 16 Jul 2026 13:45:45 UTC | 0x5626…652d | OUT | 0xd04a…560c | 1,000,000,000.000000 1234 | 1234 (1234) | |
| 0x758875f4…b6a093 | Transfer | 11,303,515 | 32 days agoThu, 16 Jul 2026 13:45:45 UTC | 0x0000…0000 | IN | 0x5626…652d | 1,000,000,000.000000 1234 | 1234 (1234) | |
| 0x725b4fe9…b66880 | Transfer | 11,303,428 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0x5626…652d | OUT | 0x7b5d…3e11 | 116,401.275305 HDOG | HooxDog (HDOG) | |
| 0x725b4fe9…b66880 | Transfer | 11,303,428 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0x5626…652d | OUT | 0xdcdb…9ec8 | 2,211,624.230795 HDOG | HooxDog (HDOG) | |
| 0x725b4fe9…b66880 | Transfer | 11,303,428 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0xb0f0…5def | IN | 0x5626…652d | 2,328,025.506100 HDOG | HooxDog (HDOG) | |
| 0x725b4fe9…b66880 | Transfer | 11,303,428 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0x5626…652d | OUT | 0x935c…1836 | 1,000,000,000.000000 HDOG | HooxDog (HDOG) | |
| 0x725b4fe9…b66880 | Transfer | 11,303,428 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0x0000…0000 | IN | 0x5626…652d | 1,000,000,000.000000 HDOG | HooxDog (HDOG) | |
| 0x62c67c01…3087d2 | Transfer | 11,302,197 | 32 days agoThu, 16 Jul 2026 13:43:32 UTC | 0x5626…652d | OUT | 0x3d89…a5fd | 1,000,000,000.000000 TEST | test (TEST) | |
| 0x62c67c01…3087d2 | Transfer | 11,302,197 | 32 days agoThu, 16 Jul 2026 13:43:32 UTC | 0x0000…0000 | IN | 0x5626…652d | 1,000,000,000.000000 TEST | test (TEST) | |
| 0xac1a5574…1e1991 | Transfer | 11,301,622 | 32 days agoThu, 16 Jul 2026 13:42:40 UTC | 0x5626…652d | OUT | 0xec2f…70f9 | 1,000,000,000.000000 GENESIS | Genesis (GENESIS) | |
| 0xac1a5574…1e1991 | Transfer | 11,301,622 | 32 days agoThu, 16 Jul 2026 13:42:40 UTC | 0x0000…0000 | IN | 0x5626…652d | 1,000,000,000.000000 GENESIS | Genesis (GENESIS) | |
| 0x402d9641…355667 | Transfer | 11,284,150 | 32 days agoThu, 16 Jul 2026 13:13:44 UTC | 0x5626…652d | OUT | 0x7b5d…3e11 | $NaN184,308.692705 HOOX | ||
| 0x402d9641…355667 | Transfer | 11,284,150 | 32 days agoThu, 16 Jul 2026 13:13:44 UTC | 0x5626…652d | OUT | 0x7b5d…3e11 | $NaN3,501,865.161409 HOOX | ||
| 0x402d9641…355667 | Transfer | 11,284,150 | 32 days agoThu, 16 Jul 2026 13:13:44 UTC | 0x59f4…8368 | IN | 0x5626…652d | $NaN3,686,173.854115 HOOX | ||
| 0x402d9641…355667 | Transfer | 11,284,150 | 32 days agoThu, 16 Jul 2026 13:13:44 UTC | 0x5626…652d | OUT | 0xc906…52a6 | $NaN1,000,000,000.000000 HOOX | ||
| 0x402d9641…355667 | Transfer | 11,284,150 | 32 days agoThu, 16 Jul 2026 13:13:44 UTC | 0x0000…0000 | IN | 0x5626…652d | $NaN1,000,000,000.000000 HOOX |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 11,311,268 | 32 days agoThu, 16 Jul 2026 13:58:37 UTC | 0xffb62a…440297 | CALL | createToken | 0x5626…652d | OUT | 0x6da3…0322 | 0.001 ETH |
| 11,307,082 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0x2cfdc7…d4b824 | CALL | createToken | 0x5626…652d | OUT | 0x6da3…0322 | 0.001 ETH |
| 11,307,082 | 32 days agoThu, 16 Jul 2026 13:51:40 UTC | 0x2cfdc7…d4b824 | CALL | createToken | 0x5626…652d | OUT | 0x6da3…0322 | 0.05 ETH |
| 11,305,250 | 32 days agoThu, 16 Jul 2026 13:48:39 UTC | 0x8cc7b9…4b23ac | CALL | createToken | 0x5626…652d | OUT | 0x6da3…0322 | 0.001 ETH |
| 11,303,515 | 32 days agoThu, 16 Jul 2026 13:45:45 UTC | 0x758875…b6a093 | CALL | createToken | 0x5626…652d | OUT | 0x6da3…0322 | 0.001 ETH |
| 11,303,428 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0x725b4f…b66880 | CALL | createToken | 0x5626…652d | OUT | 0x6da3…0322 | 0.001 ETH |
| 11,303,428 | 32 days agoThu, 16 Jul 2026 13:45:36 UTC | 0x725b4f…b66880 | CALL | createToken | 0x5626…652d | OUT | 0x6da3…0322 | 0.01 ETH |
| 11,302,197 | 32 days agoThu, 16 Jul 2026 13:43:32 UTC | 0x62c67c…3087d2 | CALL | createToken | 0x5626…652d | OUT | 0x6da3…0322 | 0.001 ETH |
| 11,301,622 | 32 days agoThu, 16 Jul 2026 13:42:40 UTC | 0xac1a55…1e1991 | CALL | createToken | 0x5626…652d | OUT | 0x6da3…0322 | 0.001 ETH |
| 11,284,150 | 32 days agoThu, 16 Jul 2026 13:13:44 UTC | 0x402d96…355667 | CALL | createToken | 0x5626…652d | OUT | 0x6da3…0322 | 0.001 ETH |
| 11,284,150 | 32 days agoThu, 16 Jul 2026 13:13:44 UTC | 0x402d96…355667 | CALL | createToken | 0x5626…652d | OUT | 0x6da3…0322 | 0.01 ETH |