// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import {HoodToken} from "./HoodToken.sol";
import {SSTORE2} from "./SSTORE2.sol";
import {FullMath} from "./libraries/FullMath.sol";
import {IUniswapV3Factory, IUniswapV3Pool, IWETH} from "./interfaces/IUniswapV3.sol";
interface ITickLens {
function sqrtRatioAtTick(int24 tick) external pure returns (uint160);
}
/// @title HoodPump — pump.fun-style bonding curve launchpad on Robinhood Chain
/// @notice Every coin trades on a constant-product curve with virtual reserves,
/// priced in ETH. When the curve collects `gradEth` real ETH, trading
/// locks and the remaining supply + raised ETH seed a full-range
/// Uniswap V3 position owned by this contract forever (LP locked).
/// Defaults mirror pump.fun's curve scaled 1 SOL : 0.05 ETH —
/// 30 virtual SOL → 1.5 virtual ETH, 85 SOL graduation → 4.25 ETH.
contract HoodPump {
struct Config {
uint128 vEth0; // initial virtual ETH reserve
uint128 vTok0; // initial virtual token reserve
uint128 curveSupply; // tokens sellable on the curve
uint128 totalSupply; // token total supply (rest goes to LP)
uint128 gradEth; // real ETH collected that triggers graduation
uint128 gradFee; // flat ETH fee taken from raise at graduation
uint128 maxWallet; // anti-snipe: max tokens one wallet may hold pre-threshold
uint128 antiSnipeUntilEth; // cap lifts once the curve raises this much real ETH
uint16 feeBps; // trade fee in basis points (100 = 1%)
}
struct Curve {
uint128 vEth;
uint128 vTok;
uint128 realEth; // net ETH held for the curve (excl. fees)
uint128 sold; // tokens sold so far
address creator;
bool graduated;
address pool;
address metaPtr; // SSTORE2 pointer to metadata JSON (chunk index contract)
}
uint24 public constant POOL_FEE = 3000;
address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
IUniswapV3Factory public immutable v3Factory;
IWETH public immutable weth;
ITickLens public immutable tickLens;
// the 1.5% platform fee is split 50/50 between two treasuries
address public immutable feeRecipient;
address public immutable feeRecipient2;
Config public config;
mapping(address => Curve) public curves;
address[] public allTokens;
uint256 public platformFees; // accrued, pull-withdrawn
mapping(address => uint256) public creatorFees;
uint256 public commentCount;
uint256 private locked = 1;
event Created(
address indexed token, address indexed creator, string name, string symbol, address metaPtr, uint256 ts
);
event Trade(
address indexed token,
address indexed trader,
bool isBuy,
uint256 ethAmount, // gross ETH in (buy) / net ETH out (sell)
uint256 tokenAmount,
uint128 vEth, // virtual reserves after trade → spot price = vEth/vTok
uint128 vTok,
uint256 ts
);
event Graduated(address indexed token, address pool, uint256 ethLp, uint256 tokenLp, uint256 ts);
event Comment(address indexed token, address indexed author, uint256 indexed replyTo, uint256 id, string text, uint256 ts);
error Reentrancy();
error UnknownToken();
error AlreadyGraduated();
error ZeroAmount();
error Slippage();
error NotPool();
error TransferFailed();
error WalletCap();
modifier nonReentrant() {
if (locked != 1) revert Reentrancy();
locked = 2;
_;
locked = 1;
}
constructor(
IUniswapV3Factory _factory,
IWETH _weth,
ITickLens _lens,
address _feeRecipient,
address _feeRecipient2,
Config memory _cfg
) {
v3Factory = _factory;
weth = _weth;
tickLens = _lens;
feeRecipient = _feeRecipient;
feeRecipient2 = _feeRecipient2;
require(_cfg.curveSupply < _cfg.totalSupply && _cfg.gradFee < _cfg.gradEth && _cfg.feeBps < 1000, "cfg");
config = _cfg;
}
// ---------------------------------------------------------------- create
/// @param metaJson UTF-8 JSON blob: {"description","image","twitter","telegram","website"}
/// (image is a data URI, stored fully on-chain via SSTORE2)
function create(string calldata name, string calldata symbol, bytes calldata metaJson)
external
payable
nonReentrant
returns (address token)
{
Config memory cfg = config;
token = address(new HoodToken(name, symbol, cfg.totalSupply));
address ptr = metaJson.length > 0 ? SSTORE2.write(metaJson) : address(0);
curves[token] = Curve({
vEth: cfg.vEth0,
vTok: cfg.vTok0,
realEth: 0,
sold: 0,
creator: msg.sender,
graduated: false,
pool: address(0),
metaPtr: ptr
});
allTokens.push(token);
emit Created(token, msg.sender, name, symbol, ptr, block.timestamp);
if (msg.value > 0) _buy(token, msg.sender, msg.value, 0);
}
// ----------------------------------------------------------------- trade
function buy(address token, uint256 minTokensOut) external payable nonReentrant returns (uint256) {
if (msg.value == 0) revert ZeroAmount();
return _buy(token, msg.sender, msg.value, minTokensOut);
}
function _buy(address token, address trader, uint256 ethIn, uint256 minTokensOut) internal returns (uint256 out) {
Curve storage c = curves[token];
if (c.creator == address(0)) revert UnknownToken();
if (c.graduated) revert AlreadyGraduated();
Config memory cfg = config;
// snapshot realEth BEFORE this buy: the anti-snipe cap is gated on the
// pre-buy state so a single large buy can't cross the threshold and skip
// the cap in the same transaction
uint128 realEthBefore = c.realEth;
uint256 fee = (ethIn * cfg.feeBps) / 10_000;
uint256 net = ethIn - fee;
uint256 refund;
{
// cap the buy at the graduation target, refund the excess
uint256 room = cfg.gradEth - c.realEth;
if (net > room) {
uint256 grossNeeded = FullMath.mulDivRoundingUp(room, 10_000, 10_000 - cfg.feeBps);
refund = ethIn - grossNeeded;
fee = grossNeeded - room;
net = room;
ethIn = grossNeeded;
}
}
{
uint256 k = uint256(c.vEth) * c.vTok;
uint256 newVEth = c.vEth + net;
uint256 newVTok = k / newVEth;
out = c.vTok - newVTok;
if (out < minTokensOut) revert Slippage();
if (out == 0) revert ZeroAmount();
c.vEth = uint128(newVEth);
c.vTok = uint128(newVTok);
c.realEth += uint128(net);
c.sold += uint128(out);
}
{
uint256 creatorCut = fee / 4;
creatorFees[c.creator] += creatorCut;
platformFees += fee - creatorCut;
}
// anti-snipe: while the curve is young (pre-buy realEth below the
// threshold), no wallet may end up holding more than maxWallet tokens.
// gating on the PRE-buy state blocks a whale from crossing the threshold
// and skipping the cap in one tx. the creator is exempt so they can seed.
if (realEthBefore < cfg.antiSnipeUntilEth && trader != c.creator) {
if (HoodToken(token).balanceOf(trader) + out > cfg.maxWallet) revert WalletCap();
}
if (!HoodToken(token).transfer(trader, out)) revert TransferFailed();
emit Trade(token, trader, true, ethIn, out, c.vEth, c.vTok, block.timestamp);
if (c.realEth >= cfg.gradEth) _graduate(token, c);
if (refund > 0) {
(bool ok,) = trader.call{value: refund}("");
if (!ok) revert TransferFailed();
}
}
function sell(address token, uint256 tokenAmount, uint256 minEthOut) external nonReentrant returns (uint256 out) {
Curve storage c = curves[token];
if (c.creator == address(0)) revert UnknownToken();
if (c.graduated) revert AlreadyGraduated();
if (tokenAmount == 0) revert ZeroAmount();
if (!HoodToken(token).transferFrom(msg.sender, address(this), tokenAmount)) revert TransferFailed();
uint256 k = uint256(c.vEth) * c.vTok;
uint256 newVTok = c.vTok + tokenAmount;
uint256 newVEth = FullMath.mulDivRoundingUp(k, 1, newVTok);
uint256 ethOut = c.vEth - newVEth;
Config memory cfg = config;
uint256 fee = (ethOut * cfg.feeBps) / 10_000;
out = ethOut - fee;
if (out < minEthOut) revert Slippage();
c.vEth = uint128(newVEth);
c.vTok = uint128(newVTok);
c.realEth -= uint128(ethOut);
c.sold -= uint128(tokenAmount);
uint256 creatorCut = fee / 4;
creatorFees[c.creator] += creatorCut;
platformFees += fee - creatorCut;
emit Trade(token, msg.sender, false, out, tokenAmount, c.vEth, c.vTok, block.timestamp);
(bool ok,) = msg.sender.call{value: out}("");
if (!ok) revert TransferFailed();
}
// ------------------------------------------------------------ graduation
// sqrt price bounds a swap may push to (TickMath MIN+1 / MAX-1)
uint160 internal constant MIN_SQRT = 4295128740;
uint160 internal constant MAX_SQRT = 1461446703485210103287273052203988822378723970341;
function _graduate(address token, Curve storage c) internal {
c.graduated = true;
uint256 gradFee = config.gradFee;
platformFees += gradFee;
uint256 lpEth = c.realEth - gradFee;
uint256 lpTok = HoodToken(token).balanceOf(address(this));
weth.deposit{value: lpEth}();
address pool;
{
(address t0, address t1) =
token < address(weth) ? (token, address(weth)) : (address(weth), token);
pool = v3Factory.getPool(t0, t1, POOL_FEE);
if (pool == address(0)) pool = v3Factory.createPool(t0, t1, POOL_FEE);
c.pool = pool;
}
(uint256 amt0, uint256 amt1) = token < address(weth) ? (lpTok, lpEth) : (lpEth, lpTok);
// intended graduation price = amt1/amt0 as Q192; sqrtPriceX96 = sqrt(price) << 96
uint160 intended = uint160(_sqrt(FullMath.mulDiv(amt1, 1 << 192, amt0)));
// Initialize + force the price to `intended`. V3 pools are PERMISSIONLESS,
// so an attacker can pre-initialize (or later move) the price; a swallowed
// initialize used to let us seed LP around their price and drain the raise.
// _forcePrice pushes the pool back to `intended`; _seedAndSweep then mints
// full-range at that price and reconciles all leftovers.
{
uint160 sqrtP = _forcePrice(pool, token, intended);
// hard invariant: never seed liquidity around a price we did not set
require(sqrtP >= intended - intended / 200 && sqrtP <= intended + intended / 200, "price");
_seedAndSweep(pool, token, sqrtP);
}
emit Graduated(token, pool, lpEth, lpTok, block.timestamp);
}
/// @notice Mint the full-range LP position from the contract's actual token
/// and WETH balances at the (already-corrected) price, then reconcile
/// leftovers: WETH into platform fees, token dust burned forever.
function _seedAndSweep(address pool, address token, uint160 sqrtP) internal {
int24 spacing = v3Factory.feeAmountTickSpacing(POOL_FEE);
int24 maxTick = (887272 / spacing) * spacing;
uint256 tokBal = HoodToken(token).balanceOf(address(this));
uint256 wethBal = weth.balanceOf(address(this));
(uint256 amt0, uint256 amt1) = token < address(weth) ? (tokBal, wethBal) : (wethBal, tokBal);
uint128 liq = _liquidityForAmounts(
sqrtP, tickLens.sqrtRatioAtTick(-maxTick), tickLens.sqrtRatioAtTick(maxTick), amt0, amt1
);
liq -= liq / 1e6; // haircut so the pool's round-up never exceeds our balances
IUniswapV3Pool(pool).mint(address(this), -maxTick, maxTick, liq, abi.encode(token));
// sweep leftover WETH into platform fees (receive() accepts the unwrap)
uint256 wethLeft = weth.balanceOf(address(this));
if (wethLeft > 0) {
weth.withdraw(wethLeft);
platformFees += wethLeft;
}
// burn leftover token dust
uint256 dust = HoodToken(token).balanceOf(address(this));
if (dust > 0) HoodToken(token).transfer(DEAD, dust);
}
/// @notice Initialize the pool if fresh, then swap it back to `intended` if
/// an attacker moved it. Returns the resulting sqrtPrice.
function _forcePrice(address pool, address token, uint160 intended) internal returns (uint160 sqrtP) {
try IUniswapV3Pool(pool).initialize(intended) {} catch {}
(sqrtP,,,,,,) = IUniswapV3Pool(pool).slot0();
if (sqrtP != intended) {
bool zeroForOne = sqrtP > intended; // pushing price down sells token0
address inToken = zeroForOne == (token < address(weth)) ? token : address(weth);
uint256 budget = inToken == token
? HoodToken(token).balanceOf(address(this))
: weth.balanceOf(address(this));
IUniswapV3Pool(pool).swap(address(this), zeroForOne, int256(budget), intended, abi.encode(token));
(sqrtP,,,,,,) = IUniswapV3Pool(pool).slot0();
}
}
function uniswapV3MintCallback(uint256 amount0Owed, uint256 amount1Owed, bytes calldata data) external {
address token = abi.decode(data, (address));
if (msg.sender != curves[token].pool) revert NotPool();
(address t0,) = token < address(weth) ? (token, address(weth)) : (address(weth), token);
(uint256 tokOwed, uint256 wethOwed) = t0 == token ? (amount0Owed, amount1Owed) : (amount1Owed, amount0Owed);
if (wethOwed > 0) weth.transfer(msg.sender, wethOwed);
if (tokOwed > 0) HoodToken(token).transfer(msg.sender, tokOwed);
}
/// @notice Pay for the price-forcing swap in _graduate. Only the token's own
/// pool may call, and only positive deltas are owed.
function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes calldata data) external {
address token = abi.decode(data, (address));
if (msg.sender != curves[token].pool) revert NotPool();
if (amount0Delta > 0) {
address t0 = token < address(weth) ? token : address(weth);
_payCallback(t0, token, uint256(amount0Delta));
}
if (amount1Delta > 0) {
address t1 = token < address(weth) ? address(weth) : token;
_payCallback(t1, token, uint256(amount1Delta));
}
}
function _payCallback(address owedToken, address token, uint256 amt) internal {
if (owedToken == address(weth)) weth.transfer(msg.sender, amt);
else HoodToken(token).transfer(msg.sender, amt);
}
/// @notice Anyone can push accrued V3 LP fees (locked position) to the platform.
function collectPoolFees(address token) external nonReentrant {
Curve storage c = curves[token];
if (c.pool == address(0)) revert UnknownToken();
int24 spacing = v3Factory.feeAmountTickSpacing(POOL_FEE);
int24 maxTick = (887272 / spacing) * spacing;
IUniswapV3Pool(c.pool).collect(feeRecipient, -maxTick, maxTick, type(uint128).max, type(uint128).max);
}
// -------------------------------------------------------------- comments
function comment(address token, string calldata text, uint256 replyTo) external {
if (curves[token].creator == address(0)) revert UnknownToken();
require(bytes(text).length > 0 && bytes(text).length <= 2000, "len");
emit Comment(token, msg.sender, replyTo, ++commentCount, text, block.timestamp);
}
// ------------------------------------------------------------------ fees
/// @notice Push accrued platform fees, split 50/50 between the two treasuries.
function withdrawFees() external nonReentrant {
uint256 amt = platformFees;
platformFees = 0;
uint256 half = amt / 2;
(bool ok1,) = feeRecipient2.call{value: half}("");
(bool ok2,) = feeRecipient.call{value: amt - half}("");
if (!ok1 || !ok2) revert TransferFailed();
}
function withdrawCreatorFees() external nonReentrant {
uint256 amt = creatorFees[msg.sender];
creatorFees[msg.sender] = 0;
(bool ok,) = msg.sender.call{value: amt}("");
if (!ok) revert TransferFailed();
}
// ----------------------------------------------------------------- views
function tokenCount() external view returns (uint256) {
return allTokens.length;
}
function tokens(uint256 start, uint256 n) external view returns (address[] memory out) {
uint256 len = allTokens.length;
if (start >= len) return new address[](0);
if (start + n > len) n = len - start;
out = new address[](n);
for (uint256 i; i < n; i++) {
out[i] = allTokens[start + i];
}
}
function metaOf(address token) external view returns (bytes memory) {
address ptr = curves[token].metaPtr;
return ptr == address(0) ? bytes("") : SSTORE2.read(ptr);
}
/// @notice Quote a buy: gross ETH in → tokens out (ignores graduation cap).
function quoteBuy(address token, uint256 ethIn) external view returns (uint256) {
Curve memory c = curves[token];
uint256 net = ethIn - (ethIn * config.feeBps) / 10_000;
uint256 k = uint256(c.vEth) * c.vTok;
return c.vTok - k / (c.vEth + net);
}
function quoteSell(address token, uint256 tokenAmount) external view returns (uint256) {
Curve memory c = curves[token];
uint256 k = uint256(c.vEth) * c.vTok;
uint256 ethOut = c.vEth - FullMath.mulDivRoundingUp(k, 1, c.vTok + tokenAmount);
return ethOut - (ethOut * config.feeBps) / 10_000;
}
// ------------------------------------------------------------------ math
function _liquidityForAmounts(uint160 sqrtP, uint160 sqrtA, uint160 sqrtB, uint256 amt0, uint256 amt1)
internal
pure
returns (uint128)
{
if (sqrtP <= sqrtA) sqrtP = sqrtA + 1;
if (sqrtP >= sqrtB) sqrtP = sqrtB - 1;
// L0 = amt0 * (sqrtP*sqrtB/Q96) / (sqrtB-sqrtP)
uint256 inter = FullMath.mulDiv(sqrtP, sqrtB, 1 << 96);
uint256 l0 = FullMath.mulDiv(amt0, inter, sqrtB - sqrtP);
// L1 = amt1 * Q96 / (sqrtP-sqrtA)
uint256 l1 = FullMath.mulDiv(amt1, 1 << 96, sqrtP - sqrtA);
uint256 l = l0 < l1 ? l0 : l1;
require(l <= type(uint128).max, "liq");
return uint128(l);
}
function _sqrt(uint256 x) internal pure returns (uint256 z) {
if (x == 0) return 0;
uint256 xx = x;
uint256 r = 1;
if (xx >= 0x100000000000000000000000000000000) {
xx >>= 128;
r <<= 64;
}
if (xx >= 0x10000000000000000) {
xx >>= 64;
r <<= 32;
}
if (xx >= 0x100000000) {
xx >>= 32;
r <<= 16;
}
if (xx >= 0x10000) {
xx >>= 16;
r <<= 8;
}
if (xx >= 0x100) {
xx >>= 8;
r <<= 4;
}
if (xx >= 0x10) {
xx >>= 4;
r <<= 2;
}
if (xx >= 0x4) r <<= 1;
// Newton iterations
z = r;
for (uint256 i; i < 7; i++) {
z = (z + x / z) >> 1;
}
uint256 z1 = x / z;
if (z1 < z) z = z1;
}
receive() external payable {
// only WETH withdrawals may push plain ETH here
require(msg.sender == address(weth), "no");
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_factory",
"type": "address",
"internalType": "contract IUniswapV3Factory"
},
{
"name": "_weth",
"type": "address",
"internalType": "contract IWETH"
},
{
"name": "_lens",
"type": "address",
"internalType": "contract ITickLens"
},
{
"name": "_feeRecipient",
"type": "address",
"internalType": "address"
},
{
"name": "_feeRecipient2",
"type": "address",
"internalType": "address"
},
{
"name": "_cfg",
"type": "tuple",
"components": [
{
"name": "vEth0",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "vTok0",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "curveSupply",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "totalSupply",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "gradEth",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "gradFee",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "maxWallet",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "antiSnipeUntilEth",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "feeBps",
"type": "uint16",
"internalType": "uint16"
}
],
"internalType": "struct HoodPump.Config"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AlreadyGraduated",
"type": "error",
"inputs": []
},
{
"name": "NotPool",
"type": "error",
"inputs": []
},
{
"name": "Reentrancy",
"type": "error",
"inputs": []
},
{
"name": "Slippage",
"type": "error",
"inputs": []
},
{
"name": "TransferFailed",
"type": "error",
"inputs": []
},
{
"name": "UnknownToken",
"type": "error",
"inputs": []
},
{
"name": "WalletCap",
"type": "error",
"inputs": []
},
{
"name": "WriteFailed",
"type": "error",
"inputs": []
},
{
"name": "ZeroAmount",
"type": "error",
"inputs": []
},
{
"name": "Comment",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "author",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "replyTo",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "id",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "text",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "ts",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Created",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "creator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "name",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"indexed": false,
"internalType": "string"
},
{
"name": "metaPtr",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "ts",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Graduated",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pool",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "ethLp",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokenLp",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "ts",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Trade",
"type": "event",
"inputs": [
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "trader",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "isBuy",
"type": "bool",
"indexed": false,
"internalType": "bool"
},
{
"name": "ethAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "tokenAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "vEth",
"type": "uint128",
"indexed": false,
"internalType": "uint128"
},
{
"name": "vTok",
"type": "uint128",
"indexed": false,
"internalType": "uint128"
},
{
"name": "ts",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "DEAD",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "POOL_FEE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint24",
"internalType": "uint24"
}
],
"stateMutability": "view"
},
{
"name": "allTokens",
"type": "function",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "buy",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "minTokensOut",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "payable"
},
{
"name": "collectPoolFees",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "comment",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "text",
"type": "string",
"internalType": "string"
},
{
"name": "replyTo",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "commentCount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "config",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "vEth0",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "vTok0",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "curveSupply",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "totalSupply",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "gradEth",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "gradFee",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "maxWallet",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "antiSnipeUntilEth",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "feeBps",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "create",
"type": "function",
"inputs": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "metaJson",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "payable"
},
{
"name": "creatorFees",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "curves",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "vEth",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "vTok",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "realEth",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "sold",
"type": "uint128",
"internalType": "uint128"
},
{
"name": "creator",
"type": "address",
"internalType": "address"
},
{
"name": "graduated",
"type": "bool",
"internalType": "bool"
},
{
"name": "pool",
"type": "address",
"internalType": "address"
},
{
"name": "metaPtr",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "feeRecipient",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "feeRecipient2",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "metaOf",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"stateMutability": "view"
},
{
"name": "platformFees",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "quoteBuy",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "ethIn",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "quoteSell",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "tokenAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "sell",
"type": "function",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "tokenAmount",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "minEthOut",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "out",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "tickLens",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract ITickLens"
}
],
"stateMutability": "view"
},
{
"name": "tokenCount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "tokens",
"type": "function",
"inputs": [
{
"name": "start",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "n",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "out",
"type": "address[]",
"internalType": "address[]"
}
],
"stateMutability": "view"
},
{
"name": "uniswapV3MintCallback",
"type": "function",
"inputs": [
{
"name": "amount0Owed",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "amount1Owed",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "uniswapV3SwapCallback",
"type": "function",
"inputs": [
{
"name": "amount0Delta",
"type": "int256",
"internalType": "int256"
},
{
"name": "amount1Delta",
"type": "int256",
"internalType": "int256"
},
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "v3Factory",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IUniswapV3Factory"
}
],
"stateMutability": "view"
},
{
"name": "weth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IWETH"
}
],
"stateMutability": "view"
},
{
"name": "withdrawCreatorFees",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "withdrawFees",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x6101206040526001600a55348015610015575f5ffd5b5060405161493c38038061493c833981016040819052610034916101df565b6001600160a01b0380871660805285811660a05284811660c05283811660e052821661010052606081015160408201516001600160801b039182169116108015610097575080608001516001600160801b03168160a001516001600160801b0316105b80156100ad57506103e881610100015161ffff16105b6100e35760405162461bcd60e51b815260206004820152600360248201526263666760e81b604482015260640160405180910390fd5b805160208201516001600160801b03918216600160801b9183168202175f5560408301516060840151908316908316820217600155608083015160a084015190831690831682021760025560c083015160e08401519083169216021760035561010001516004805461ffff191661ffff9092169190911790555061030d9350505050565b6001600160a01b038116811461017b575f5ffd5b50565b60405161012081016001600160401b03811182821017156101ad57634e487b7160e01b5f52604160045260245ffd5b60405290565b80516001600160801b03811681146101c9575f5ffd5b919050565b805161ffff811681146101c9575f5ffd5b5f5f5f5f5f5f8688036101c08112156101f6575f5ffd5b875161020181610167565b602089015190975061021281610167565b604089015190965061022381610167565b606089015190955061023481610167565b608089015190945061024581610167565b9250610120609f1982011215610259575f5ffd5b5061026261017e565b61026e60a089016101b3565b815261027c60c089016101b3565b602082015261028d60e089016101b3565b604082015261029f61010089016101b3565b60608201526102b161012089016101b3565b60808201526102c361014089016101b3565b60a08201526102d561016089016101b3565b60c08201526102e761018089016101b3565b60e08201526102f96101a089016101ce565b610100820152809150509295509295509295565b60805160a05160c05160e0516101005161451261042a5f395f81816105730152610f3301525f818161043101528181610a470152610fa501525f81816102c801528181612f080152612fb901525f81816101a8015281816103e9015281816116d50152818161170e01528181611736015281816117a501528181611aa801528181611ae101528181611b2101528181611b600152818161228d015281816122e00152818161245a015281816124cd015281816125060152818161252e015281816126c401528181612aa401528181612ad101528181612b2801528181612e4d01528181612ebc01528181613104015261319301525f81816105a6015281816109a3015281816125830152818161262d0152612d3401526145125ff3fe608060405260043610610198575f3560e01c80636a272462116100e7578063c9877a2111610087578063d98b2f5c11610062578063d98b2f5c14610691578063dd1b9c4a146106b0578063e1cd04b4146106d9578063fa461e33146106ed575f5ffd5b8063c9877a2114610633578063cce7ec131461065f578063d348799714610672575f5ffd5b80637c887c59116100c25780637c887c59146105955780638b4864d6146105c85780639016af09146105f45780639f181b5e1461061f575f5ffd5b80636a2724621461048657806379502c55146104a55780637a5ebbbb14610562575f5ffd5b80632cc3dc6e1161015257806345ff20de1161012d57806345ff20de1461040b5780634690484014610420578063476343ee14610453578063634282af14610467575f5ffd5b80632cc3dc6e146102ea5780632f237e82146103c55780633fc8cef3146103d8575f5ffd5b806303fd2a45146102055780630d7a94f61461023757806316f430871461026457806317de3c7e14610283578063194a4e7e146102a25780632c880cfd146102b7575f5ffd5b3661020157336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146101ff5760405162461bcd60e51b81526020600482015260026024820152616e6f60f01b60448201526064015b60405180910390fd5b005b5f5ffd5b348015610210575f5ffd5b5061021a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610242575f5ffd5b50610256610251366004613422565b61070c565b60405190815260200161022e565b34801561026f575f5ffd5b506101ff61027e366004613491565b61083e565b34801561028e575f5ffd5b506101ff61029d3660046134e9565b610925565b3480156102ad575f5ffd5b5061025660075481565b3480156102c2575f5ffd5b5061021a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102f5575f5ffd5b506103686103043660046134e9565b60056020525f9081526040902080546001820154600283015460038401546004909401546001600160801b0380851695600160801b958690048216958286169504909116926001600160a01b0380821693600160a01b90920460ff16928116911688565b604080516001600160801b03998a1681529789166020890152958816958701959095529290951660608501526001600160a01b03908116608085015293151560a0840152831660c08301529190911660e08201526101000161022e565b61021a6103d3366004613504565b610b08565b3480156103e3575f5ffd5b5061021a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610416575f5ffd5b5061025660095481565b34801561042b575f5ffd5b5061021a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561045e575f5ffd5b506101ff610ef0565b348015610472575f5ffd5b5061021a6104813660046135a3565b61104f565b348015610491575f5ffd5b506102566104a03660046135ba565b611077565b3480156104b0575f5ffd5b505f54600154600254600354600454610504946001600160801b0380821695600160801b928390048216958183169591849004831694818416949182900484169383811693929092049091169061ffff1689565b604080516001600160801b039a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c084015290921660e082015261ffff9091166101008201526101200161022e565b34801561056d575f5ffd5b5061021a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a0575f5ffd5b5061021a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d3575f5ffd5b506105e76105e23660046135ec565b6114da565b60405161022e919061360c565b3480156105ff575f5ffd5b5061025661060e3660046134e9565b60086020525f908152604090205481565b34801561062a575f5ffd5b50600654610256565b34801561063e575f5ffd5b5061065261064d3660046134e9565b6115da565b60405161022e9190613685565b61025661066d366004613422565b611625565b34801561067d575f5ffd5b506101ff61068c366004613697565b611686565b34801561069c575f5ffd5b506102566106ab366004613422565b611899565b3480156106bb575f5ffd5b506106c5610bb881565b60405162ffffff909116815260200161022e565b3480156106e4575f5ffd5b506101ff6119a7565b3480156106f8575f5ffd5b506101ff610707366004613697565b611a51565b6001600160a01b038281165f90815260056020908152604080832081516101008101835281546001600160801b038082168352600160801b91829004811695830195909552600183015480861694830194909452909204909216606082015260028201548085166080830152600160a01b900460ff16151560a08201526003820154841660c082015260049182015490931660e0840152549091908290612710906107bb9061ffff16866136fa565b6107c59190613725565b6107cf9085613738565b90505f82602001516001600160801b0316835f01516001600160801b03166107f791906136fa565b83519091506108109083906001600160801b031661374b565b61081a9082613725565b83602001516001600160801b03166108329190613738565b93505050505b92915050565b6001600160a01b038481165f908152600560205260409020600201541661087857604051638698bf3760e01b815260040160405180910390fd5b811580159061088957506107d08211155b6108bb5760405162461bcd60e51b81526020600482015260036024820152623632b760e91b60448201526064016101f6565b80336001600160a01b0316856001600160a01b03167f79a41c9e846f4908304bb45dbb5596680263cfc3cb9d5f4bf6e8cdda4c70fcdd60095f81546108ff9061375e565b9182905550604051610917919089908990429061379e565b60405180910390a450505050565b600a546001146109485760405163558a1e0360e11b815260040160405180910390fd5b6002600a556001600160a01b038082165f908152600560205260409020600381015490911661098a57604051638698bf3760e01b815260040160405180910390fd5b6040516322afcccb60e01b8152610bb860048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906322afcccb90602401602060405180830381865afa1580156109f0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1491906137de565b90505f81610a2581620d89e86137f7565b610a2f919061382f565b60038401549091506001600160a01b0316634f1eb3d87f0000000000000000000000000000000000000000000000000000000000000000610a6f84613855565b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152600290810b602483015284900b60448201526001600160801b0360648201819052608482015260a40160408051808303815f875af1158015610ad7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610afb919061388b565b50506001600a5550505050565b5f600a54600114610b2c5760405163558a1e0360e11b815260040160405180910390fd5b6002600a81905560408051610120810182525f546001600160801b038082168352600160801b91829004811660208401526001548082168486015282900481166060840181905294548082166080850152829004811660a084015260035480821660c0850152919091041660e082015260045461ffff1661010082015290519091899189918991899190610bbf906133fe565b610bcd9594939291906138bc565b604051809103905ff080158015610be6573d5f5f3e3d5ffd5b5091505f83610bf5575f610c33565b610c3385858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b9692505050565b9050604051806101000160405280835f01516001600160801b0316815260200183602001516001600160801b031681526020015f6001600160801b031681526020015f6001600160801b03168152602001336001600160a01b031681526020015f151581526020015f6001600160a01b03168152602001826001600160a01b031681525060055f856001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a8154816001600160801b0302191690836001600160801b031602179055506020820151815f0160106101000a8154816001600160801b0302191690836001600160801b031602179055506040820151816001015f6101000a8154816001600160801b0302191690836001600160801b0316021790555060608201518160010160106101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816002015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160020160146101000a81548160ff02191690831515021790555060c0820151816003015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e0820151816004015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050600683908060018154018082558091505060019003905f5260205f20015f9091909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550336001600160a01b0316836001600160a01b03167f3794109b2940f03560225200c3d62de2cb3933623779e29e612558c9876c68dc8b8b8b8b8742604051610ec3969594939291906138fe565b60405180910390a33415610edf57610edd8333345f611c00565b505b50506001600a559695505050505050565b600a54600114610f135760405163558a1e0360e11b815260040160405180910390fd5b6002600a819055600780545f9182905591610f2e9083613725565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610f99576040519150601f19603f3d011682016040523d82523d5f602084013e610f9e565b606091505b505090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168385610fd99190613738565b6040515f81818185875af1925050503d805f8114611012576040519150601f19603f3d011682016040523d82523d5f602084013e611017565b606091505b50509050811580611026575080155b15611044576040516312171d8360e31b815260040160405180910390fd5b50506001600a555050565b6006818154811061105e575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f600a5460011461109b5760405163558a1e0360e11b815260040160405180910390fd5b6002600a8190556001600160a01b038086165f90815260056020526040902091820154166110dc57604051638698bf3760e01b815260040160405180910390fd5b6002810154600160a01b900460ff16156111095760405163e6a0d45f60e01b815260040160405180910390fd5b835f0361112957604051631f2a200560e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd906064016020604051808303815f875af1158015611179573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119d9190613952565b6111ba576040516312171d8360e31b815260040160405180910390fd5b80545f906111da906001600160801b03600160801b8204811691166136fa565b82549091505f906111fc908790600160801b90046001600160801b031661374b565b90505f61120b836001846121d6565b84549091505f906112269083906001600160801b0316613738565b60408051610120810182525f80546001600160801b038082168452600160801b91829004811660208501526001548082169585019590955293819004841660608401526002548085166080850152819004841660a084015260035480851660c08501520490921660e082015260045461ffff16610100820181905292935091612710906112b390856136fa565b6112bd9190613725565b90506112c98184613738565b9750888810156112ec576040516307dd37f760e41b815260040160405180910390fd5b6001600160801b03858116600160801b0281861617885560018801805485925f916113199185911661396b565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550898760010160108282829054906101000a90046001600160801b0316611363919061396b565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505f6004826113959190613725565b60028901546001600160a01b03165f908152600860205260408120805492935083929091906113c590849061374b565b909155506113d590508183613738565b60075f8282546113e5919061374b565b90915550508754604080515f8152602081018c90528082018e90526001600160801b038084166060830152600160801b90930490921660808301524260a08301525133916001600160a01b038f16917f0a38127bb1cb57f59a07ab59465f9450f42ec6abad96b0945d54d4bc16bc6a7b9181900360c00190a36040515f9033908b908381818185875af1925050503d805f811461149d576040519150601f19603f3d011682016040523d82523d5f602084013e6114a2565b606091505b50509050806114c4576040516312171d8360e31b815260040160405180910390fd5b50506001600a5550959998505050505050505050565b6006546060908084106114fc575050604080515f815260208101909152610838565b80611507848661374b565b111561151a576115178482613738565b92505b8267ffffffffffffffff8111156115335761153361398a565b60405190808252806020026020018201604052801561155c578160200160208202803683370190505b5091505f5b838110156115d2576006611575828761374b565b815481106115855761158561399e565b905f5260205f20015f9054906101000a90046001600160a01b03168382815181106115b2576115b261399e565b6001600160a01b0390921660209283029190910190910152600101611561565b505092915050565b6001600160a01b038082165f9081526005602052604090206004015460609116801561160e5761160981612212565b61161e565b60405180602001604052805f8152505b9392505050565b5f600a546001146116495760405163558a1e0360e11b815260040160405180910390fd5b6002600a55345f0361166e57604051631f2a200560e01b815260040160405180910390fd5b61167a83333485611c00565b6001600a559392505050565b5f611693828401846134e9565b6001600160a01b038181165f908152600560205260409020600301549192501633146116d257604051636f61f64160e01b815260040160405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031610611733577f000000000000000000000000000000000000000000000000000000000000000082611756565b817f00000000000000000000000000000000000000000000000000000000000000005b5090505f5f836001600160a01b0316836001600160a01b03161461177b57868861177e565b87875b909250905080156118195760405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303815f875af11580156117f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118179190613952565b505b811561188f5760405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0385169063a9059cbb906044016020604051808303815f875af1158015611869573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188d9190613952565b505b5050505050505050565b6001600160a01b038281165f90815260056020908152604080832081516101008101835281546001600160801b03808216808452600160801b92839004821696840187905260018501548083169685019690965291909404909316606082015260028201548087166080830152600160a01b900460ff16151560a08201526003820154861660c082015260049091015490941660e0850152919291839161193f916136fa565b90505f6119668260018786602001516001600160801b0316611961919061374b565b6121d6565b835161197b91906001600160801b0316613738565b600454909150612710906119939061ffff16836136fa565b61199d9190613725565b6108329082613738565b600a546001146119ca5760405163558a1e0360e11b815260040160405180910390fd5b6002600a55335f81815260086020526040808220805490839055905190929083908381818185875af1925050503d805f8114611a21576040519150601f19603f3d011682016040523d82523d5f602084013e611a26565b606091505b5050905080611a48576040516312171d8360e31b815260040160405180910390fd5b50506001600a55565b5f611a5e828401846134e9565b6001600160a01b038181165f90815260056020526040902060030154919250163314611a9d57604051636f61f64160e01b815260040160405180910390fd5b5f851315611b16575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031610611b05577f0000000000000000000000000000000000000000000000000000000000000000611b07565b815b9050611b1481838861228b565b505b5f841315611b8f575f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031610611b5e5781611b80565b7f00000000000000000000000000000000000000000000000000000000000000005b9050611b8d81838761228b565b505b5050505050565b5f5f82516001611ba6919061374b565b83604051602001611bb89291906139b2565b60405160208183030381529060405290508051602082015ff091506001600160a01b038216611bfa57604051630664f79960e01b815260040160405180910390fd5b50919050565b6001600160a01b038085165f90815260056020526040812060028101549192909116611c3f57604051638698bf3760e01b815260040160405180910390fd5b6002810154600160a01b900460ff1615611c6c5760405163e6a0d45f60e01b815260040160405180910390fd5b60408051610120810182525f80546001600160801b038082168452600160801b9182900481166020850152600180548083169686019690965294829004811660608501526002548082166080860152829004811660a085015260035480821660c086015291909104811660e084015260045461ffff16610100840181905293850154929392169161271090611d0190896136fa565b611d0b9190613725565b90505f611d188289613738565b600186015460808601519192505f918291611d3e916001600160801b039091169061396b565b6001600160801b0316905080831115611d96575f611d7582612710896101000151612710611d6c91906139fb565b61ffff166121d6565b9050611d81818c613738565b9250611d8d8282613738565b909a5093509150815b5085545f90611db7906001600160801b03600160801b8204811691166136fa565b87549091505f90611dd29085906001600160801b031661374b565b90505f611ddf8284613725565b8954909150611dff908290600160801b90046001600160801b0316613738565b99508a8a1015611e22576040516307dd37f760e41b815260040160405180910390fd5b895f03611e4257604051631f2a200560e01b815260040160405180910390fd5b6001600160801b03818116600160801b02818416178a5560018a01805487925f91611e6f91859116613a15565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550898960010160108282829054906101000a90046001600160801b0316611eb99190613a15565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050505f600484611eee9190613725565b60028801546001600160a01b03165f90815260086020526040812080549293508392909190611f1e90849061374b565b90915550611f2e90508185613738565b60075f828254611f3e919061374b565b92505081905550508460e001516001600160801b0316846001600160801b0316108015611f7b575060028601546001600160a01b038b8116911614155b156120255760c08501516040516370a0823160e01b81526001600160a01b038c811660048301526001600160801b03909216918991908e16906370a0823190602401602060405180830381865afa158015611fd8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ffc9190613a34565b612006919061374b565b111561202557604051639404868360e01b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018990528c169063a9059cbb906044016020604051808303815f875af1158015612071573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120959190613952565b6120b2576040516312171d8360e31b815260040160405180910390fd5b85546040805160018152602081018c90528082018a90526001600160801b038084166060830152600160801b90930490921660808301524260a0830152516001600160a01b038c811692908e16917f0a38127bb1cb57f59a07ab59465f9450f42ec6abad96b0945d54d4bc16bc6a7b9181900360c00190a3608085015160018701546001600160801b03918216911610612150576121508b8761238c565b80156121c8575f8a6001600160a01b0316826040515f6040518083038185875af1925050503d805f811461219f576040519150601f19603f3d011682016040523d82523d5f602084013e6121a4565b606091505b50509050806121c6576040516312171d8360e31b815260040160405180910390fd5b505b505050505050949350505050565b5f6121e284848461281f565b90505f82806121f3576121f3613711565b848609111561161e575f198110612208575f5ffd5b6001019392505050565b6060813b5f81900361223357505060408051602081019091525f8152919050565b5f19018067ffffffffffffffff81111561224f5761224f61398a565b6040519080825280601f01601f191660200182016040528015612279576020820181803683370190505b50915080600160208401853c50919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036123595760405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044015b6020604051808303815f875af115801561232f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123539190613952565b50505050565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401612313565b60028181018054600160a01b60ff60a01b199091161790555460078054600160801b9092046001600160801b0316918291905f906123cb90849061374b565b909155505060018201545f906123eb9083906001600160801b0316613738565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038616906370a0823190602401602060405180830381865afa158015612432573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124569190613a34565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b1580156124b1575f5ffd5b505af11580156124c3573d5f5f3e3d5ffd5b50505050505f5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b03161061252b577f00000000000000000000000000000000000000000000000000000000000000008861254e565b877f00000000000000000000000000000000000000000000000000000000000000005b604051630b4c774160e11b81526001600160a01b0380841660048301528083166024830152610bb860448301529294509092507f000000000000000000000000000000000000000000000000000000000000000090911690631698ee8290606401602060405180830381865afa1580156125ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ee9190613a4b565b92506001600160a01b03831661269a5760405163a167129560e01b81526001600160a01b0383811660048301528281166024830152610bb860448301527f0000000000000000000000000000000000000000000000000000000000000000169063a1671295906064016020604051808303815f875af1158015612673573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126979190613a4b565b92505b50506003850180546001600160a01b0319166001600160a01b03838116919091179091555f9081907f00000000000000000000000000000000000000000000000000000000000000008116908916106126f45784846126f7565b83855b915091505f61271361270e83600160c01b8661281f565b6128c9565b90505f612721858b846129bd565b905061272e60c883613a66565b6127389083613a94565b6001600160a01b0316816001600160a01b03161015801561277f575061275f60c883613a66565b6127699083613ab3565b6001600160a01b0316816001600160a01b031611155b6127b35760405162461bcd60e51b8152602060048201526005602482015264707269636560d81b60448201526064016101f6565b6127be858b83612d1b565b50604080516001600160a01b03868116825260208201899052918101879052426060820152908a16907f487dc7f66c623fb0ff13f9024a3ff9675453d069e075eceb12d9f8d7870e23749060800160405180910390a2505050505050505050565b5f80805f19858709858702925082811083820303915050805f03612853575f8411612848575f5ffd5b50829004905061161e565b80841161285e575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f815f036128d857505f919050565b816001600160801b82106128f15760809190911c9060401b5b68010000000000000000821061290c5760409190911c9060201b5b64010000000082106129235760209190911c9060101b5b6201000082106129385760109190911c9060081b5b610100821061294c5760089190911c9060041b5b6010821061295f5760049190911c9060021b5b6004821061296b5760011b5b8092505f5b600781101561299b5760016129858587613725565b61298f908661374b565b901c9350600101612970565b505f6129a78486613725565b9050838110156129b5578093505b505050919050565b60405163f637731d60e01b81526001600160a01b0382811660048301525f919085169063f637731d906024015f604051808303815f87803b158015612a00575f5ffd5b505af1925050508015612a11575060015b50836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015612a4e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a729190613ae3565b5094955050506001600160a01b0380851690861614925061161e915050576001600160a01b0380831682821611905f907f00000000000000000000000000000000000000000000000000000000000000008116908616108214612af5577f0000000000000000000000000000000000000000000000000000000000000000612af7565b845b90505f856001600160a01b0316826001600160a01b031614612b9e576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612b75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b999190613a34565b612c04565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa158015612be0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c049190613a34565b9050866001600160a01b031663128acb08308584898b604051602001612c3991906001600160a01b0391909116815260200190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612c68959493929190613b6d565b60408051808303815f875af1158015612c83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ca79190613bb2565b5050866001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015612ce5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d099190613ae3565b50949c9b505050505050505050505050565b6040516322afcccb60e01b8152610bb860048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906322afcccb90602401602060405180830381865afa158015612d81573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612da591906137de565b90505f81612db681620d89e86137f7565b612dc0919061382f565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038616906370a0823190602401602060405180830381865afa158015612e07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e2b9190613a34565b6040516370a0823160e01b81523060048201529091505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015612e92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eb69190613a34565b90505f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b031610612efa578284612efd565b83835b915091505f613031887f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b723235889612f3f90613855565b6040516001600160e01b031960e084901b16815260029190910b6004820152602401602060405180830381865afa158015612f7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fa09190613a4b565b6040516316e4646b60e31b815260028a900b60048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b723235890602401602060405180830381865afa158015613006573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061302a9190613a4b565b86866132f9565b9050613040620f424082613bd4565b61304a908261396b565b90506001600160a01b038a16633c8a7d8d3061306589613855565b604080516001600160a01b038f1660208201528b918791016040516020818303038152906040526040518663ffffffff1660e01b81526004016130ac959493929190613c01565b60408051808303815f875af11580156130c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130eb9190613bb2565b50506040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015613151573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131759190613a34565b9050801561320957604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b1580156131dc575f5ffd5b505af11580156131ee573d5f5f3e3d5ffd5b505050508060075f828254613203919061374b565b90915550505b6040516370a0823160e01b81523060048201525f906001600160a01b038c16906370a0823190602401602060405180830381865afa15801561324d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132719190613a34565b905080156132eb5760405163a9059cbb60e01b815261dead6004820152602481018290526001600160a01b038c169063a9059cbb906044016020604051808303815f875af11580156132c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132e99190613952565b505b505050505050505050505050565b5f846001600160a01b0316866001600160a01b0316116133215761331e856001613ab3565b95505b836001600160a01b0316866001600160a01b03161061334857613345600185613a94565b95505b5f61336a876001600160a01b0316866001600160a01b0316600160601b61281f565b90505f61338a858361337c8b8a613a94565b6001600160a01b031661281f565b90505f6133a085600160601b61337c8b8d613a94565b90505f8183106133b057816133b2565b825b90506001600160801b038111156133f15760405162461bcd60e51b81526020600482015260036024820152626c697160e81b60448201526064016101f6565b9998505050505050505050565b61089a80613c4383390190565b6001600160a01b038116811461341f575f5ffd5b50565b5f5f60408385031215613433575f5ffd5b823561343e8161340b565b946020939093013593505050565b5f5f83601f84011261345c575f5ffd5b50813567ffffffffffffffff811115613473575f5ffd5b60208301915083602082850101111561348a575f5ffd5b9250929050565b5f5f5f5f606085870312156134a4575f5ffd5b84356134af8161340b565b9350602085013567ffffffffffffffff8111156134ca575f5ffd5b6134d68782880161344c565b9598909750949560400135949350505050565b5f602082840312156134f9575f5ffd5b813561161e8161340b565b5f5f5f5f5f5f60608789031215613519575f5ffd5b863567ffffffffffffffff81111561352f575f5ffd5b61353b89828a0161344c565b909750955050602087013567ffffffffffffffff81111561355a575f5ffd5b61356689828a0161344c565b909550935050604087013567ffffffffffffffff811115613585575f5ffd5b61359189828a0161344c565b979a9699509497509295939492505050565b5f602082840312156135b3575f5ffd5b5035919050565b5f5f5f606084860312156135cc575f5ffd5b83356135d78161340b565b95602085013595506040909401359392505050565b5f5f604083850312156135fd575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b8181101561364c5783516001600160a01b0316835260209384019390920191600101613625565b509095945050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61161e6020830184613657565b5f5f5f5f606085870312156136aa575f5ffd5b8435935060208501359250604085013567ffffffffffffffff8111156136ce575f5ffd5b6136da8782880161344c565b95989497509550505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610838576108386136e6565b634e487b7160e01b5f52601260045260245ffd5b5f8261373357613733613711565b500490565b81810381811115610838576108386136e6565b80820180821115610838576108386136e6565b5f6001820161376f5761376f6136e6565b5060010190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b848152606060208201525f6137b7606083018587613776565b905082604083015295945050505050565b8051600281900b81146137d9575f5ffd5b919050565b5f602082840312156137ee575f5ffd5b61161e826137c8565b5f8160020b8360020b8061380d5761380d613711565b627fffff1982145f1982141615613826576138266136e6565b90059392505050565b5f8260020b8260020b028060020b915080821461384e5761384e6136e6565b5092915050565b5f8160020b627fffff19810361386d5761386d6136e6565b5f0392915050565b80516001600160801b03811681146137d9575f5ffd5b5f5f6040838503121561389c575f5ffd5b6138a583613875565b91506138b360208401613875565b90509250929050565b606081525f6138cf606083018789613776565b82810360208401526138e2818688613776565b9150506001600160801b03831660408301529695505050505050565b608081525f61391160808301888a613776565b8281036020840152613924818789613776565b6001600160a01b03959095166040840152505060600152949350505050565b805180151581146137d9575f5ffd5b5f60208284031215613962575f5ffd5b61161e82613943565b6001600160801b038281168282160390811115610838576108386136e6565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b606160f81b815260f083901b6001600160f01b03191660018201526680600a3d393df360c81b600382015281515f908060208501600b85015e5f9201600b019182525092915050565b61ffff8281168282160390811115610838576108386136e6565b6001600160801b038181168382160190811115610838576108386136e6565b5f60208284031215613a44575f5ffd5b5051919050565b5f60208284031215613a5b575f5ffd5b815161161e8161340b565b5f6001600160a01b03831680613a7e57613a7e613711565b6001600160a01b03929092169190910492915050565b6001600160a01b038281168282160390811115610838576108386136e6565b6001600160a01b038181168382160190811115610838576108386136e6565b805161ffff811681146137d9575f5ffd5b5f5f5f5f5f5f5f60e0888a031215613af9575f5ffd5b8751613b048161340b565b9650613b12602089016137c8565b9550613b2060408901613ad2565b9450613b2e60608901613ad2565b9350613b3c60808901613ad2565b925060a088015160ff81168114613b51575f5ffd5b9150613b5f60c08901613943565b905092959891949750929550565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190525f90613ba790830184613657565b979650505050505050565b5f5f60408385031215613bc3575f5ffd5b505080516020909101519092909150565b5f6001600160801b03831680613bec57613bec613711565b806001600160801b0384160491505092915050565b60018060a01b03861681528460020b60208201528360020b60408201526001600160801b038316606082015260a060808201525f613ba760a083018461365756fe60c060405234801561000f575f5ffd5b5060405161089a38038061089a83398101604081905261002e91610139565b5f6100398482610235565b5060016100468382610235565b5060808190523360a08190525f818152600260209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050506102f3565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126100bf575f5ffd5b81516001600160401b038111156100d8576100d861009c565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101065761010661009c565b60405281815283820160200185101561011d575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f6060848603121561014b575f5ffd5b83516001600160401b03811115610160575f5ffd5b61016c868287016100b0565b602086015190945090506001600160401b03811115610189575f5ffd5b610195868287016100b0565b925050604084015190509250925092565b600181811c908216806101ba57607f821691505b6020821081036101d857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610230578282111561023057805f5260205f20601f840160051c602085101561020957505f5b90810190601f840160051c035f5b8181101561022c575f83820155600101610217565b5050505b505050565b81516001600160401b0381111561024e5761024e61009c565b6102628161025c84546101a6565b846101de565b6020601f821160018114610294575f831561027d5750848201515b5f19600385901b1c1916600184901b1784556102ec565b5f84815260208120601f198516915b828110156102c357878501518255602094850194600190920191016102a3565b50848210156102e057868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b60805160a0516105876103135f395f60a401525f61012001526105875ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c8063313ce56711610063578063313ce5671461016357806370a082311461017d57806395d89b411461019c578063a9059cbb146101a4578063dd62ed3e146101b7575f5ffd5b806302669b521461009f57806306fdde03146100e3578063095ea7b3146100f857806318160ddd1461011b57806323b872dd14610150575b5f5ffd5b6100c67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100eb6101e1565b6040516100da91906103f7565b61010b610106366004610447565b61026c565b60405190151581526020016100da565b6101427f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100da565b61010b61015e36600461046f565b6102d8565b61016b601281565b60405160ff90911681526020016100da565b61014261018b3660046104a9565b60026020525f908152604090205481565b6100eb610347565b61010b6101b2366004610447565b610354565b6101426101c53660046104c9565b600360209081525f928352604080842090915290825290205481565b5f80546101ed906104fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610219906104fa565b80156102645780601f1061023b57610100808354040283529160200191610264565b820191905f5260205f20905b81548152906001019060200180831161024757829003601f168201915b505050505081565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906102c69086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1981146103315761030d8382610532565b6001600160a01b0386165f9081526003602090815260408083203384529091529020555b61033c858585610369565b506001949350505050565b600180546101ed906104fa565b5f610360338484610369565b50600192915050565b6001600160a01b0383165f9081526002602052604081208054839290610390908490610532565b90915550506001600160a01b038083165f81815260026020526040908190208054850190555190918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103ea9085815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610442575f5ffd5b919050565b5f5f60408385031215610458575f5ffd5b6104618361042c565b946020939093013593505050565b5f5f5f60608486031215610481575f5ffd5b61048a8461042c565b92506104986020850161042c565b929592945050506040919091013590565b5f602082840312156104b9575f5ffd5b6104c28261042c565b9392505050565b5f5f604083850312156104da575f5ffd5b6104e38361042c565b91506104f16020840161042c565b90509250929050565b600181811c9082168061050e57607f821691505b60208210810361052c57634e487b7160e01b5f52602260045260245ffd5b50919050565b818103818111156102d257634e487b7160e01b5f52601160045260245ffdfea26469706673582212204393995614b47885b78f6053d1f9a49c596a48b70f94399e48b08983baaf373b64736f6c63430008230033a2646970667358221220ed0e6645ec69602bc4e2f0f5044c29a50a4be5187fb14adaa5de4472b7aab68364736f6c63430008230033000000000000000000000000869c5ae05aae4fd8d6d63f35107f14e8260b8c330000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad730000000000000000000000001684a702f0604c0a87d64a248017a96f6fee11b1000000000000000000000000844d70bc50d75598ad90277ca62b76721e730db2000000000000000000000000844d70bc50d75598ad90277ca62b76721e730db200000000000000000000000000000000000000000000000014d1120d7b1600000000000000000000000000000000000000000000037790968dc8efffd10000000000000000000000000000000000000000000000029009752660ad62af8000000000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000000000003afb087b8769000000000000000000000000000000000000000000000000000002c68af0bb14000000000000000000000000000000000000000000000021165458500521280000000000000000000000000000000000000000000000000000001bc16d674ec8000000000000000000000000000000000000000000000000000000000000000000c8
0x608060405260043610610198575f3560e01c80636a272462116100e7578063c9877a2111610087578063d98b2f5c11610062578063d98b2f5c14610691578063dd1b9c4a146106b0578063e1cd04b4146106d9578063fa461e33146106ed575f5ffd5b8063c9877a2114610633578063cce7ec131461065f578063d348799714610672575f5ffd5b80637c887c59116100c25780637c887c59146105955780638b4864d6146105c85780639016af09146105f45780639f181b5e1461061f575f5ffd5b80636a2724621461048657806379502c55146104a55780637a5ebbbb14610562575f5ffd5b80632cc3dc6e1161015257806345ff20de1161012d57806345ff20de1461040b5780634690484014610420578063476343ee14610453578063634282af14610467575f5ffd5b80632cc3dc6e146102ea5780632f237e82146103c55780633fc8cef3146103d8575f5ffd5b806303fd2a45146102055780630d7a94f61461023757806316f430871461026457806317de3c7e14610283578063194a4e7e146102a25780632c880cfd146102b7575f5ffd5b3661020157336001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7316146101ff5760405162461bcd60e51b81526020600482015260026024820152616e6f60f01b60448201526064015b60405180910390fd5b005b5f5ffd5b348015610210575f5ffd5b5061021a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610242575f5ffd5b50610256610251366004613422565b61070c565b60405190815260200161022e565b34801561026f575f5ffd5b506101ff61027e366004613491565b61083e565b34801561028e575f5ffd5b506101ff61029d3660046134e9565b610925565b3480156102ad575f5ffd5b5061025660075481565b3480156102c2575f5ffd5b5061021a7f0000000000000000000000001684a702f0604c0a87d64a248017a96f6fee11b181565b3480156102f5575f5ffd5b506103686103043660046134e9565b60056020525f9081526040902080546001820154600283015460038401546004909401546001600160801b0380851695600160801b958690048216958286169504909116926001600160a01b0380821693600160a01b90920460ff16928116911688565b604080516001600160801b03998a1681529789166020890152958816958701959095529290951660608501526001600160a01b03908116608085015293151560a0840152831660c08301529190911660e08201526101000161022e565b61021a6103d3366004613504565b610b08565b3480156103e3575f5ffd5b5061021a7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7381565b348015610416575f5ffd5b5061025660095481565b34801561042b575f5ffd5b5061021a7f000000000000000000000000844d70bc50d75598ad90277ca62b76721e730db281565b34801561045e575f5ffd5b506101ff610ef0565b348015610472575f5ffd5b5061021a6104813660046135a3565b61104f565b348015610491575f5ffd5b506102566104a03660046135ba565b611077565b3480156104b0575f5ffd5b505f54600154600254600354600454610504946001600160801b0380821695600160801b928390048216958183169591849004831694818416949182900484169383811693929092049091169061ffff1689565b604080516001600160801b039a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c084015290921660e082015261ffff9091166101008201526101200161022e565b34801561056d575f5ffd5b5061021a7f000000000000000000000000844d70bc50d75598ad90277ca62b76721e730db281565b3480156105a0575f5ffd5b5061021a7f000000000000000000000000869c5ae05aae4fd8d6d63f35107f14e8260b8c3381565b3480156105d3575f5ffd5b506105e76105e23660046135ec565b6114da565b60405161022e919061360c565b3480156105ff575f5ffd5b5061025661060e3660046134e9565b60086020525f908152604090205481565b34801561062a575f5ffd5b50600654610256565b34801561063e575f5ffd5b5061065261064d3660046134e9565b6115da565b60405161022e9190613685565b61025661066d366004613422565b611625565b34801561067d575f5ffd5b506101ff61068c366004613697565b611686565b34801561069c575f5ffd5b506102566106ab366004613422565b611899565b3480156106bb575f5ffd5b506106c5610bb881565b60405162ffffff909116815260200161022e565b3480156106e4575f5ffd5b506101ff6119a7565b3480156106f8575f5ffd5b506101ff610707366004613697565b611a51565b6001600160a01b038281165f90815260056020908152604080832081516101008101835281546001600160801b038082168352600160801b91829004811695830195909552600183015480861694830194909452909204909216606082015260028201548085166080830152600160a01b900460ff16151560a08201526003820154841660c082015260049182015490931660e0840152549091908290612710906107bb9061ffff16866136fa565b6107c59190613725565b6107cf9085613738565b90505f82602001516001600160801b0316835f01516001600160801b03166107f791906136fa565b83519091506108109083906001600160801b031661374b565b61081a9082613725565b83602001516001600160801b03166108329190613738565b93505050505b92915050565b6001600160a01b038481165f908152600560205260409020600201541661087857604051638698bf3760e01b815260040160405180910390fd5b811580159061088957506107d08211155b6108bb5760405162461bcd60e51b81526020600482015260036024820152623632b760e91b60448201526064016101f6565b80336001600160a01b0316856001600160a01b03167f79a41c9e846f4908304bb45dbb5596680263cfc3cb9d5f4bf6e8cdda4c70fcdd60095f81546108ff9061375e565b9182905550604051610917919089908990429061379e565b60405180910390a450505050565b600a546001146109485760405163558a1e0360e11b815260040160405180910390fd5b6002600a556001600160a01b038082165f908152600560205260409020600381015490911661098a57604051638698bf3760e01b815260040160405180910390fd5b6040516322afcccb60e01b8152610bb860048201525f907f000000000000000000000000869c5ae05aae4fd8d6d63f35107f14e8260b8c336001600160a01b0316906322afcccb90602401602060405180830381865afa1580156109f0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1491906137de565b90505f81610a2581620d89e86137f7565b610a2f919061382f565b60038401549091506001600160a01b0316634f1eb3d87f000000000000000000000000844d70bc50d75598ad90277ca62b76721e730db2610a6f84613855565b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152600290810b602483015284900b60448201526001600160801b0360648201819052608482015260a40160408051808303815f875af1158015610ad7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610afb919061388b565b50506001600a5550505050565b5f600a54600114610b2c5760405163558a1e0360e11b815260040160405180910390fd5b6002600a81905560408051610120810182525f546001600160801b038082168352600160801b91829004811660208401526001548082168486015282900481166060840181905294548082166080850152829004811660a084015260035480821660c0850152919091041660e082015260045461ffff1661010082015290519091899189918991899190610bbf906133fe565b610bcd9594939291906138bc565b604051809103905ff080158015610be6573d5f5f3e3d5ffd5b5091505f83610bf5575f610c33565b610c3385858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b9692505050565b9050604051806101000160405280835f01516001600160801b0316815260200183602001516001600160801b031681526020015f6001600160801b031681526020015f6001600160801b03168152602001336001600160a01b031681526020015f151581526020015f6001600160a01b03168152602001826001600160a01b031681525060055f856001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015f6101000a8154816001600160801b0302191690836001600160801b031602179055506020820151815f0160106101000a8154816001600160801b0302191690836001600160801b031602179055506040820151816001015f6101000a8154816001600160801b0302191690836001600160801b0316021790555060608201518160010160106101000a8154816001600160801b0302191690836001600160801b031602179055506080820151816002015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160020160146101000a81548160ff02191690831515021790555060c0820151816003015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e0820151816004015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550905050600683908060018154018082558091505060019003905f5260205f20015f9091909190916101000a8154816001600160a01b0302191690836001600160a01b03160217905550336001600160a01b0316836001600160a01b03167f3794109b2940f03560225200c3d62de2cb3933623779e29e612558c9876c68dc8b8b8b8b8742604051610ec3969594939291906138fe565b60405180910390a33415610edf57610edd8333345f611c00565b505b50506001600a559695505050505050565b600a54600114610f135760405163558a1e0360e11b815260040160405180910390fd5b6002600a819055600780545f9182905591610f2e9083613725565b90505f7f000000000000000000000000844d70bc50d75598ad90277ca62b76721e730db26001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610f99576040519150601f19603f3d011682016040523d82523d5f602084013e610f9e565b606091505b505090505f7f000000000000000000000000844d70bc50d75598ad90277ca62b76721e730db26001600160a01b03168385610fd99190613738565b6040515f81818185875af1925050503d805f8114611012576040519150601f19603f3d011682016040523d82523d5f602084013e611017565b606091505b50509050811580611026575080155b15611044576040516312171d8360e31b815260040160405180910390fd5b50506001600a555050565b6006818154811061105e575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f600a5460011461109b5760405163558a1e0360e11b815260040160405180910390fd5b6002600a8190556001600160a01b038086165f90815260056020526040902091820154166110dc57604051638698bf3760e01b815260040160405180910390fd5b6002810154600160a01b900460ff16156111095760405163e6a0d45f60e01b815260040160405180910390fd5b835f0361112957604051631f2a200560e01b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018590526001600160a01b038616906323b872dd906064016020604051808303815f875af1158015611179573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061119d9190613952565b6111ba576040516312171d8360e31b815260040160405180910390fd5b80545f906111da906001600160801b03600160801b8204811691166136fa565b82549091505f906111fc908790600160801b90046001600160801b031661374b565b90505f61120b836001846121d6565b84549091505f906112269083906001600160801b0316613738565b60408051610120810182525f80546001600160801b038082168452600160801b91829004811660208501526001548082169585019590955293819004841660608401526002548085166080850152819004841660a084015260035480851660c08501520490921660e082015260045461ffff16610100820181905292935091612710906112b390856136fa565b6112bd9190613725565b90506112c98184613738565b9750888810156112ec576040516307dd37f760e41b815260040160405180910390fd5b6001600160801b03858116600160801b0281861617885560018801805485925f916113199185911661396b565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550898760010160108282829054906101000a90046001600160801b0316611363919061396b565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505f6004826113959190613725565b60028901546001600160a01b03165f908152600860205260408120805492935083929091906113c590849061374b565b909155506113d590508183613738565b60075f8282546113e5919061374b565b90915550508754604080515f8152602081018c90528082018e90526001600160801b038084166060830152600160801b90930490921660808301524260a08301525133916001600160a01b038f16917f0a38127bb1cb57f59a07ab59465f9450f42ec6abad96b0945d54d4bc16bc6a7b9181900360c00190a36040515f9033908b908381818185875af1925050503d805f811461149d576040519150601f19603f3d011682016040523d82523d5f602084013e6114a2565b606091505b50509050806114c4576040516312171d8360e31b815260040160405180910390fd5b50506001600a5550959998505050505050505050565b6006546060908084106114fc575050604080515f815260208101909152610838565b80611507848661374b565b111561151a576115178482613738565b92505b8267ffffffffffffffff8111156115335761153361398a565b60405190808252806020026020018201604052801561155c578160200160208202803683370190505b5091505f5b838110156115d2576006611575828761374b565b815481106115855761158561399e565b905f5260205f20015f9054906101000a90046001600160a01b03168382815181106115b2576115b261399e565b6001600160a01b0390921660209283029190910190910152600101611561565b505092915050565b6001600160a01b038082165f9081526005602052604090206004015460609116801561160e5761160981612212565b61161e565b60405180602001604052805f8152505b9392505050565b5f600a546001146116495760405163558a1e0360e11b815260040160405180910390fd5b6002600a55345f0361166e57604051631f2a200560e01b815260040160405180910390fd5b61167a83333485611c00565b6001600a559392505050565b5f611693828401846134e9565b6001600160a01b038181165f908152600560205260409020600301549192501633146116d257604051636f61f64160e01b815260040160405180910390fd5b5f7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b0316826001600160a01b031610611733577f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7382611756565b817f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad735b5090505f5f836001600160a01b0316836001600160a01b03161461177b57868861177e565b87875b909250905080156118195760405163a9059cbb60e01b8152336004820152602481018290527f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03169063a9059cbb906044016020604051808303815f875af11580156117f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118179190613952565b505b811561188f5760405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0385169063a9059cbb906044016020604051808303815f875af1158015611869573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188d9190613952565b505b5050505050505050565b6001600160a01b038281165f90815260056020908152604080832081516101008101835281546001600160801b03808216808452600160801b92839004821696840187905260018501548083169685019690965291909404909316606082015260028201548087166080830152600160a01b900460ff16151560a08201526003820154861660c082015260049091015490941660e0850152919291839161193f916136fa565b90505f6119668260018786602001516001600160801b0316611961919061374b565b6121d6565b835161197b91906001600160801b0316613738565b600454909150612710906119939061ffff16836136fa565b61199d9190613725565b6108329082613738565b600a546001146119ca5760405163558a1e0360e11b815260040160405180910390fd5b6002600a55335f81815260086020526040808220805490839055905190929083908381818185875af1925050503d805f8114611a21576040519150601f19603f3d011682016040523d82523d5f602084013e611a26565b606091505b5050905080611a48576040516312171d8360e31b815260040160405180910390fd5b50506001600a55565b5f611a5e828401846134e9565b6001600160a01b038181165f90815260056020526040902060030154919250163314611a9d57604051636f61f64160e01b815260040160405180910390fd5b5f851315611b16575f7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b0316826001600160a01b031610611b05577f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73611b07565b815b9050611b1481838861228b565b505b5f841315611b8f575f7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b0316826001600160a01b031610611b5e5781611b80565b7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad735b9050611b8d81838761228b565b505b5050505050565b5f5f82516001611ba6919061374b565b83604051602001611bb89291906139b2565b60405160208183030381529060405290508051602082015ff091506001600160a01b038216611bfa57604051630664f79960e01b815260040160405180910390fd5b50919050565b6001600160a01b038085165f90815260056020526040812060028101549192909116611c3f57604051638698bf3760e01b815260040160405180910390fd5b6002810154600160a01b900460ff1615611c6c5760405163e6a0d45f60e01b815260040160405180910390fd5b60408051610120810182525f80546001600160801b038082168452600160801b9182900481166020850152600180548083169686019690965294829004811660608501526002548082166080860152829004811660a085015260035480821660c086015291909104811660e084015260045461ffff16610100840181905293850154929392169161271090611d0190896136fa565b611d0b9190613725565b90505f611d188289613738565b600186015460808601519192505f918291611d3e916001600160801b039091169061396b565b6001600160801b0316905080831115611d96575f611d7582612710896101000151612710611d6c91906139fb565b61ffff166121d6565b9050611d81818c613738565b9250611d8d8282613738565b909a5093509150815b5085545f90611db7906001600160801b03600160801b8204811691166136fa565b87549091505f90611dd29085906001600160801b031661374b565b90505f611ddf8284613725565b8954909150611dff908290600160801b90046001600160801b0316613738565b99508a8a1015611e22576040516307dd37f760e41b815260040160405180910390fd5b895f03611e4257604051631f2a200560e01b815260040160405180910390fd5b6001600160801b03818116600160801b02818416178a5560018a01805487925f91611e6f91859116613a15565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550898960010160108282829054906101000a90046001600160801b0316611eb99190613a15565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050505f600484611eee9190613725565b60028801546001600160a01b03165f90815260086020526040812080549293508392909190611f1e90849061374b565b90915550611f2e90508185613738565b60075f828254611f3e919061374b565b92505081905550508460e001516001600160801b0316846001600160801b0316108015611f7b575060028601546001600160a01b038b8116911614155b156120255760c08501516040516370a0823160e01b81526001600160a01b038c811660048301526001600160801b03909216918991908e16906370a0823190602401602060405180830381865afa158015611fd8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ffc9190613a34565b612006919061374b565b111561202557604051639404868360e01b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b038b81166004830152602482018990528c169063a9059cbb906044016020604051808303815f875af1158015612071573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120959190613952565b6120b2576040516312171d8360e31b815260040160405180910390fd5b85546040805160018152602081018c90528082018a90526001600160801b038084166060830152600160801b90930490921660808301524260a0830152516001600160a01b038c811692908e16917f0a38127bb1cb57f59a07ab59465f9450f42ec6abad96b0945d54d4bc16bc6a7b9181900360c00190a3608085015160018701546001600160801b03918216911610612150576121508b8761238c565b80156121c8575f8a6001600160a01b0316826040515f6040518083038185875af1925050503d805f811461219f576040519150601f19603f3d011682016040523d82523d5f602084013e6121a4565b606091505b50509050806121c6576040516312171d8360e31b815260040160405180910390fd5b505b505050505050949350505050565b5f6121e284848461281f565b90505f82806121f3576121f3613711565b848609111561161e575f198110612208575f5ffd5b6001019392505050565b6060813b5f81900361223357505060408051602081019091525f8152919050565b5f19018067ffffffffffffffff81111561224f5761224f61398a565b6040519080825280601f01601f191660200182016040528015612279576020820181803683370190505b50915080600160208401853c50919050565b7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b0316836001600160a01b0316036123595760405163a9059cbb60e01b8152336004820152602481018290527f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03169063a9059cbb906044015b6020604051808303815f875af115801561232f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123539190613952565b50505050565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401612313565b60028181018054600160a01b60ff60a01b199091161790555460078054600160801b9092046001600160801b0316918291905f906123cb90849061374b565b909155505060018201545f906123eb9083906001600160801b0316613738565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038616906370a0823190602401602060405180830381865afa158015612432573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124569190613a34565b90507f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b1580156124b1575f5ffd5b505af11580156124c3573d5f5f3e3d5ffd5b50505050505f5f5f7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b0316886001600160a01b03161061252b577f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad738861254e565b877f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad735b604051630b4c774160e11b81526001600160a01b0380841660048301528083166024830152610bb860448301529294509092507f000000000000000000000000869c5ae05aae4fd8d6d63f35107f14e8260b8c3390911690631698ee8290606401602060405180830381865afa1580156125ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ee9190613a4b565b92506001600160a01b03831661269a5760405163a167129560e01b81526001600160a01b0383811660048301528281166024830152610bb860448301527f000000000000000000000000869c5ae05aae4fd8d6d63f35107f14e8260b8c33169063a1671295906064016020604051808303815f875af1158015612673573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126979190613a4b565b92505b50506003850180546001600160a01b0319166001600160a01b03838116919091179091555f9081907f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad738116908916106126f45784846126f7565b83855b915091505f61271361270e83600160c01b8661281f565b6128c9565b90505f612721858b846129bd565b905061272e60c883613a66565b6127389083613a94565b6001600160a01b0316816001600160a01b03161015801561277f575061275f60c883613a66565b6127699083613ab3565b6001600160a01b0316816001600160a01b031611155b6127b35760405162461bcd60e51b8152602060048201526005602482015264707269636560d81b60448201526064016101f6565b6127be858b83612d1b565b50604080516001600160a01b03868116825260208201899052918101879052426060820152908a16907f487dc7f66c623fb0ff13f9024a3ff9675453d069e075eceb12d9f8d7870e23749060800160405180910390a2505050505050505050565b5f80805f19858709858702925082811083820303915050805f03612853575f8411612848575f5ffd5b50829004905061161e565b80841161285e575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f815f036128d857505f919050565b816001600160801b82106128f15760809190911c9060401b5b68010000000000000000821061290c5760409190911c9060201b5b64010000000082106129235760209190911c9060101b5b6201000082106129385760109190911c9060081b5b610100821061294c5760089190911c9060041b5b6010821061295f5760049190911c9060021b5b6004821061296b5760011b5b8092505f5b600781101561299b5760016129858587613725565b61298f908661374b565b901c9350600101612970565b505f6129a78486613725565b9050838110156129b5578093505b505050919050565b60405163f637731d60e01b81526001600160a01b0382811660048301525f919085169063f637731d906024015f604051808303815f87803b158015612a00575f5ffd5b505af1925050508015612a11575060015b50836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015612a4e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a729190613ae3565b5094955050506001600160a01b0380851690861614925061161e915050576001600160a01b0380831682821611905f907f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad738116908616108214612af5577f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad73612af7565b845b90505f856001600160a01b0316826001600160a01b031614612b9e576040516370a0823160e01b81523060048201527f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b0316906370a0823190602401602060405180830381865afa158015612b75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b999190613a34565b612c04565b6040516370a0823160e01b81523060048201526001600160a01b038716906370a0823190602401602060405180830381865afa158015612be0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c049190613a34565b9050866001600160a01b031663128acb08308584898b604051602001612c3991906001600160a01b0391909116815260200190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612c68959493929190613b6d565b60408051808303815f875af1158015612c83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ca79190613bb2565b5050866001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015612ce5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d099190613ae3565b50949c9b505050505050505050505050565b6040516322afcccb60e01b8152610bb860048201525f907f000000000000000000000000869c5ae05aae4fd8d6d63f35107f14e8260b8c336001600160a01b0316906322afcccb90602401602060405180830381865afa158015612d81573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612da591906137de565b90505f81612db681620d89e86137f7565b612dc0919061382f565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038616906370a0823190602401602060405180830381865afa158015612e07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e2b9190613a34565b6040516370a0823160e01b81523060048201529091505f906001600160a01b037f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7316906370a0823190602401602060405180830381865afa158015612e92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eb69190613a34565b90505f5f7f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b0316886001600160a01b031610612efa578284612efd565b83835b915091505f613031887f0000000000000000000000001684a702f0604c0a87d64a248017a96f6fee11b16001600160a01b031663b723235889612f3f90613855565b6040516001600160e01b031960e084901b16815260029190910b6004820152602401602060405180830381865afa158015612f7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fa09190613a4b565b6040516316e4646b60e31b815260028a900b60048201527f0000000000000000000000001684a702f0604c0a87d64a248017a96f6fee11b16001600160a01b03169063b723235890602401602060405180830381865afa158015613006573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061302a9190613a4b565b86866132f9565b9050613040620f424082613bd4565b61304a908261396b565b90506001600160a01b038a16633c8a7d8d3061306589613855565b604080516001600160a01b038f1660208201528b918791016040516020818303038152906040526040518663ffffffff1660e01b81526004016130ac959493929190613c01565b60408051808303815f875af11580156130c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130eb9190613bb2565b50506040516370a0823160e01b81523060048201525f907f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b0316906370a0823190602401602060405180830381865afa158015613151573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131759190613a34565b9050801561320957604051632e1a7d4d60e01b8152600481018290527f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b031690632e1a7d4d906024015f604051808303815f87803b1580156131dc575f5ffd5b505af11580156131ee573d5f5f3e3d5ffd5b505050508060075f828254613203919061374b565b90915550505b6040516370a0823160e01b81523060048201525f906001600160a01b038c16906370a0823190602401602060405180830381865afa15801561324d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132719190613a34565b905080156132eb5760405163a9059cbb60e01b815261dead6004820152602481018290526001600160a01b038c169063a9059cbb906044016020604051808303815f875af11580156132c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132e99190613952565b505b505050505050505050505050565b5f846001600160a01b0316866001600160a01b0316116133215761331e856001613ab3565b95505b836001600160a01b0316866001600160a01b03161061334857613345600185613a94565b95505b5f61336a876001600160a01b0316866001600160a01b0316600160601b61281f565b90505f61338a858361337c8b8a613a94565b6001600160a01b031661281f565b90505f6133a085600160601b61337c8b8d613a94565b90505f8183106133b057816133b2565b825b90506001600160801b038111156133f15760405162461bcd60e51b81526020600482015260036024820152626c697160e81b60448201526064016101f6565b9998505050505050505050565b61089a80613c4383390190565b6001600160a01b038116811461341f575f5ffd5b50565b5f5f60408385031215613433575f5ffd5b823561343e8161340b565b946020939093013593505050565b5f5f83601f84011261345c575f5ffd5b50813567ffffffffffffffff811115613473575f5ffd5b60208301915083602082850101111561348a575f5ffd5b9250929050565b5f5f5f5f606085870312156134a4575f5ffd5b84356134af8161340b565b9350602085013567ffffffffffffffff8111156134ca575f5ffd5b6134d68782880161344c565b9598909750949560400135949350505050565b5f602082840312156134f9575f5ffd5b813561161e8161340b565b5f5f5f5f5f5f60608789031215613519575f5ffd5b863567ffffffffffffffff81111561352f575f5ffd5b61353b89828a0161344c565b909750955050602087013567ffffffffffffffff81111561355a575f5ffd5b61356689828a0161344c565b909550935050604087013567ffffffffffffffff811115613585575f5ffd5b61359189828a0161344c565b979a9699509497509295939492505050565b5f602082840312156135b3575f5ffd5b5035919050565b5f5f5f606084860312156135cc575f5ffd5b83356135d78161340b565b95602085013595506040909401359392505050565b5f5f604083850312156135fd575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b8181101561364c5783516001600160a01b0316835260209384019390920191600101613625565b509095945050505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61161e6020830184613657565b5f5f5f5f606085870312156136aa575f5ffd5b8435935060208501359250604085013567ffffffffffffffff8111156136ce575f5ffd5b6136da8782880161344c565b95989497509550505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610838576108386136e6565b634e487b7160e01b5f52601260045260245ffd5b5f8261373357613733613711565b500490565b81810381811115610838576108386136e6565b80820180821115610838576108386136e6565b5f6001820161376f5761376f6136e6565b5060010190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b848152606060208201525f6137b7606083018587613776565b905082604083015295945050505050565b8051600281900b81146137d9575f5ffd5b919050565b5f602082840312156137ee575f5ffd5b61161e826137c8565b5f8160020b8360020b8061380d5761380d613711565b627fffff1982145f1982141615613826576138266136e6565b90059392505050565b5f8260020b8260020b028060020b915080821461384e5761384e6136e6565b5092915050565b5f8160020b627fffff19810361386d5761386d6136e6565b5f0392915050565b80516001600160801b03811681146137d9575f5ffd5b5f5f6040838503121561389c575f5ffd5b6138a583613875565b91506138b360208401613875565b90509250929050565b606081525f6138cf606083018789613776565b82810360208401526138e2818688613776565b9150506001600160801b03831660408301529695505050505050565b608081525f61391160808301888a613776565b8281036020840152613924818789613776565b6001600160a01b03959095166040840152505060600152949350505050565b805180151581146137d9575f5ffd5b5f60208284031215613962575f5ffd5b61161e82613943565b6001600160801b038281168282160390811115610838576108386136e6565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b606160f81b815260f083901b6001600160f01b03191660018201526680600a3d393df360c81b600382015281515f908060208501600b85015e5f9201600b019182525092915050565b61ffff8281168282160390811115610838576108386136e6565b6001600160801b038181168382160190811115610838576108386136e6565b5f60208284031215613a44575f5ffd5b5051919050565b5f60208284031215613a5b575f5ffd5b815161161e8161340b565b5f6001600160a01b03831680613a7e57613a7e613711565b6001600160a01b03929092169190910492915050565b6001600160a01b038281168282160390811115610838576108386136e6565b6001600160a01b038181168382160190811115610838576108386136e6565b805161ffff811681146137d9575f5ffd5b5f5f5f5f5f5f5f60e0888a031215613af9575f5ffd5b8751613b048161340b565b9650613b12602089016137c8565b9550613b2060408901613ad2565b9450613b2e60608901613ad2565b9350613b3c60808901613ad2565b925060a088015160ff81168114613b51575f5ffd5b9150613b5f60c08901613943565b905092959891949750929550565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190525f90613ba790830184613657565b979650505050505050565b5f5f60408385031215613bc3575f5ffd5b505080516020909101519092909150565b5f6001600160801b03831680613bec57613bec613711565b806001600160801b0384160491505092915050565b60018060a01b03861681528460020b60208201528360020b60408201526001600160801b038316606082015260a060808201525f613ba760a083018461365756fe60c060405234801561000f575f5ffd5b5060405161089a38038061089a83398101604081905261002e91610139565b5f6100398482610235565b5060016100468382610235565b5060808190523360a08190525f818152600260209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050506102f3565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126100bf575f5ffd5b81516001600160401b038111156100d8576100d861009c565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101065761010661009c565b60405281815283820160200185101561011d575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f6060848603121561014b575f5ffd5b83516001600160401b03811115610160575f5ffd5b61016c868287016100b0565b602086015190945090506001600160401b03811115610189575f5ffd5b610195868287016100b0565b925050604084015190509250925092565b600181811c908216806101ba57607f821691505b6020821081036101d857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610230578282111561023057805f5260205f20601f840160051c602085101561020957505f5b90810190601f840160051c035f5b8181101561022c575f83820155600101610217565b5050505b505050565b81516001600160401b0381111561024e5761024e61009c565b6102628161025c84546101a6565b846101de565b6020601f821160018114610294575f831561027d5750848201515b5f19600385901b1c1916600184901b1784556102ec565b5f84815260208120601f198516915b828110156102c357878501518255602094850194600190920191016102a3565b50848210156102e057868401515f19600387901b60f8161c191681555b505060018360011b0184555b5050505050565b60805160a0516105876103135f395f60a401525f61012001526105875ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c8063313ce56711610063578063313ce5671461016357806370a082311461017d57806395d89b411461019c578063a9059cbb146101a4578063dd62ed3e146101b7575f5ffd5b806302669b521461009f57806306fdde03146100e3578063095ea7b3146100f857806318160ddd1461011b57806323b872dd14610150575b5f5ffd5b6100c67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100eb6101e1565b6040516100da91906103f7565b61010b610106366004610447565b61026c565b60405190151581526020016100da565b6101427f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100da565b61010b61015e36600461046f565b6102d8565b61016b601281565b60405160ff90911681526020016100da565b61014261018b3660046104a9565b60026020525f908152604090205481565b6100eb610347565b61010b6101b2366004610447565b610354565b6101426101c53660046104c9565b600360209081525f928352604080842090915290825290205481565b5f80546101ed906104fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610219906104fa565b80156102645780601f1061023b57610100808354040283529160200191610264565b820191905f5260205f20905b81548152906001019060200180831161024757829003601f168201915b505050505081565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906102c69086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1981146103315761030d8382610532565b6001600160a01b0386165f9081526003602090815260408083203384529091529020555b61033c858585610369565b506001949350505050565b600180546101ed906104fa565b5f610360338484610369565b50600192915050565b6001600160a01b0383165f9081526002602052604081208054839290610390908490610532565b90915550506001600160a01b038083165f81815260026020526040908190208054850190555190918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103ea9085815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114610442575f5ffd5b919050565b5f5f60408385031215610458575f5ffd5b6104618361042c565b946020939093013593505050565b5f5f5f60608486031215610481575f5ffd5b61048a8461042c565b92506104986020850161042c565b929592945050506040919091013590565b5f602082840312156104b9575f5ffd5b6104c28261042c565b9392505050565b5f5f604083850312156104da575f5ffd5b6104e38361042c565b91506104f16020840161042c565b90509250929050565b600181811c9082168061050e57607f821691505b60208210810361052c57634e487b7160e01b5f52602260045260245ffd5b50919050565b818103818111156102d257634e487b7160e01b5f52601160045260245ffdfea26469706673582212204393995614b47885b78f6053d1f9a49c596a48b70f94399e48b08983baaf373b64736f6c63430008230033a2646970667358221220ed0e6645ec69602bc4e2f0f5044c29a50a4be5187fb14adaa5de4472b7aab68364736f6c63430008230033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 2 | $0.0000102 | $0 | |
| blockyz (BLKYZ) | BLKYZ | 999,999,999.999998 | — | — |
| 12345OpenMarket (12345MARKET) | 12345MARKET | 999,991,587.745952 | — | — |
| OpenMarket.fun (MARKET) | MARKET | 992,786,010.143749 | — | — |
| Robin Bagz 🦝💰 (BAGZ) | BAGZ | 974,265,032.718492 | — | — |
| OpenMarket.fun (MARKET) | MARKET | 966,057,456.423499 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x5588f8…6d3f33 | 23 days agoFri, 24 Jul 2026 16:21:39 UTC | 0x0a3812…6a7b | [0] 0x000000000000…2abf36a2 [1] 0x000000000000…b145d9b4 data: 0x000000000000000000…6a639113 |
| 0xa2dc2e…133e48 | 24 days agoThu, 23 Jul 2026 14:39:36 UTC | 0x79a41c…fcdd | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…965b1027 [2] 0x000000000000…00000000 data: 0x000000000000000000…00000000 |
| 0xc684c1…53dd3a | 24 days agoThu, 23 Jul 2026 03:29:16 UTC | 0x0a3812…6a7b | [0] 0x000000000000…2acb98e2 [1] 0x000000000000…99222484 data: 0x000000000000000000…6a618a8c |
| 0x1ab3df…812bf5 | 24 days agoThu, 23 Jul 2026 03:28:56 UTC | 0x0a3812…6a7b | [0] 0x000000000000…2acb98e2 [1] 0x000000000000…99222484 data: 0x000000000000000000…6a618a78 |
| 0x26ade3…f401ec | 24 days agoThu, 23 Jul 2026 03:28:48 UTC | 0x0a3812…6a7b | [0] 0x000000000000…2acb98e2 [1] 0x000000000000…99222484 data: 0x000000000000000000…6a618a70 |
| 0xc08431…28f6da | 24 days agoThu, 23 Jul 2026 03:28:43 UTC | 0x0a3812…6a7b | [0] 0x000000000000…2acb98e2 [1] 0x000000000000…99222484 data: 0x000000000000000000…6a618a6b |
| 0xd1c0b0…303c52 | 24 days agoThu, 23 Jul 2026 03:28:36 UTC | 0x0a3812…6a7b | [0] 0x000000000000…2acb98e2 [1] 0x000000000000…99222484 data: 0x000000000000000000…6a618a64 |
| 0xb2f328…f650d4 | 24 days agoThu, 23 Jul 2026 03:28:19 UTC | 0x0a3812…6a7b | [0] 0x000000000000…2acb98e2 [1] 0x000000000000…99222484 data: 0x000000000000000000…6a618a53 |
| 0x373a6f…ce7869 | 24 days agoThu, 23 Jul 2026 03:23:26 UTC | 0x0a3812…6a7b | [0] 0x000000000000…2acb98e2 [1] 0x000000000000…99222484 data: 0x000000000000000000…6a61892e |
| 0x4c5d84…ff2cc9 | 24 days agoThu, 23 Jul 2026 02:59:39 UTC | 0x79a41c…fcdd | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…98b6427e [2] 0x000000000000…00000000 data: 0x000000000000000000…00000000 |
| 0xa7361c…acdbfc | 24 days agoThu, 23 Jul 2026 02:53:41 UTC | 0x0a3812…6a7b | [0] 0x000000000000…99fdfe11 [1] 0x000000000000…965b1027 data: 0x000000000000000000…6a618235 |
| 0x704086…c5a105 | 24 days agoThu, 23 Jul 2026 02:53:32 UTC | 0x0a3812…6a7b | [0] 0x000000000000…99fdfe11 [1] 0x000000000000…965b1027 data: 0x000000000000000000…6a61822c |
| 0x86da5d…04a308 | 24 days agoThu, 23 Jul 2026 02:52:58 UTC | 0x0a3812…6a7b | [0] 0x000000000000…99fdfe11 [1] 0x000000000000…965b1027 data: 0x000000000000000000…6a61820a |
| 0x86da5d…04a308 | 24 days agoThu, 23 Jul 2026 02:52:58 UTC | 0x379410…68dc | [0] 0x000000000000…99fdfe11 [1] 0x000000000000…965b1027 data: 0x000000000000000000…00000000 |
| 0x1dfe20…015bce | 24 days agoThu, 23 Jul 2026 02:39:30 UTC | 0x79a41c…fcdd | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…78e465f0 [2] 0x000000000000…00000000 data: 0x000000000000000000…00000000 |
| 0xe95e68…722f04 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0x487dc7…2374 | [0] 0x000000000000…3bdac5bf data: 0x000000000000000000…6a6174c1 |
| 0xe95e68…722f04 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0x0a3812…6a7b | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…98b6427e data: 0x000000000000000000…6a6174c1 |
| 0x05fac4…527217 | 24 days agoThu, 23 Jul 2026 01:54:05 UTC | 0x79a41c…fcdd | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…0547b489 [2] 0x000000000000…00000000 data: 0x000000000000000000…00000000 |
| 0x3f7457…8b5b46 | 24 days agoThu, 23 Jul 2026 01:44:57 UTC | 0x0a3812…6a7b | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…28de72a2 data: 0x000000000000000000…6a617219 |
| 0x7ad119…2b4c8e | 24 days agoThu, 23 Jul 2026 01:43:11 UTC | 0x0a3812…6a7b | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…28de72a2 data: 0x000000000000000000…6a6171af |
| 0xbc1bf7…82b221 | 24 days agoThu, 23 Jul 2026 01:41:54 UTC | 0x0a3812…6a7b | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…cdee3526 data: 0x000000000000000000…6a617162 |
| 0xccf8fe…f3c857 | 24 days agoThu, 23 Jul 2026 01:35:04 UTC | 0x0a3812…6a7b | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…28de72a2 data: 0x000000000000000000…6a616fc8 |
| 0xebffea…37f942 | 24 days agoThu, 23 Jul 2026 01:33:21 UTC | 0x0a3812…6a7b | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…28de72a2 data: 0x000000000000000000…6a616f61 |
| 0xfb4464…5b0461 | 24 days agoThu, 23 Jul 2026 01:31:12 UTC | 0x0a3812…6a7b | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…4b8adb33 data: 0x000000000000000000…6a616ee0 |
| 0xa604d4…a00f4f | 24 days agoThu, 23 Jul 2026 01:30:45 UTC | 0x0a3812…6a7b | [0] 0x000000000000…3bdac5bf [1] 0x000000000000…4b8adb33 data: 0x000000000000000000…6a616ec5 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x5588f8…6d3f33 | sell | 18,288,426 | 23 days agoFri, 24 Jul 2026 16:21:39 UTC | 0x4d87…d9b4 | IN | HoodPump | $0.000 ETH | 0.00001203 | |
| 0xa2dc2e…133e48 | comment | 17,365,955 | 24 days agoThu, 23 Jul 2026 14:39:36 UTC | 0x9b96…1027 | IN | HoodPump | $0.000 ETH | 0.00000391 | |
| 0xb51060…deb901 | withdrawCreatorFees | 17,036,188 | 24 days agoThu, 23 Jul 2026 05:28:37 UTC | 0x35a9…6155 | IN | HoodPump | $0.000 ETH | 0.00000300 | |
| 0xd0a372…cc55f5 | withdrawFees | 16,979,777 | 24 days agoThu, 23 Jul 2026 03:54:15 UTC | 0x35a9…6155 | IN | HoodPump | $0.000 ETH | 0.00000393 | |
| 0xc684c1…53dd3a | buy | 16,964,846 | 24 days agoThu, 23 Jul 2026 03:29:16 UTC | 0x48f7…2484 | IN | HoodPump | $0.840.00045 ETH | 0.00000783 | |
| 0x1ab3df…812bf5 | buy | 16,964,650 | 24 days agoThu, 23 Jul 2026 03:28:56 UTC | 0x48f7…2484 | IN | HoodPump | $1.690.0009 ETH | 0.00000777 | |
| 0x26ade3…f401ec | buy | 16,964,575 | 24 days agoThu, 23 Jul 2026 03:28:48 UTC | 0x48f7…2484 | IN | HoodPump | $1.690.0009 ETH | 0.00000779 | |
| 0xc08431…28f6da | buy | 16,964,520 | 24 days agoThu, 23 Jul 2026 03:28:43 UTC | 0x48f7…2484 | IN | HoodPump | $1.690.0009 ETH | 0.00000777 | |
| 0xd1c0b0…303c52 | buy | 16,964,445 | 24 days agoThu, 23 Jul 2026 03:28:36 UTC | 0x48f7…2484 | IN | HoodPump | $1.690.0009 ETH | 0.00000779 | |
| 0xb2f328…f650d4 | buy | 16,964,273 | 24 days agoThu, 23 Jul 2026 03:28:19 UTC | 0x48f7…2484 | IN | HoodPump | $1.690.0009 ETH | 0.00000776 | |
| 0x373a6f…ce7869 | buy | 16,961,367 | 24 days agoThu, 23 Jul 2026 03:23:26 UTC | 0x48f7…2484 | IN | HoodPump | $0.020.00001 ETH | 0.00000783 | |
| 0x4c5d84…ff2cc9 | comment | 16,947,143 | 24 days agoThu, 23 Jul 2026 02:59:39 UTC | 0xc754…427e | IN | HoodPump | $0.000 ETH | 0.00000330 | |
| 0xa7361c…acdbfc | buy | 16,943,565 | 24 days agoThu, 23 Jul 2026 02:53:41 UTC | 0x9b96…1027 | IN | HoodPump | $0.000.00000 ETH | 0.00000779 | |
| 0x704086…c5a105 | buy | 16,943,482 | 24 days agoThu, 23 Jul 2026 02:53:32 UTC | 0x9b96…1027 | IN | HoodPump | $0.000.00000 ETH | 0.00000784 | |
| 0x86da5d…04a308 | create | 16,943,135 | 24 days agoThu, 23 Jul 2026 02:52:58 UTC | 0x9b96…1027 | IN | HoodPump | $0.020.00001 ETH | 0.00045914 | |
| 0x1dfe20…015bce | comment | 16,935,076 | 24 days agoThu, 23 Jul 2026 02:39:30 UTC | 0xb602…65f0 | IN | HoodPump | $0.000 ETH | 0.00000328 | |
| 0xe95e68…722f04 | buy | 16,909,181 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0xc754…427e | IN | HoodPump | $262.570.14 ETH | 0.00047759 | |
| 0x05fac4…527217 | comment | 16,907,872 | 24 days agoThu, 23 Jul 2026 01:54:05 UTC | 0x2429…b489 | IN | HoodPump | $0.000 ETH | 0.00000318 | |
| 0xd25b33…458bd3 | withdrawCreatorFees | 16,906,716 | 24 days agoThu, 23 Jul 2026 01:52:10 UTC | 0x35a9…6155 | IN | HoodPump | $0.000 ETH | 0.00000293 | |
| 0x8bf99a…471140 | withdrawFees | 16,906,656 | 24 days agoThu, 23 Jul 2026 01:52:04 UTC | 0x35a9…6155 | IN | HoodPump | $0.000 ETH | 0.00000382 | |
| 0x3f7457…8b5b46 | buy | 16,902,391 | 24 days agoThu, 23 Jul 2026 01:44:57 UTC | 0xa15f…72a2 | IN | HoodPump | $4.690.0025 ETH | 0.00000750 | |
| 0x7ad119…2b4c8e | buy | 16,901,343 | 24 days agoThu, 23 Jul 2026 01:43:11 UTC | 0xa15f…72a2 | IN | HoodPump | $7.500.004 ETH | 0.00000754 | |
| 0xbc1bf7…82b221 | buy | 16,900,578 | 24 days agoThu, 23 Jul 2026 01:41:54 UTC | 0xbe8f…3526 | IN | HoodPump | $187.550.1 ETH | 0.00000926 | |
| 0xccf8fe…f3c857 | buy | 16,896,488 | 24 days agoThu, 23 Jul 2026 01:35:04 UTC | 0xa15f…72a2 | IN | HoodPump | $75.020.04 ETH | 0.00000753 | |
| 0xebffea…37f942 | buy | 16,895,452 | 24 days agoThu, 23 Jul 2026 01:33:21 UTC | 0xa15f…72a2 | IN | HoodPump | $93.780.05 ETH | 0.00000911 |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x5588f830…6d3f33 | Transfer | 18,288,426 | 23 days agoFri, 24 Jul 2026 16:21:39 UTC | 0x4d87…d9b4 | IN | 0x1ffd…0d9b | 28,963,364.285796 MARKET | OpenMarket.fun (MARKET) | |
| 0x48506727…1ae698 | Transfer | 17,401,510 | 24 days agoThu, 23 Jul 2026 15:38:59 UTC | 0xcaf7…5d11 | IN | 0x1ffd…0d9b | $0.001 DIH | ||
| 0xbc26740e…3d1e11 | Transfer | 17,366,964 | 24 days agoThu, 23 Jul 2026 14:41:16 UTC | 0xcaf7…5d11 | IN | 0x1ffd…0d9b | $0.001 DIH | ||
| 0xc684c1ad…53dd3a | Transfer | 16,964,846 | 24 days agoThu, 23 Jul 2026 03:29:16 UTC | 0x1ffd…0d9b | OUT | 0x48f7…2484 | 300,597.561133 BAGZ | Robin Bagz 🦝💰 (BAGZ) | |
| 0x1ab3df0f…812bf5 | Transfer | 16,964,650 | 24 days agoThu, 23 Jul 2026 03:28:56 UTC | 0x1ffd…0d9b | OUT | 0x48f7…2484 | 601,713.104587 BAGZ | Robin Bagz 🦝💰 (BAGZ) | |
| 0x26ade3a1…f401ec | Transfer | 16,964,575 | 24 days agoThu, 23 Jul 2026 03:28:48 UTC | 0x1ffd…0d9b | OUT | 0x48f7…2484 | 602,404.739999 BAGZ | Robin Bagz 🦝💰 (BAGZ) | |
| 0xc0843123…28f6da | Transfer | 16,964,520 | 24 days agoThu, 23 Jul 2026 03:28:43 UTC | 0x1ffd…0d9b | OUT | 0x48f7…2484 | 603,097.568591 BAGZ | Robin Bagz 🦝💰 (BAGZ) | |
| 0xd1c0b0b3…303c52 | Transfer | 16,964,445 | 24 days agoThu, 23 Jul 2026 03:28:36 UTC | 0x1ffd…0d9b | OUT | 0x48f7…2484 | 603,791.593109 BAGZ | Robin Bagz 🦝💰 (BAGZ) | |
| 0xb2f328be…f650d4 | Transfer | 16,964,273 | 24 days agoThu, 23 Jul 2026 03:28:19 UTC | 0x1ffd…0d9b | OUT | 0x48f7…2484 | 604,486.816307 BAGZ | Robin Bagz 🦝💰 (BAGZ) | |
| 0x373a6f7e…ce7869 | Transfer | 16,961,367 | 24 days agoThu, 23 Jul 2026 03:23:26 UTC | 0x1ffd…0d9b | OUT | 0x48f7…2484 | 6,720.429968 BAGZ | Robin Bagz 🦝💰 (BAGZ) | |
| 0xa7361ce3…acdbfc | Transfer | 16,943,565 | 24 days agoThu, 23 Jul 2026 02:53:41 UTC | 0x1ffd…0d9b | OUT | 0x9b96…1027 | 701.016132 12345MARKET | 12345OpenMarket (12345MARKET) | |
| 0x704086af…c5a105 | Transfer | 16,943,482 | 24 days agoThu, 23 Jul 2026 02:53:32 UTC | 0x1ffd…0d9b | OUT | 0x9b96…1027 | 701.017048 12345MARKET | 12345OpenMarket (12345MARKET) | |
| 0x86da5dee…04a308 | Transfer | 16,943,135 | 24 days agoThu, 23 Jul 2026 02:52:58 UTC | 0x1ffd…0d9b | OUT | 0x9b96…1027 | 7,010.220866 12345MARKET | 12345OpenMarket (12345MARKET) | |
| 0x86da5dee…04a308 | Transfer | 16,943,135 | 24 days agoThu, 23 Jul 2026 02:52:58 UTC | 0x0000…0000 | IN | 0x1ffd…0d9b | 1,000,000,000.000000 12345MARKET | 12345OpenMarket (12345MARKET) | |
| 0xe95e689b…722f04 | Transfer | 16,909,181 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0x1ffd…0d9b | OUT | 0x0000…dead | 206.913043 MARKET | OpenMarket.fun (MARKET) | |
| 0xe95e689b…722f04 | Transfer | 16,909,181 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0x1ffd…0d9b | OUT | 0x0000…0000 | 0.000004 WETH | WETH (WETH) | |
| 0xe95e689b…722f04 | Transfer | 16,909,181 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0x1ffd…0d9b | OUT | 0x63a8…9960 | 206,912,836.565217 MARKET | OpenMarket.fun (MARKET) | |
| 0xe95e689b…722f04 | Transfer | 16,909,181 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0x1ffd…0d9b | OUT | 0x63a8…9960 | 4.049995 WETH | WETH (WETH) | |
| 0xe95e689b…722f04 | Transfer | 16,909,181 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0x0000…0000 | IN | 0x1ffd…0d9b | 4.05 WETH | WETH (WETH) | |
| 0xe95e689b…722f04 | Transfer | 16,909,181 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0x1ffd…0d9b | OUT | 0xc754…427e | 5,003,772.481606 MARKET | OpenMarket.fun (MARKET) | |
| 0x3f7457f2…8b5b46 | Transfer | 16,902,391 | 24 days agoThu, 23 Jul 2026 01:44:57 UTC | 0x1ffd…0d9b | OUT | 0xa15f…72a2 | 123,623.109712 MARKET | OpenMarket.fun (MARKET) | |
| 0x7ad11909…2b4c8e | Transfer | 16,901,343 | 24 days agoThu, 23 Jul 2026 01:43:11 UTC | 0x1ffd…0d9b | OUT | 0xa15f…72a2 | 198,020.269091 MARKET | OpenMarket.fun (MARKET) | |
| 0xbc1bf760…82b221 | Transfer | 16,900,578 | 24 days agoThu, 23 Jul 2026 01:41:54 UTC | 0x1ffd…0d9b | OUT | 0xbe8f…3526 | 5,041,505.419447 MARKET | OpenMarket.fun (MARKET) | |
| 0xccf8fec8…f3c857 | Transfer | 16,896,488 | 24 days agoThu, 23 Jul 2026 01:35:04 UTC | 0x1ffd…0d9b | OUT | 0xa15f…72a2 | 2,066,857.452462 MARKET | OpenMarket.fun (MARKET) | |
| 0xebffeab2…37f942 | Transfer | 16,895,452 | 24 days agoThu, 23 Jul 2026 01:33:21 UTC | 0x1ffd…0d9b | OUT | 0xa15f…72a2 | 2,625,333.611283 MARKET | OpenMarket.fun (MARKET) |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 18,288,426 | 23 days agoFri, 24 Jul 2026 16:21:39 UTC | 0x5588f8…6d3f33 | CALL | sell | 0x1ffd…0d9b | OUT | 0x4d87…d9b4 | 0.04134 ETH |
| 17,036,188 | 24 days agoThu, 23 Jul 2026 05:28:37 UTC | 0xb51060…deb901 | CALL | withdrawCreatorFees | 0x1ffd…0d9b | OUT | 0x35a9…6155 | 0.00051 ETH |
| 16,979,777 | 24 days agoThu, 23 Jul 2026 03:54:15 UTC | 0xd0a372…cc55f5 | CALL | withdrawFees | 0x1ffd…0d9b | OUT | 0x844d…0db2 | 0.10081 ETH |
| 16,979,777 | 24 days agoThu, 23 Jul 2026 03:54:15 UTC | 0xd0a372…cc55f5 | CALL | withdrawFees | 0x1ffd…0d9b | OUT | 0x844d…0db2 | 0.10081 ETH |
| 16,943,135 | 24 days agoThu, 23 Jul 2026 02:52:58 UTC | 0x86da5d…04a308 | CREATE | create | 0x1ffd…0d9b | OUT | 0x0103…ad35 | 0 ETH |
| 16,943,135 | 24 days agoThu, 23 Jul 2026 02:52:58 UTC | 0x86da5d…04a308 | CREATE | create | 0x1ffd…0d9b | OUT | 0x66c0…fe11 | 0 ETH |
| 16,909,181 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0xe95e68…722f04 | CALL | buy | 0x1ffd…0d9b | OUT | 0xc754…427e | 0.03695 ETH |
| 16,909,181 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0xe95e68…722f04 | CALL | buy | 0x0bd7…ad73 | IN | 0x1ffd…0d9b | 0.00000 ETH |
| 16,909,181 | 24 days agoThu, 23 Jul 2026 01:56:17 UTC | 0xe95e68…722f04 | CALL | buy | 0x1ffd…0d9b | OUT | 0x0bd7…ad73 | 4.05 ETH |
| 16,906,716 | 24 days agoThu, 23 Jul 2026 01:52:10 UTC | 0xd25b33…458bd3 | CALL | withdrawCreatorFees | 0x1ffd…0d9b | OUT | 0x35a9…6155 | 0.03251 ETH |
| 16,906,656 | 24 days agoThu, 23 Jul 2026 01:52:04 UTC | 0x8bf99a…471140 | CALL | withdrawFees | 0x1ffd…0d9b | OUT | 0x844d…0db2 | 0.05277 ETH |
| 16,906,656 | 24 days agoThu, 23 Jul 2026 01:52:04 UTC | 0x8bf99a…471140 | CALL | withdrawFees | 0x1ffd…0d9b | OUT | 0x844d…0db2 | 0.05277 ETH |
| 16,890,949 | 24 days agoThu, 23 Jul 2026 01:25:49 UTC | 0x9109db…527aa5 | CALL | sell | 0x1ffd…0d9b | OUT | 0xab5b…2107 | 0.35493 ETH |
| 16,882,384 | 24 days agoThu, 23 Jul 2026 01:11:31 UTC | 0xe8f6d6…1231e0 | CALL | sell | 0x1ffd…0d9b | OUT | 0xd766…10df | 0.01412 ETH |
| 16,875,089 | 24 days agoThu, 23 Jul 2026 00:59:22 UTC | 0x3ece99…cd4c02 | CALL | sell | 0x1ffd…0d9b | OUT | 0xc396…148d | 0.06694 ETH |
| 16,874,773 | 24 days agoThu, 23 Jul 2026 00:58:51 UTC | 0x82e6a2…7c0252 | CALL | sell | 0x1ffd…0d9b | OUT | 0xf4c5…b461 | 0.03658 ETH |
| 16,874,686 | 24 days agoThu, 23 Jul 2026 00:58:42 UTC | 0x871510…186c4f | CALL | sell | 0x1ffd…0d9b | OUT | 0xd330…8e08 | 0.00802 ETH |
| 16,873,759 | 24 days agoThu, 23 Jul 2026 00:57:09 UTC | 0xf06487…864580 | CALL | sell | 0x1ffd…0d9b | OUT | 0xab5b…2107 | 0.32050 ETH |
| 16,865,131 | 24 days agoThu, 23 Jul 2026 00:42:43 UTC | 0xc98910…9194d6 | CALL | sell | 0x1ffd…0d9b | OUT | 0xd330…8e08 | 0.01759 ETH |
| 16,863,421 | 24 days agoThu, 23 Jul 2026 00:39:52 UTC | 0x7f46cb…db99a4 | CALL | sell | 0x1ffd…0d9b | OUT | 0xc396…148d | 0.07364 ETH |
| 16,863,081 | 24 days agoThu, 23 Jul 2026 00:39:18 UTC | 0x7a1292…e876bd | CALL | sell | 0x1ffd…0d9b | OUT | 0xd330…8e08 | 0.03416 ETH |
| 16,854,410 | 24 days agoThu, 23 Jul 2026 00:24:48 UTC | 0x8887cd…0ad10e | CALL | sell | 0x1ffd…0d9b | OUT | 0x6ff4…9c88 | 0.02691 ETH |
| 16,853,707 | 24 days agoThu, 23 Jul 2026 00:23:37 UTC | 0x533928…fae4c7 | CALL | sell | 0x1ffd…0d9b | OUT | 0xc396…148d | 0.09174 ETH |
| 16,851,593 | 24 days agoThu, 23 Jul 2026 00:20:06 UTC | 0xb92eb6…bb0156 | CALL | sell | 0x1ffd…0d9b | OUT | 0x6ff4…9c88 | 0.03146 ETH |
| 16,812,703 | 24 days agoWed, 22 Jul 2026 23:15:04 UTC | 0xcd5447…bf3b8e | CREATE | create | 0x1ffd…0d9b | OUT | 0x27cc…792e | 0 ETH |