// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
/*
Sherwood Treasure Chest — Crypto's first dynamic rewards token that gives YOU
an investment in top performing stocks.
X: https://x.com/TreasureChestRH
regards, schizophrenia onchain
*/
interface IERC20 {
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
function approve(address spender, uint256 amount) external returns (bool);
}
interface IUniswapV2Factory {
function getPair(address tokenA, address tokenB) external view returns (address pair);
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function getAmountsOut(uint256 amountIn, address[] calldata path)
external
view
returns (uint256[] memory amounts);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
struct PoolKey {
address currency0;
address currency1;
uint24 fee;
int24 tickSpacing;
address hooks;
}
struct V4SwapParams {
bool zeroForOne;
int256 amountSpecified;
uint160 sqrtPriceLimitX96;
}
interface IPoolManager {
function unlock(bytes calldata data) external returns (bytes memory);
function swap(PoolKey calldata key, V4SwapParams calldata params, bytes calldata hookData)
external
returns (int256 swapDelta);
function settle() external payable returns (uint256 paid);
function take(address currency, address to, uint256 amount) external;
function extsload(bytes32 slot) external view returns (bytes32);
}
contract SherwoodTreasureChest {
string public constant name = "Sherwood Treasure Chest";
string public constant symbol = "TREASURE";
uint8 public constant decimals = 18;
address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
uint256 private constant TOTAL_SUPPLY = 1_000_000_000 * 10 ** 18;
uint256 private constant MAGNITUDE = 2 ** 128;
uint256 public constant PROCESSOR_SHARE_BPS = 200;
IUniswapV2Router02 public constant router =
IUniswapV2Router02(0x89e5DB8B5aA49aA85AC63f691524311AEB649eba);
IPoolManager public constant poolManager =
IPoolManager(0x8366a39CC670B4001A1121B8F6A443A643e40951);
uint24 private constant V4_FEE = 50000;
int24 private constant V4_TICK_SPACING = 1000;
uint256 private constant V4_FEE_BPS = 500;
uint160 private constant MIN_SQRT_PRICE_PLUS_ONE = 4295128740;
uint256 private constant POOLS_SLOT = 6;
uint256 public totalTransactions;
uint256 public swapThreshold;
uint256 public swapSlippageBps = 300;
uint256 public constant MAX_SWAP_SLIPPAGE_BPS = 2000;
address public owner;
address public devWallet;
address public uniswapV2Pair;
address public weth;
bool public swapEnabled = true;
bool private _inSwap;
address[] private _stockTokens;
address[] private _activeRewardTokens;
uint256 private _totalRewardsSupply;
uint256 private _activeHolderCount;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) public isExcludedFromFee;
mapping(address => bool) public isExcludedFromRewards;
mapping(address => bool) public automatedMarketMakerPairs;
mapping(address => bool) public isStockToken;
mapping(address => bool) private _isActiveRewardToken;
mapping(address => uint256) private _magnifiedDividendPerShare;
mapping(address => mapping(address => int256)) private _magnifiedDividendCorrections;
mapping(address => mapping(address => uint256)) private _withdrawnDividends;
mapping(address => uint256) public totalStockDistributed;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
event DevWalletAllocated(address indexed devWallet, uint256 amount);
event ExcludedFromFee(address indexed account, bool excluded);
event ExcludedFromRewards(address indexed account, bool excluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event SwapEnabledUpdated(bool enabled);
event SwapThresholdUpdated(uint256 threshold);
event V2Configured(address indexed router, address indexed pair);
event SwapSlippageUpdated(uint256 slippageBps);
event StockRewardDistributed(address indexed stock, uint256 amount, uint256 indexed stockIndex);
event RewardClaimed(address indexed account, address indexed stock, uint256 amount);
event RewardPayoutFailed(address indexed account, address indexed stock, uint256 amount);
event StockTokenUpdated(address indexed stock, bool added);
modifier onlyOwner() {
require(msg.sender == owner, "Not owner");
_;
}
modifier lockTheSwap() {
_inSwap = true;
_;
_inSwap = false;
}
constructor(address initialOwner, address devWallet_) {
require(initialOwner != address(0), "Zero owner");
require(devWallet_ != address(0), "Zero dev wallet");
owner = initialOwner;
devWallet = devWallet_;
weth = router.WETH();
uint256 devAmount = (TOTAL_SUPPLY * 5) / 100;
uint256 ownerAmount = TOTAL_SUPPLY - devAmount;
if (initialOwner == devWallet_) {
_balances[initialOwner] = TOTAL_SUPPLY;
_activeHolderCount = 1;
emit Transfer(address(0), initialOwner, TOTAL_SUPPLY);
emit DevWalletAllocated(devWallet_, TOTAL_SUPPLY);
} else {
_balances[initialOwner] = ownerAmount;
_balances[devWallet_] = devAmount;
_activeHolderCount = 2;
emit Transfer(address(0), initialOwner, ownerAmount);
emit Transfer(address(0), devWallet_, devAmount);
emit DevWalletAllocated(devWallet_, devAmount);
}
_totalRewardsSupply = TOTAL_SUPPLY;
isExcludedFromFee[initialOwner] = true;
isExcludedFromFee[address(this)] = true;
isExcludedFromRewards[address(this)] = true;
isExcludedFromRewards[DEAD] = true;
swapThreshold = TOTAL_SUPPLY / 400;
_initStockTokens();
emit OwnershipTransferred(address(0), initialOwner);
}
function _initStockTokens() private {
_addStock(0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9);
_addStock(0x86923f96303D656E4aa86D9d42D1e57ad2023fdC);
_addStock(0x2e0847E8910a9732eB3fb1bb4b70a580ADAD4FE3);
_addStock(0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC);
_addStock(0x4a0E65A3EcceC6dBe60AE065F2e7bb85Fae35eEa);
_addStock(0x322F0929c4625eD5bAd873c95208D54E1c003b2d);
}
function _addStock(address stock) private {
require(stock != address(0), "Zero stock");
require(!isStockToken[stock], "Duplicate");
isStockToken[stock] = true;
_stockTokens.push(stock);
emit StockTokenUpdated(stock, true);
}
function totalSupply() external pure returns (uint256) {
return TOTAL_SUPPLY;
}
function balanceOf(address account) public view returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 amount) external returns (bool) {
_transfer(msg.sender, to, amount);
return true;
}
function allowance(address tokenOwner, address spender) external view returns (uint256) {
return _allowances[tokenOwner][spender];
}
function approve(address spender, uint256 amount) external returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) external returns (bool) {
uint256 currentAllowance = _allowances[from][msg.sender];
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "Allowance exceeded");
unchecked {
_approve(from, msg.sender, currentAllowance - amount);
}
}
_transfer(from, to, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
_approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
uint256 currentAllowance = _allowances[msg.sender][spender];
require(currentAllowance >= subtractedValue, "Decreased below zero");
unchecked {
_approve(msg.sender, spender, currentAllowance - subtractedValue);
}
return true;
}
function currentTaxFeeBps() public view returns (uint256) {
uint256 r = uint256(
keccak256(abi.encodePacked(block.prevrandao, block.timestamp, block.number, totalTransactions))
) % 3;
if (r == 0) return 100;
if (r == 1) return 500;
return 1000;
}
function stockTokenCount() external view returns (uint256) {
return _stockTokens.length;
}
function stockTokenAt(uint256 index) external view returns (address) {
return _stockTokens[index];
}
function activeRewardTokenCount() external view returns (uint256) {
return _activeRewardTokens.length;
}
function activeRewardTokenAt(uint256 index) external view returns (address) {
return _activeRewardTokens[index];
}
function rewardHolderCount() external view returns (uint256) {
return _activeHolderCount;
}
function totalRewardsEligibleSupply() external view returns (uint256) {
return _totalRewardsSupply;
}
function pendingStockRewards(address account, address stock) public view returns (uint256) {
if (isExcludedFromRewards[account] || !_isActiveRewardToken[stock]) return 0;
return accumulativeStockOf(account, stock) - _withdrawnDividends[stock][account];
}
function accumulativeStockOf(address account, address stock) public view returns (uint256) {
return uint256(
int256(_magnifiedDividendPerShare[stock] * _balances[account])
+ _magnifiedDividendCorrections[stock][account]
) / MAGNITUDE;
}
function claimRewards() external {
_claimAll(msg.sender);
}
function claimReward(address stock) external returns (uint256) {
return _claim(msg.sender, stock);
}
function pushRewards(address[] calldata accounts) external {
uint256 len = accounts.length;
for (uint256 i = 0; i < len; i++) {
_claimAll(accounts[i]);
}
}
function processFees() external {
require(!_inSwap, "Busy");
require(_balances[address(this)] >= swapThreshold, "Below threshold");
this.convertTaxToStock(msg.sender);
}
function distributeStockRewards(address stock, uint256 amount) external onlyOwner {
require(isStockToken[stock], "Not a reward stock");
require(amount > 0, "Zero amount");
require(IERC20(stock).transferFrom(msg.sender, address(this), amount), "Transfer failed");
_distributeStock(stock, amount, type(uint256).max);
}
function configureV2() external onlyOwner {
require(uniswapV2Pair == address(0), "Already configured");
address factory = router.factory();
address pair_ = IUniswapV2Factory(factory).getPair(address(this), weth);
if (pair_ == address(0)) {
pair_ = IUniswapV2Factory(factory).createPair(address(this), weth);
}
uniswapV2Pair = pair_;
isExcludedFromFee[address(router)] = true;
_setAutomatedMarketMakerPair(pair_, true);
emit V2Configured(address(router), pair_);
}
function setSwapSlippageBps(uint256 slippageBps) external onlyOwner {
require(slippageBps <= MAX_SWAP_SLIPPAGE_BPS, "Slippage too high");
swapSlippageBps = slippageBps;
emit SwapSlippageUpdated(slippageBps);
}
function setSwapEnabled(bool enabled) external onlyOwner {
swapEnabled = enabled;
emit SwapEnabledUpdated(enabled);
}
function setSwapThreshold(uint256 threshold) external onlyOwner {
require(threshold > 0, "Zero threshold");
swapThreshold = threshold;
emit SwapThresholdUpdated(threshold);
}
function addStockToken(address stock) external onlyOwner {
_addStock(stock);
}
function excludeFromFee(address account, bool excluded) external onlyOwner {
isExcludedFromFee[account] = excluded;
emit ExcludedFromFee(account, excluded);
}
function excludeFromRewards(address account, bool excluded) external onlyOwner {
require(isExcludedFromRewards[account] != excluded, "Already set");
if (excluded) {
_setExcludedFromRewards(account);
} else {
_setIncludedInRewards(account);
}
emit ExcludedFromRewards(account, excluded);
}
function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
require(pair != uniswapV2Pair || value, "Cannot unset primary pair");
_setAutomatedMarketMakerPair(pair, value);
}
function transferOwnership(address newOwner) external onlyOwner {
require(newOwner != address(0), "Zero address");
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
function renounceOwnership() external onlyOwner {
emit OwnershipTransferred(owner, address(0));
owner = address(0);
}
function rescueETH(address to) external onlyOwner {
require(to != address(0), "Zero address");
(bool ok,) = to.call{value: address(this).balance}("");
require(ok, "ETH send failed");
}
function _approve(address tokenOwner, address spender, uint256 amount) private {
require(tokenOwner != address(0), "Approve from zero");
require(spender != address(0), "Approve to zero");
_allowances[tokenOwner][spender] = amount;
emit Approval(tokenOwner, spender, amount);
}
function _transfer(address from, address to, uint256 amount) private {
require(from != address(0), "Transfer from zero");
require(to != address(0), "Transfer to zero");
require(amount > 0, "Zero amount");
require(_balances[from] >= amount, "Insufficient balance");
if (from == to) {
if (!_inSwap) _claimAll(from);
emit Transfer(from, to, amount);
_bumpTransactionCount();
return;
}
bool isSell = automatedMarketMakerPairs[to];
if (
isSell
&& !_inSwap
&& swapEnabled
&& uniswapV2Pair != address(0)
&& _balances[address(this)] >= swapThreshold
) {
try this.convertTaxToStock(address(0)) {} catch {}
}
uint256 taxBps = currentTaxFeeBps();
bool excluded = isExcludedFromFee[from] || isExcludedFromFee[to];
bool wantFee = !excluded && taxBps > 0 && !_inSwap;
if (wantFee) {
uint256 feeAmount = (amount * taxBps) / 10_000;
_moveBalance(from, to, amount - feeAmount);
_moveBalance(from, address(this), feeAmount);
} else {
_moveBalance(from, to, amount);
}
if (!_inSwap) {
_claimAll(from);
_claimAll(to);
}
_bumpTransactionCount();
}
function _moveBalance(address from, address to, uint256 amount) private {
if (amount == 0) return;
uint256 fromBalanceBefore = _balances[from];
uint256 toBalanceBefore = _balances[to];
_balances[from] = fromBalanceBefore - amount;
_balances[to] += amount;
_updateDividendCorrections(from, to, amount, fromBalanceBefore, toBalanceBefore);
emit Transfer(from, to, amount);
}
function _updateDividendCorrections(
address from,
address to,
uint256 amount,
uint256 fromBalanceBefore,
uint256 toBalanceBefore
) private {
uint256 activeLen = _activeRewardTokens.length;
if (!isExcludedFromRewards[from]) {
for (uint256 i = 0; i < activeLen; i++) {
address stock = _activeRewardTokens[i];
_magnifiedDividendCorrections[stock][from] +=
int256(_magnifiedDividendPerShare[stock] * amount);
}
if (fromBalanceBefore == amount) {
unchecked {
_activeHolderCount -= 1;
}
}
}
if (!isExcludedFromRewards[to]) {
for (uint256 i = 0; i < activeLen; i++) {
address stock = _activeRewardTokens[i];
_magnifiedDividendCorrections[stock][to] -=
int256(_magnifiedDividendPerShare[stock] * amount);
}
if (toBalanceBefore == 0) {
unchecked {
_activeHolderCount += 1;
}
}
}
if (isExcludedFromRewards[from] && !isExcludedFromRewards[to]) {
_totalRewardsSupply += amount;
} else if (!isExcludedFromRewards[from] && isExcludedFromRewards[to]) {
_totalRewardsSupply -= amount;
}
}
function _bumpTransactionCount() private {
unchecked {
totalTransactions += 1;
}
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
if (value && !isExcludedFromRewards[pair]) {
_setExcludedFromRewards(pair);
}
emit SetAutomatedMarketMakerPair(pair, value);
}
function _setExcludedFromRewards(address account) private {
require(!isExcludedFromRewards[account], "Already excluded");
uint256 balance = _balances[account];
if (balance > 0) {
uint256 len = _activeRewardTokens.length;
for (uint256 i = 0; i < len; i++) {
_claim(account, _activeRewardTokens[i]);
_magnifiedDividendCorrections[_activeRewardTokens[i]][account] = 0;
}
_totalRewardsSupply -= balance;
unchecked {
_activeHolderCount -= 1;
}
}
isExcludedFromRewards[account] = true;
}
function _setIncludedInRewards(address account) private {
require(isExcludedFromRewards[account], "Not excluded");
isExcludedFromRewards[account] = false;
uint256 balance = _balances[account];
uint256 len = _activeRewardTokens.length;
if (balance > 0) {
for (uint256 i = 0; i < len; i++) {
address stock = _activeRewardTokens[i];
_magnifiedDividendCorrections[stock][account] =
-int256(_magnifiedDividendPerShare[stock] * balance);
_withdrawnDividends[stock][account] = 0;
}
_totalRewardsSupply += balance;
unchecked {
_activeHolderCount += 1;
}
} else {
for (uint256 i = 0; i < len; i++) {
_magnifiedDividendCorrections[_activeRewardTokens[i]][account] = 0;
_withdrawnDividends[_activeRewardTokens[i]][account] = 0;
}
}
}
function _randomStockIndex(uint256 salt) private view returns (uint256) {
return uint256(
keccak256(abi.encodePacked(block.prevrandao, block.timestamp, totalTransactions, salt))
) % _stockTokens.length;
}
function convertTaxToStock(address processor) external lockTheSwap {
require(msg.sender == address(this), "Self only");
if (_totalRewardsSupply == 0 || _stockTokens.length == 0) return;
uint256 taxAmount = _balances[address(this)];
if (taxAmount > 0 && uniswapV2Pair != address(0)) {
_approve(address(this), address(router), taxAmount);
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = weth;
uint256 minEth;
try router.getAmountsOut(taxAmount, path) returns (uint256[] memory amounts) {
minEth = (amounts[1] * (10_000 - swapSlippageBps)) / 10_000;
} catch {
return;
}
try router.swapExactTokensForETHSupportingFeeOnTransferTokens(
taxAmount, minEth, path, address(this), block.timestamp
) {} catch {
return;
}
}
uint256 ethAmount = address(this).balance;
if (ethAmount == 0) return;
uint256 start = _randomStockIndex(0);
uint256 len = _stockTokens.length;
for (uint256 i = 0; i < len; i++) {
uint256 index = (start + i) % len;
address stock = _stockTokens[index];
try this.v4BuyStock(stock, ethAmount) returns (uint256 stockOut) {
if (stockOut > 0) {
uint256 tip;
if (processor != address(0) && PROCESSOR_SHARE_BPS > 0) {
tip = (stockOut * PROCESSOR_SHARE_BPS) / 10_000;
if (tip > 0 && !_safeStockTransfer(stock, processor, tip)) {
tip = 0;
}
}
_distributeStock(stock, stockOut - tip, index);
return;
}
} catch {}
}
revert("Conversion failed");
}
function v4BuyStock(address stock, uint256 ethAmount) external returns (uint256 stockOut) {
require(msg.sender == address(this), "Self only");
uint160 sqrtP = _poolSqrtPrice(stock);
require(sqrtP > 0, "No V4 pool");
uint256 s1 = (ethAmount * uint256(sqrtP)) >> 96;
uint256 expected = (s1 * uint256(sqrtP)) >> 96;
uint256 minOut = (expected * (10_000 - V4_FEE_BPS - swapSlippageBps)) / 10_000;
bytes memory res = poolManager.unlock(abi.encode(stock, ethAmount, minOut));
stockOut = abi.decode(res, (uint256));
}
function unlockCallback(bytes calldata data) external returns (bytes memory) {
require(msg.sender == address(poolManager), "Not PoolManager");
(address stock, uint256 ethAmount, uint256 minOut) =
abi.decode(data, (address, uint256, uint256));
int256 delta = poolManager.swap(
_poolKey(stock),
V4SwapParams({
zeroForOne: true,
amountSpecified: -int256(ethAmount),
sqrtPriceLimitX96: MIN_SQRT_PRICE_PLUS_ONE
}),
""
);
int128 ethDelta = int128(delta >> 128);
int128 stockDelta = int128(delta);
uint256 ethSpent = uint256(uint128(-ethDelta));
uint256 stockGained = uint256(uint128(stockDelta));
require(stockGained >= minOut, "V4 slippage");
poolManager.settle{value: ethSpent}();
poolManager.take(stock, address(this), stockGained);
return abi.encode(stockGained);
}
function _poolKey(address stock) private pure returns (PoolKey memory) {
return PoolKey({
currency0: address(0),
currency1: stock,
fee: V4_FEE,
tickSpacing: V4_TICK_SPACING,
hooks: address(0)
});
}
function _poolSqrtPrice(address stock) private view returns (uint160) {
bytes32 poolId = keccak256(abi.encode(_poolKey(stock)));
bytes32 stateSlot = keccak256(abi.encode(poolId, POOLS_SLOT));
return uint160(uint256(poolManager.extsload(stateSlot)));
}
function _distributeStock(address stock, uint256 amount, uint256 stockIndex) private {
if (amount == 0 || _totalRewardsSupply == 0) return;
if (!_isActiveRewardToken[stock]) {
_isActiveRewardToken[stock] = true;
_activeRewardTokens.push(stock);
}
_magnifiedDividendPerShare[stock] += (amount * MAGNITUDE) / _totalRewardsSupply;
totalStockDistributed[stock] += amount;
emit StockRewardDistributed(stock, amount, stockIndex);
}
function _claimAll(address account) private {
if (isExcludedFromRewards[account] || _activeRewardTokens.length == 0) return;
uint256 len = _activeRewardTokens.length;
for (uint256 i = 0; i < len; i++) {
_claim(account, _activeRewardTokens[i]);
}
}
function _claim(address account, address stock) private returns (uint256) {
uint256 amount = pendingStockRewards(account, stock);
if (amount == 0) return 0;
_withdrawnDividends[stock][account] += amount;
if (!_safeStockTransfer(stock, account, amount)) {
_withdrawnDividends[stock][account] -= amount;
emit RewardPayoutFailed(account, stock, amount);
return 0;
}
emit RewardClaimed(account, stock, amount);
return amount;
}
function _safeStockTransfer(address stock, address to, uint256 amount) private returns (bool) {
(bool success, bytes memory data) =
stock.call(abi.encodeWithSelector(IERC20.transfer.selector, to, amount));
return success && (data.length == 0 || abi.decode(data, (bool)));
}
receive() external payable {}
}[
{
"type": "constructor",
"inputs": [
{
"name": "initialOwner",
"type": "address",
"internalType": "address"
},
{
"name": "devWallet_",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "DevWalletAllocated",
"type": "event",
"inputs": [
{
"name": "devWallet",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ExcludedFromFee",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "excluded",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "ExcludedFromRewards",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "excluded",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "RewardClaimed",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "stock",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "RewardPayoutFailed",
"type": "event",
"inputs": [
{
"name": "account",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "stock",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SetAutomatedMarketMakerPair",
"type": "event",
"inputs": [
{
"name": "pair",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "bool",
"indexed": true,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "StockRewardDistributed",
"type": "event",
"inputs": [
{
"name": "stock",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "stockIndex",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "StockTokenUpdated",
"type": "event",
"inputs": [
{
"name": "stock",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "added",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "SwapEnabledUpdated",
"type": "event",
"inputs": [
{
"name": "enabled",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "SwapSlippageUpdated",
"type": "event",
"inputs": [
{
"name": "slippageBps",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "SwapThresholdUpdated",
"type": "event",
"inputs": [
{
"name": "threshold",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Transfer",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "V2Configured",
"type": "event",
"inputs": [
{
"name": "router",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pair",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "DEAD",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "MAX_SWAP_SLIPPAGE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "PROCESSOR_SHARE_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "accumulativeStockOf",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "stock",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "activeRewardTokenAt",
"type": "function",
"inputs": [
{
"name": "index",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "activeRewardTokenCount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "addStockToken",
"type": "function",
"inputs": [
{
"name": "stock",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "tokenOwner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "automatedMarketMakerPairs",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "claimReward",
"type": "function",
"inputs": [
{
"name": "stock",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "claimRewards",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "configureV2",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "convertTaxToStock",
"type": "function",
"inputs": [
{
"name": "processor",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "currentTaxFeeBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "decreaseAllowance",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "subtractedValue",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "devWallet",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "distributeStockRewards",
"type": "function",
"inputs": [
{
"name": "stock",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "excludeFromFee",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "excluded",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "excludeFromRewards",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "excluded",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "increaseAllowance",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "addedValue",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "isExcludedFromFee",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isExcludedFromRewards",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "isStockToken",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "pendingStockRewards",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
},
{
"name": "stock",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "poolManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IPoolManager"
}
],
"stateMutability": "view"
},
{
"name": "processFees",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "pushRewards",
"type": "function",
"inputs": [
{
"name": "accounts",
"type": "address[]",
"internalType": "address[]"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "renounceOwnership",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "rescueETH",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "rewardHolderCount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "router",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IUniswapV2Router02"
}
],
"stateMutability": "view"
},
{
"name": "setAutomatedMarketMakerPair",
"type": "function",
"inputs": [
{
"name": "pair",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setSwapEnabled",
"type": "function",
"inputs": [
{
"name": "enabled",
"type": "bool",
"internalType": "bool"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setSwapSlippageBps",
"type": "function",
"inputs": [
{
"name": "slippageBps",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "setSwapThreshold",
"type": "function",
"inputs": [
{
"name": "threshold",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "stockTokenAt",
"type": "function",
"inputs": [
{
"name": "index",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "stockTokenCount",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "swapEnabled",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "swapSlippageBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "swapThreshold",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "totalRewardsEligibleSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "totalStockDistributed",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "pure"
},
{
"name": "totalTransactions",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transfer",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "uniswapV2Pair",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "unlockCallback",
"type": "function",
"inputs": [
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"stateMutability": "nonpayable"
},
{
"name": "v4BuyStock",
"type": "function",
"inputs": [
{
"name": "stock",
"type": "address",
"internalType": "address"
},
{
"name": "ethAmount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "stockOut",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "nonpayable"
},
{
"name": "weth",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x608060405261012c6002556006805460ff60a01b1916600160a01b17905534801562000029575f80fd5b506040516200428c3803806200428c8339810160408190526200004c916200063c565b6001600160a01b038216620000955760405162461bcd60e51b815260206004820152600a6024820152692d32b9379037bbb732b960b11b60448201526064015b60405180910390fd5b6001600160a01b038116620000df5760405162461bcd60e51b815260206004820152600f60248201526e16995c9bc819195d881dd85b1b195d608a1b60448201526064016200008c565b600380546001600160a01b038085166001600160a01b0319928316179092556004805492841692909116919091178155604080516315ab88c960e31b815290517389e5db8b5aa49aa85ac63f691524311aeb649eba9263ad5c4648928082019260209290918290030181865afa1580156200015c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000182919062000672565b600680546001600160a01b0319166001600160a01b03929092169190911790555f6064620001be6b033b2e3c9fd0803ce80000006005620006a9565b620001ca9190620006c9565b90505f620001e5826b033b2e3c9fd0803ce8000000620006e9565b9050826001600160a01b0316846001600160a01b03160362000293576001600160a01b0384165f818152600b602090815260408083206b033b2e3c9fd0803ce8000000908190556001600a5590519081525f805160206200424c833981519152910160405180910390a3826001600160a01b03165f805160206200426c8339815191526b033b2e3c9fd0803ce80000006040516200028591815260200190565b60405180910390a26200034b565b6001600160a01b038085165f818152600b602052604080822085905592861681528281208590556002600a5591519091905f805160206200424c83398151915290620002e29085815260200190565b60405180910390a36040518281526001600160a01b038416905f905f805160206200424c8339815191529060200160405180910390a3826001600160a01b03165f805160206200426c833981519152836040516200034291815260200190565b60405180910390a25b6b033b2e3c9fd0803ce800000060098190556001600160a01b0385165f908152600d602090815260408083208054600160ff1991821681179092553085528285208054821683179055600e909352908320805483168217905561dead9092527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a80549091169091179055620003e49061019090620006c9565b600155620003f162000430565b6040516001600160a01b038516905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350505050620006ff565b6200044f73af3d76f1834a1d425780943c99ea8a608f8a93f9620004ec565b6200046e7386923f96303d656e4aa86d9d42d1e57ad2023fdc620004ec565b6200048d732e0847e8910a9732eb3fb1bb4b70a580adad4fe3620004ec565b620004ac73d0601ce157db5bdc3162bbac2a2c8af5320d9eec620004ec565b620004cb734a0e65a3eccec6dbe60ae065f2e7bb85fae35eea620004ec565b620004ea73322f0929c4625ed5bad873c95208d54e1c003b2d620004ec565b565b6001600160a01b038116620005315760405162461bcd60e51b815260206004820152600a6024820152695a65726f2073746f636b60b01b60448201526064016200008c565b6001600160a01b0381165f9081526010602052604090205460ff1615620005875760405162461bcd60e51b81526020600482015260096024820152684475706c696361746560b81b60448201526064016200008c565b6001600160a01b0381165f818152601060209081526040808320805460ff1916600190811790915560078054808301825594527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890930180546001600160a01b03191685179055519182527fe1c188ab8b8ec3c960b6e42c291259ccc3152dc1824653b9dbbf22d1a97338a3910160405180910390a250565b80516001600160a01b038116811462000637575f80fd5b919050565b5f80604083850312156200064e575f80fd5b620006598362000620565b9150620006696020840162000620565b90509250929050565b5f6020828403121562000683575f80fd5b6200068e8262000620565b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620006c357620006c362000695565b92915050565b5f82620006e457634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115620006c357620006c362000695565b613b3f806200070d5f395ff3fe608060405260043610610369575f3560e01c80637d4245a2116101c8578063b9a60038116100fd578063dd62ed3e1161009d578063f2fde38b1161006d578063f2fde38b14610a56578063f6ceefa214610a75578063f887ea4014610a94578063fd08f50414610abb575f80fd5b8063dd62ed3e146109a6578063df8408fe146109ea578063e01af92c14610a09578063f1dc8c8b14610a28575f80fd5b8063d279c191116100d8578063d279c19114610922578063dc4c90d314610941578063dd17d18814610968578063dd3314dd14610987575f80fd5b8063b9a60038146108e6578063ba69ebed146108fa578063d22d39a81461090e575f80fd5b80639a7a23d611610168578063a457c2d711610143578063a457c2d714610866578063a9059cbb14610885578063b62496f5146108a4578063b6e3a2bf146108d2575f80fd5b80639a7a23d6146108145780639d0014b114610833578063a4015ca814610852575f80fd5b80638da5cb5b116101a35780638da5cb5b146107845780638ea5220f146107a357806391dd7346146107c257806395d89b41146107e1575f80fd5b80637d4245a2146107275780637dcfb528146107465780638d95be5614610765575f80fd5b8063372500ab1161029e57806361b6b1681161023e5780636ddd1713116102195780636ddd1713146106ab57806370a08231146106cb578063715018a6146106ff5780637465d8de14610713575f80fd5b806361b6b1681461065957806364a47b001461066d5780636acd69231461068c575f80fd5b80633fc8cef3116102795780633fc8cef3146105d857806349bd5a5e146105f75780635342acb4146106165780635d95584914610644575f80fd5b8063372500ab146105915780633783c828146105a557806339509351146105b9575f80fd5b806318160ddd1161030957806323b872dd116102e457806323b872dd146105185780632ad4cab7146105375780632ae1c8ef14610556578063313ce5671461056b575f80fd5b806318160ddd146104bb5780631d1311dc146104d957806320c96fd8146104ed575f80fd5b806306fdde031161034457806306fdde03146103ea578063095ea7b31461043f5780630d8f18a21461046e5780630e8322731461048d575f80fd5b806303fd2a45146103745780630445b667146103a657806304824e70146103c9575f80fd5b3661037057005b5f80fd5b34801561037f575f80fd5b5061038961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103b1575f80fd5b506103bb60015481565b60405190815260200161039d565b3480156103d4575f80fd5b506103e86103e336600461342d565b610ada565b005b3480156103f5575f80fd5b506104326040518060400160405280601781526020017f53686572776f6f6420547265617375726520436865737400000000000000000081525081565b60405161039d9190613495565b34801561044a575f80fd5b5061045e6104593660046134a7565b610be7565b604051901515815260200161039d565b348015610479575f80fd5b506103bb6104883660046134a7565b610bfd565b348015610498575f80fd5b5061045e6104a736600461342d565b600e6020525f908152604090205460ff1681565b3480156104c6575f80fd5b506b033b2e3c9fd0803ce80000006103bb565b3480156104e4575f80fd5b506009546103bb565b3480156104f8575f80fd5b506103bb61050736600461342d565b60156020525f908152604090205481565b348015610523575f80fd5b5061045e6105323660046134d1565b610dc3565b348015610542575f80fd5b506103e861055136600461351c565b610e56565b348015610561575f80fd5b506103bb60025481565b348015610576575f80fd5b5061057f601281565b60405160ff909116815260200161039d565b34801561059c575f80fd5b506103e8610f43565b3480156105b0575f80fd5b506008546103bb565b3480156105c4575f80fd5b5061045e6105d33660046134a7565b610f4e565b3480156105e3575f80fd5b50600654610389906001600160a01b031681565b348015610602575f80fd5b50600554610389906001600160a01b031681565b348015610621575f80fd5b5061045e61063036600461342d565b600d6020525f908152604090205460ff1681565b34801561064f575f80fd5b506103bb6107d081565b348015610664575f80fd5b506007546103bb565b348015610678575f80fd5b506103bb610687366004613553565b610f89565b348015610697575f80fd5b506103e86106a636600461342d565b610ff3565b3480156106b6575f80fd5b5060065461045e90600160a01b900460ff1681565b3480156106d6575f80fd5b506103bb6106e536600461342d565b6001600160a01b03165f908152600b602052604090205490565b34801561070a575f80fd5b506103e8611029565b34801561071e575f80fd5b506103bb60c881565b348015610732575f80fd5b506103bb610741366004613553565b61109c565b348015610751575f80fd5b5061038961076036600461357f565b61111f565b348015610770575f80fd5b506103e861077f3660046134a7565b61114d565b34801561078f575f80fd5b50600354610389906001600160a01b031681565b3480156107ae575f80fd5b50600454610389906001600160a01b031681565b3480156107cd575f80fd5b506104326107dc366004613596565b6112ce565b3480156107ec575f80fd5b5061043260405180604001604052806008815260200167545245415355524560c01b81525081565b34801561081f575f80fd5b506103e861082e36600461351c565b611572565b34801561083e575f80fd5b506103e861084d36600461357f565b61160c565b34801561085d575f80fd5b506103e86116b2565b348015610871575f80fd5b5061045e6108803660046134a7565b61195a565b348015610890575f80fd5b5061045e61089f3660046134a7565b6119db565b3480156108af575f80fd5b5061045e6108be36600461342d565b600f6020525f908152604090205460ff1681565b3480156108dd575f80fd5b50600a546103bb565b3480156108f1575f80fd5b506103bb5f5481565b348015610905575f80fd5b506103e86119e7565b348015610919575f80fd5b506103bb611ac9565b34801561092d575f80fd5b506103bb61093c36600461342d565b611b41565b34801561094c575f80fd5b50610389738366a39cc670b4001a1121b8f6a443a643e4095181565b348015610973575f80fd5b5061038961098236600461357f565b611b4c565b348015610992575f80fd5b506103e86109a136600461342d565b611b60565b3480156109b1575f80fd5b506103bb6109c0366004613553565b6001600160a01b039182165f908152600c6020908152604080832093909416825291909152205490565b3480156109f5575f80fd5b506103e8610a0436600461351c565b611f70565b348015610a14575f80fd5b506103e8610a23366004613602565b611ff1565b348015610a33575f80fd5b5061045e610a4236600461342d565b60106020525f908152604090205460ff1681565b348015610a61575f80fd5b506103e8610a7036600461342d565b612068565b348015610a80575f80fd5b506103e8610a8f36600461361d565b612132565b348015610a9f575f80fd5b506103897389e5db8b5aa49aa85ac63f691524311aeb649eba81565b348015610ac6575f80fd5b506103e8610ad536600461357f565b612174565b6003546001600160a01b03163314610b0d5760405162461bcd60e51b8152600401610b049061367a565b60405180910390fd5b6001600160a01b038116610b525760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610b04565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610b9b576040519150601f19603f3d011682016040523d82523d5f602084013e610ba0565b606091505b5050905080610be35760405162461bcd60e51b815260206004820152600f60248201526e115512081cd95b990819985a5b1959608a1b6044820152606401610b04565b5050565b5f610bf3338484612219565b5060015b92915050565b5f333014610c395760405162461bcd60e51b815260206004820152600960248201526853656c66206f6e6c7960b81b6044820152606401610b04565b5f610c438461230c565b90505f816001600160a01b031611610c8a5760405162461bcd60e51b815260206004820152600a602482015269139bc8158d081c1bdbdb60b21b6044820152606401610b04565b5f6060610ca06001600160a01b038416866136b1565b901c90505f6060610cba6001600160a01b038516846136b1565b901c90505f6127106002546101f4612710610cd591906136c8565b610cdf91906136c8565b610ce990846136b1565b610cf391906136ef565b604080516001600160a01b038a16602082015280820189905260608082018490528251808303909101815260808201928390526348c8949160e01b9092529192505f91738366a39cc670b4001a1121b8f6a443a643e40951916348c8949191610d5f9190608401613495565b5f604051808303815f875af1158015610d7a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610da19190810190613747565b905080806020019051810190610db791906137d6565b98975050505050505050565b6001600160a01b0383165f908152600c602090815260408083203384529091528120545f198114610e405782811015610e335760405162461bcd60e51b8152602060048201526012602482015271105b1b1bddd85b98d948195e18d95959195960721b6044820152606401610b04565b610e408533858403612219565b610e4b8585856123ef565b506001949350505050565b6003546001600160a01b03163314610e805760405162461bcd60e51b8152600401610b049061367a565b6001600160a01b0382165f908152600e602052604090205481151560ff909116151503610edd5760405162461bcd60e51b815260206004820152600b60248201526a105b1c9958591e481cd95d60aa1b6044820152606401610b04565b8015610ef157610eec82612771565b610efa565b610efa826128c1565b816001600160a01b03167f6fb704e328736eb59ac6758cc1df5a98a609cfd47a1877201101c614dffc92e982604051610f37911515815260200190565b60405180910390a25050565b610f4c33612abb565b565b335f818152600c602090815260408083206001600160a01b03871684529091528120549091610bf3918590610f849086906137ed565b612219565b6001600160a01b038082165f818152601360209081526040808320948716835293815283822054600b8252848320549383526012909152928120549092600160801b929091610fd891906136b1565b610fe29190613800565b610fec91906136ef565b9392505050565b6003546001600160a01b0316331461101d5760405162461bcd60e51b8152600401610b049061367a565b61102681612b16565b50565b6003546001600160a01b031633146110535760405162461bcd60e51b8152600401610b049061367a565b6003546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b6001600160a01b0382165f908152600e602052604081205460ff16806110da57506001600160a01b0382165f9081526011602052604090205460ff16155b156110e657505f610bf7565b6001600160a01b038083165f908152601460209081526040808320938716835292905220546111158484610f89565b610fec91906136c8565b5f6007828154811061113357611133613827565b5f918252602090912001546001600160a01b031692915050565b6003546001600160a01b031633146111775760405162461bcd60e51b8152600401610b049061367a565b6001600160a01b0382165f9081526010602052604090205460ff166111d35760405162461bcd60e51b81526020600482015260126024820152714e6f742061207265776172642073746f636b60701b6044820152606401610b04565b5f81116112105760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610b04565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303815f875af1158015611260573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611284919061383b565b6112c25760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610b04565b610be382825f19612c46565b606033738366a39cc670b4001a1121b8f6a443a643e40951146113255760405162461bcd60e51b815260206004820152600f60248201526e2737ba102837b7b626b0b730b3b2b960891b6044820152606401610b04565b5f808061133485870187613856565b919450925090505f738366a39cc670b4001a1121b8f6a443a643e4095163f3cd914c61135f86612d91565b6040805160608101909152600181526020810161137b88613888565b81526401000276a46020909101526040516001600160e01b031960e085901b1681526113ab9291906004016138e5565b6020604051808303815f875af11580156113c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113eb91906137d6565b9050608081901d815f6113fd83613934565b6fffffffffffffffffffffffffffffffff90811691508216858110156114535760405162461bcd60e51b815260206004820152600b60248201526a563420736c69707061676560a81b6044820152606401610b04565b738366a39cc670b4001a1121b8f6a443a643e409516001600160a01b03166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af11580156114a5573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114ca91906137d6565b50604051630b0d9c0960e01b81526001600160a01b038916600482015230602482015260448101829052738366a39cc670b4001a1121b8f6a443a643e4095190630b0d9c09906064015f604051808303815f87803b15801561152a575f80fd5b505af115801561153c573d5f803e3d5ffd5b505050508060405160200161155391815260200190565b6040516020818303038152906040529850505050505050505092915050565b6003546001600160a01b0316331461159c5760405162461bcd60e51b8152600401610b049061367a565b6005546001600160a01b0383811691161415806115b65750805b6116025760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f7420756e736574207072696d6172792070616972000000000000006044820152606401610b04565b610be38282612df2565b6003546001600160a01b031633146116365760405162461bcd60e51b8152600401610b049061367a565b5f81116116765760405162461bcd60e51b815260206004820152600e60248201526d16995c9bc81d1a1c995cda1bdb1960921b6044820152606401610b04565b60018190556040518181527f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd06476906020015b60405180910390a150565b6003546001600160a01b031633146116dc5760405162461bcd60e51b8152600401610b049061367a565b6005546001600160a01b03161561172a5760405162461bcd60e51b8152602060048201526012602482015271105b1c9958591e4818dbdb999a59dd5c995960721b6044820152606401610b04565b5f7389e5db8b5aa49aa85ac63f691524311aeb649eba6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561177b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179f9190613961565b60065460405163e6a4390560e01b81523060048201526001600160a01b0391821660248201529192505f919083169063e6a4390590604401602060405180830381865afa1580156117f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118169190613961565b90506001600160a01b03811661189c576006546040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529083169063c9c65396906044016020604051808303815f875af1158015611875573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118999190613961565b90505b600580546001600160a01b0319166001600160a01b0383161790557389e5db8b5aa49aa85ac63f691524311aeb649eba5f52600d6020527f4c915e000e8411b89f3231c34db6d74033e2f68c9bb090a3f5811ac5237c9799805460ff1916600190811790915561190d908290612df2565b6040516001600160a01b038216907389e5db8b5aa49aa85ac63f691524311aeb649eba907f6209ea13f62b4b43b825dce649cd072d51b2fb81981c08b596512455f81fe55c905f90a35050565b335f908152600c602090815260408083206001600160a01b0386168452909152812054828110156119c45760405162461bcd60e51b81526020600482015260146024820152734465637265617365642062656c6f77207a65726f60601b6044820152606401610b04565b6119d13385858403612219565b5060019392505050565b5f610bf33384846123ef565b600654600160a81b900460ff1615611a2a5760405162461bcd60e51b8152600401610b04906020808252600490820152634275737960e01b604082015260600190565b600154305f908152600b60205260409020541015611a7c5760405162461bcd60e51b815260206004820152600f60248201526e10995b1bddc81d1a1c995cda1bdb19608a1b6044820152606401610b04565b60405163dd3314dd60e01b8152336004820152309063dd3314dd906024015f604051808303815f87803b158015611ab1575f80fd5b505af1158015611ac3573d5f803e3d5ffd5b50505050565b5f80546040805144602082015242918101919091524360608201526080810191909152819060039060a001604051602081830303815290604052805190602001205f1c611b16919061397c565b9050805f03611b2757606491505090565b80600103611b38576101f491505090565b6103e891505090565b5f610bf73383612e87565b5f6008828154811061113357611133613827565b6006805460ff60a81b1916600160a81b179055333014611bae5760405162461bcd60e51b815260206004820152600960248201526853656c66206f6e6c7960b81b6044820152606401610b04565b6009541580611bbd5750600754155b611f6057305f908152600b60205260409020548015801590611be957506005546001600160a01b031615155b15611dc757611c0d307389e5db8b5aa49aa85ac63f691524311aeb649eba83612219565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c4057611c40613827565b6001600160a01b039283166020918202929092010152600654825191169082906001908110611c7157611c71613827565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b81525f907389e5db8b5aa49aa85ac63f691524311aeb649eba9063d06ca61f90611cc490869086906004016139d2565b5f60405180830381865afa925050508015611d0057506040513d5f823e601f3d908101601f19168201604052611cfd91908101906139ea565b60015b611d0c57505050611f60565b612710600254612710611d1f91906136c8565b82600181518110611d3257611d32613827565b6020026020010151611d4491906136b1565b611d4e91906136ef565b91505060405163791ac94760e01b81527389e5db8b5aa49aa85ac63f691524311aeb649eba9063791ac94790611d909086908590879030904290600401613a7f565b5f604051808303815f87803b158015611da7575f80fd5b505af1925050508015611db8575060015b611dc457505050611f60565b50505b475f819003611dd7575050611f60565b5f611de15f612fd7565b6007549091505f5b81811015611f23575f82611dfd83866137ed565b611e07919061397c565b90505f60078281548110611e1d57611e1d613827565b5f918252602090912001546040516306c78c5160e11b81526001600160a01b03909116600482018190526024820188905291503090630d8f18a2906044016020604051808303815f875af1925050508015611e95575060408051601f3d908101601f19168201909252611e92918101906137d6565b60015b15611f19578015611f17575f6001600160a01b038a1615801590611eb7575060015b15611ef557612710611eca60c8846136b1565b611ed491906136ef565b90505f81118015611eed5750611eeb838b83613026565b155b15611ef557505f5b611f0983611f0383856136c8565b86612c46565b505050505050505050611f60565b505b5050600101611de9565b5060405162461bcd60e51b815260206004820152601160248201527010dbdb9d995c9cda5bdb8819985a5b1959607a1b6044820152606401610b04565b506006805460ff60a81b19169055565b6003546001600160a01b03163314611f9a5760405162461bcd60e51b8152600401610b049061367a565b6001600160a01b0382165f818152600d6020908152604091829020805460ff191685151590811790915591519182527f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa99101610f37565b6003546001600160a01b0316331461201b5760405162461bcd60e51b8152600401610b049061367a565b60068054821515600160a01b0260ff60a01b199091161790556040517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a12906116a790831515815260200190565b6003546001600160a01b031633146120925760405162461bcd60e51b8152600401610b049061367a565b6001600160a01b0381166120d75760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610b04565b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b805f5b81811015611ac35761216c84848381811061215257612152613827565b9050602002016020810190612167919061342d565b612abb565b600101612135565b6003546001600160a01b0316331461219e5760405162461bcd60e51b8152600401610b049061367a565b6107d08111156121e45760405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b6044820152606401610b04565b60028190556040518181527f3b869268152040c3a55d6a6eb0c94d3c4a55a4b59ad40ec4c603826584a87047906020016116a7565b6001600160a01b0383166122635760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610b04565b6001600160a01b0382166122ab5760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610b04565b6001600160a01b038381165f818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f8061231783612d91565b6040516020016123279190613aba565b6040516020818303038152906040528051906020012090505f81600660405160200161235d929190918252602082015260400190565b60408051808303601f19018152908290528051602090910120631e2eaeaf60e01b8252600482018190529150738366a39cc670b4001a1121b8f6a443a643e4095190631e2eaeaf90602401602060405180830381865afa1580156123c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e791906137d6565b949350505050565b6001600160a01b03831661243a5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610b04565b6001600160a01b0382166124835760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610b04565b5f81116124c05760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610b04565b6001600160a01b0383165f908152600b602052604090205481111561251e5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610b04565b816001600160a01b0316836001600160a01b0316036125b057600654600160a81b900460ff166125515761255183612abb565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161259691815260200190565b60405180910390a36125ab5f80546001019055565b505050565b6001600160a01b0382165f908152600f602052604090205460ff168080156125e25750600654600160a81b900460ff16155b80156125f75750600654600160a01b900460ff165b801561260d57506005546001600160a01b031615155b80156126295750600154305f908152600b602052604090205410155b156126765760405163dd3314dd60e01b81525f6004820152309063dd3314dd906024015f604051808303815f87803b158015612663575f80fd5b505af1925050508015612674575060015b505b5f61267f611ac9565b6001600160a01b0386165f908152600d60205260408120549192509060ff16806126c057506001600160a01b0385165f908152600d602052604090205460ff165b90505f811580156126d057505f83115b80156126e65750600654600160a81b900460ff16155b9050801561272d575f6127106126fc85886136b1565b61270691906136ef565b905061271c8888612717848a6136c8565b6130f5565b6127278830836130f5565b50612738565b6127388787876130f5565b600654600160a81b900460ff1661275b5761275287612abb565b61275b86612abb565b6127685f80546001019055565b50505050505050565b6001600160a01b0381165f908152600e602052604090205460ff16156127cc5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48195e18db1d59195960821b6044820152606401610b04565b6001600160a01b0381165f908152600b6020526040902054801561289d576008545f5b8181101561287b57612827846008838154811061280e5761280e613827565b5f918252602090912001546001600160a01b0316612e87565b505f60135f6008848154811061283f5761283f613827565b5f9182526020808320909101546001600160a01b03908116845283820194909452604092830182209389168252929092529020556001016127ef565b508160095f82825461288d91906136c8565b9091555050600a80545f19019055505b506001600160a01b03165f908152600e60205260409020805460ff19166001179055565b6001600160a01b0381165f908152600e602052604090205460ff166129175760405162461bcd60e51b815260206004820152600c60248201526b139bdd08195e18db1d59195960a21b6044820152606401610b04565b6001600160a01b0381165f908152600e60209081526040808320805460ff19169055600b9091529020546008548115612a0e575f5b818110156129e9575f6008828154811061296857612968613827565b5f9182526020808320909101546001600160a01b0316808352601290915260409091205490915061299a9085906136b1565b6129a390613888565b6001600160a01b039182165f818152601360209081526040808320958a16808452958252808320949094559181526014825282812093815292905281205560010161294c565b508160095f8282546129fb91906137ed565b9091555050600a80546001019055505050565b5f5b81811015611ac3575f60135f60088481548110612a2f57612a2f613827565b5f9182526020808320909101546001600160a01b039081168452838201949094526040928301822093891682529290925281209190915560088054601491839185908110612a7f57612a7f613827565b5f9182526020808320909101546001600160a01b0390811684528382019490945260409283018220938916825292909252902055600101612a10565b6001600160a01b0381165f908152600e602052604090205460ff1680612ae15750600854155b15612ae95750565b6008545f5b818110156125ab57612b0d836008838154811061280e5761280e613827565b50600101612aee565b6001600160a01b038116612b595760405162461bcd60e51b815260206004820152600a6024820152695a65726f2073746f636b60b01b6044820152606401610b04565b6001600160a01b0381165f9081526010602052604090205460ff1615612bad5760405162461bcd60e51b81526020600482015260096024820152684475706c696361746560b81b6044820152606401610b04565b6001600160a01b0381165f818152601060209081526040808320805460ff1916600190811790915560078054808301825594527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890930180546001600160a01b03191685179055519182527fe1c188ab8b8ec3c960b6e42c291259ccc3152dc1824653b9dbbf22d1a97338a3910160405180910390a250565b811580612c535750600954155b15612c5d57505050565b6001600160a01b0383165f9081526011602052604090205460ff16612ce1576001600160a01b0383165f818152601160205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191690911790555b600954612cf2600160801b846136b1565b612cfc91906136ef565b6001600160a01b0384165f9081526012602052604081208054909190612d239084906137ed565b90915550506001600160a01b0383165f9081526015602052604081208054849290612d4f9084906137ed565b909155505060405182815281906001600160a01b038516907f35f78fc480409062fbe62f56c6977d08e2f2ab01a2dafb2842bb37e6f502c017906020016122ff565b6040805160a080820183525f808352602080840182905283850182905260608085018390526080948501839052855193840186528284526001600160a01b03969096169083015261c350938201939093526103e89381019390935282015290565b6001600160a01b0382165f908152600f60205260409020805460ff191682158015919091179091558190612e3e57506001600160a01b0382165f908152600e602052604090205460ff16155b15612e4c57612e4c82612771565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b5f80612e93848461109c565b9050805f03612ea5575f915050610bf7565b6001600160a01b038084165f90815260146020908152604080832093881683529290529081208054839290612edb9084906137ed565b90915550612eec9050838583613026565b612f83576001600160a01b038084165f90815260146020908152604080832093881683529290529081208054839290612f269084906136c8565b92505081905550826001600160a01b0316846001600160a01b03167fbcee400519acc386010c6ec8f0a21b5b4b8511743e32a5b15b7176b95a22c90983604051612f7291815260200190565b60405180910390a35f915050610bf7565b826001600160a01b0316846001600160a01b03167f0aa4d283470c904c551d18bb894d37e17674920f3261a7f854be501e25f421b783604051612fc891815260200190565b60405180910390a39392505050565b6007545f805460408051446020820152429181019190915260608101919091526080810184905290919060a001604051602081830303815290604052805190602001205f1c610bf7919061397c565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f9283928392918816916130839190613ac8565b5f604051808303815f865af19150503d805f81146130bc576040519150601f19603f3d011682016040523d82523d5f602084013e6130c1565b606091505b50915091508180156130eb5750805115806130eb5750808060200190518101906130eb919061383b565b9695505050505050565b805f0361310157505050565b6001600160a01b038084165f908152600b602052604080822054928516825290205461312d83836136c8565b6001600160a01b038087165f908152600b602052604080822093909355908616815290812080548592906131629084906137ed565b90915550613175905085858585856131c9565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516131ba91815260200190565b60405180910390a35050505050565b6008546001600160a01b0386165f908152600e602052604090205460ff16613291575f5b8181101561327f575f6008828154811061320957613209613827565b5f9182526020808320909101546001600160a01b0316808352601290915260409091205490915061323b9087906136b1565b6001600160a01b038083165f908152601360209081526040808320938d1683529290529081208054909190613271908490613800565b9091555050506001016131ed565b5083830361329157600a80545f190190555b6001600160a01b0385165f908152600e602052604090205460ff16613356575f5b81811015613344575f600882815481106132ce576132ce613827565b5f9182526020808320909101546001600160a01b031680835260129091526040909120549091506133009087906136b1565b6001600160a01b038083165f908152601360209081526040808320938c1683529290529081208054909190613336908490613ae3565b9091555050506001016132b2565b50815f0361335657600a805460010190555b6001600160a01b0386165f908152600e602052604090205460ff16801561339557506001600160a01b0385165f908152600e602052604090205460ff16155b156133b6578360095f8282546133ab91906137ed565b909155506134119050565b6001600160a01b0386165f908152600e602052604090205460ff161580156133f557506001600160a01b0385165f908152600e602052604090205460ff165b15613411578360095f82825461340b91906136c8565b90915550505b505050505050565b6001600160a01b0381168114611026575f80fd5b5f6020828403121561343d575f80fd5b8135610fec81613419565b5f5b8381101561346257818101518382015260200161344a565b50505f910152565b5f8151808452613481816020860160208601613448565b601f01601f19169290920160200192915050565b602081525f610fec602083018461346a565b5f80604083850312156134b8575f80fd5b82356134c381613419565b946020939093013593505050565b5f805f606084860312156134e3575f80fd5b83356134ee81613419565b925060208401356134fe81613419565b929592945050506040919091013590565b8015158114611026575f80fd5b5f806040838503121561352d575f80fd5b823561353881613419565b915060208301356135488161350f565b809150509250929050565b5f8060408385031215613564575f80fd5b823561356f81613419565b9150602083013561354881613419565b5f6020828403121561358f575f80fd5b5035919050565b5f80602083850312156135a7575f80fd5b823567ffffffffffffffff808211156135be575f80fd5b818501915085601f8301126135d1575f80fd5b8135818111156135df575f80fd5b8660208285010111156135f0575f80fd5b60209290920196919550909350505050565b5f60208284031215613612575f80fd5b8135610fec8161350f565b5f806020838503121561362e575f80fd5b823567ffffffffffffffff80821115613645575f80fd5b818501915085601f830112613658575f80fd5b813581811115613666575f80fd5b8660208260051b85010111156135f0575f80fd5b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610bf757610bf761369d565b81810381811115610bf757610bf761369d565b634e487b7160e01b5f52601260045260245ffd5b5f826136fd576136fd6136db565b500490565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561373f5761373f613702565b604052919050565b5f60208284031215613757575f80fd5b815167ffffffffffffffff8082111561376e575f80fd5b818401915084601f830112613781575f80fd5b81518181111561379357613793613702565b6137a6601f8201601f1916602001613716565b91508082528560208285010111156137bc575f80fd5b6137cd816020840160208601613448565b50949350505050565b5f602082840312156137e6575f80fd5b5051919050565b80820180821115610bf757610bf761369d565b8082018281125f83128015821682158216171561381f5761381f61369d565b505092915050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561384b575f80fd5b8151610fec8161350f565b5f805f60608486031215613868575f80fd5b833561387381613419565b95602085013595506040909401359392505050565b5f600160ff1b820161389c5761389c61369d565b505f0390565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b5f6101206138f383866138a2565b8351151560a0840152602084015160c08401526040909301516001600160a01b031660e08301525061010081018290525f9181019190915261014001919050565b5f81600f0b6f7fffffffffffffffffffffffffffffff1981036139595761395961369d565b5f0392915050565b5f60208284031215613971575f80fd5b8151610fec81613419565b5f8261398a5761398a6136db565b500690565b5f815180845260208085019450602084015f5b838110156139c75781516001600160a01b0316875295820195908201906001016139a2565b509495945050505050565b828152604060208201525f6123e7604083018461398f565b5f60208083850312156139fb575f80fd5b825167ffffffffffffffff80821115613a12575f80fd5b818501915085601f830112613a25575f80fd5b815181811115613a3757613a37613702565b8060051b9150613a48848301613716565b8181529183018401918481019088841115613a61575f80fd5b938501935b83851015610db757845182529385019390850190613a66565b85815284602082015260a060408201525f613a9d60a083018661398f565b6001600160a01b0394909416606083015250608001529392505050565b60a08101610bf782846138a2565b5f8251613ad9818460208701613448565b9190910192915050565b8181035f831280158383131683831282161715613b0257613b0261369d565b509291505056fea2646970667358221220c3ffd6f41bc110a27436f1efd32e3c827f07b9792dbbdca2fbb21fddbfcc4c8d64736f6c63430008180033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5e24a8fbfc77469c5b3e3e4988a01ccd0476bd4cf8684548a8b26275e668f4e400000000000000000000000003a0bd296dcfca508ce8452c7550e6b5364eec2e00000000000000000000000003a0bd296dcfca508ce8452c7550e6b5364eec2e
0x608060405260043610610369575f3560e01c80637d4245a2116101c8578063b9a60038116100fd578063dd62ed3e1161009d578063f2fde38b1161006d578063f2fde38b14610a56578063f6ceefa214610a75578063f887ea4014610a94578063fd08f50414610abb575f80fd5b8063dd62ed3e146109a6578063df8408fe146109ea578063e01af92c14610a09578063f1dc8c8b14610a28575f80fd5b8063d279c191116100d8578063d279c19114610922578063dc4c90d314610941578063dd17d18814610968578063dd3314dd14610987575f80fd5b8063b9a60038146108e6578063ba69ebed146108fa578063d22d39a81461090e575f80fd5b80639a7a23d611610168578063a457c2d711610143578063a457c2d714610866578063a9059cbb14610885578063b62496f5146108a4578063b6e3a2bf146108d2575f80fd5b80639a7a23d6146108145780639d0014b114610833578063a4015ca814610852575f80fd5b80638da5cb5b116101a35780638da5cb5b146107845780638ea5220f146107a357806391dd7346146107c257806395d89b41146107e1575f80fd5b80637d4245a2146107275780637dcfb528146107465780638d95be5614610765575f80fd5b8063372500ab1161029e57806361b6b1681161023e5780636ddd1713116102195780636ddd1713146106ab57806370a08231146106cb578063715018a6146106ff5780637465d8de14610713575f80fd5b806361b6b1681461065957806364a47b001461066d5780636acd69231461068c575f80fd5b80633fc8cef3116102795780633fc8cef3146105d857806349bd5a5e146105f75780635342acb4146106165780635d95584914610644575f80fd5b8063372500ab146105915780633783c828146105a557806339509351146105b9575f80fd5b806318160ddd1161030957806323b872dd116102e457806323b872dd146105185780632ad4cab7146105375780632ae1c8ef14610556578063313ce5671461056b575f80fd5b806318160ddd146104bb5780631d1311dc146104d957806320c96fd8146104ed575f80fd5b806306fdde031161034457806306fdde03146103ea578063095ea7b31461043f5780630d8f18a21461046e5780630e8322731461048d575f80fd5b806303fd2a45146103745780630445b667146103a657806304824e70146103c9575f80fd5b3661037057005b5f80fd5b34801561037f575f80fd5b5061038961dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103b1575f80fd5b506103bb60015481565b60405190815260200161039d565b3480156103d4575f80fd5b506103e86103e336600461342d565b610ada565b005b3480156103f5575f80fd5b506104326040518060400160405280601781526020017f53686572776f6f6420547265617375726520436865737400000000000000000081525081565b60405161039d9190613495565b34801561044a575f80fd5b5061045e6104593660046134a7565b610be7565b604051901515815260200161039d565b348015610479575f80fd5b506103bb6104883660046134a7565b610bfd565b348015610498575f80fd5b5061045e6104a736600461342d565b600e6020525f908152604090205460ff1681565b3480156104c6575f80fd5b506b033b2e3c9fd0803ce80000006103bb565b3480156104e4575f80fd5b506009546103bb565b3480156104f8575f80fd5b506103bb61050736600461342d565b60156020525f908152604090205481565b348015610523575f80fd5b5061045e6105323660046134d1565b610dc3565b348015610542575f80fd5b506103e861055136600461351c565b610e56565b348015610561575f80fd5b506103bb60025481565b348015610576575f80fd5b5061057f601281565b60405160ff909116815260200161039d565b34801561059c575f80fd5b506103e8610f43565b3480156105b0575f80fd5b506008546103bb565b3480156105c4575f80fd5b5061045e6105d33660046134a7565b610f4e565b3480156105e3575f80fd5b50600654610389906001600160a01b031681565b348015610602575f80fd5b50600554610389906001600160a01b031681565b348015610621575f80fd5b5061045e61063036600461342d565b600d6020525f908152604090205460ff1681565b34801561064f575f80fd5b506103bb6107d081565b348015610664575f80fd5b506007546103bb565b348015610678575f80fd5b506103bb610687366004613553565b610f89565b348015610697575f80fd5b506103e86106a636600461342d565b610ff3565b3480156106b6575f80fd5b5060065461045e90600160a01b900460ff1681565b3480156106d6575f80fd5b506103bb6106e536600461342d565b6001600160a01b03165f908152600b602052604090205490565b34801561070a575f80fd5b506103e8611029565b34801561071e575f80fd5b506103bb60c881565b348015610732575f80fd5b506103bb610741366004613553565b61109c565b348015610751575f80fd5b5061038961076036600461357f565b61111f565b348015610770575f80fd5b506103e861077f3660046134a7565b61114d565b34801561078f575f80fd5b50600354610389906001600160a01b031681565b3480156107ae575f80fd5b50600454610389906001600160a01b031681565b3480156107cd575f80fd5b506104326107dc366004613596565b6112ce565b3480156107ec575f80fd5b5061043260405180604001604052806008815260200167545245415355524560c01b81525081565b34801561081f575f80fd5b506103e861082e36600461351c565b611572565b34801561083e575f80fd5b506103e861084d36600461357f565b61160c565b34801561085d575f80fd5b506103e86116b2565b348015610871575f80fd5b5061045e6108803660046134a7565b61195a565b348015610890575f80fd5b5061045e61089f3660046134a7565b6119db565b3480156108af575f80fd5b5061045e6108be36600461342d565b600f6020525f908152604090205460ff1681565b3480156108dd575f80fd5b50600a546103bb565b3480156108f1575f80fd5b506103bb5f5481565b348015610905575f80fd5b506103e86119e7565b348015610919575f80fd5b506103bb611ac9565b34801561092d575f80fd5b506103bb61093c36600461342d565b611b41565b34801561094c575f80fd5b50610389738366a39cc670b4001a1121b8f6a443a643e4095181565b348015610973575f80fd5b5061038961098236600461357f565b611b4c565b348015610992575f80fd5b506103e86109a136600461342d565b611b60565b3480156109b1575f80fd5b506103bb6109c0366004613553565b6001600160a01b039182165f908152600c6020908152604080832093909416825291909152205490565b3480156109f5575f80fd5b506103e8610a0436600461351c565b611f70565b348015610a14575f80fd5b506103e8610a23366004613602565b611ff1565b348015610a33575f80fd5b5061045e610a4236600461342d565b60106020525f908152604090205460ff1681565b348015610a61575f80fd5b506103e8610a7036600461342d565b612068565b348015610a80575f80fd5b506103e8610a8f36600461361d565b612132565b348015610a9f575f80fd5b506103897389e5db8b5aa49aa85ac63f691524311aeb649eba81565b348015610ac6575f80fd5b506103e8610ad536600461357f565b612174565b6003546001600160a01b03163314610b0d5760405162461bcd60e51b8152600401610b049061367a565b60405180910390fd5b6001600160a01b038116610b525760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610b04565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610b9b576040519150601f19603f3d011682016040523d82523d5f602084013e610ba0565b606091505b5050905080610be35760405162461bcd60e51b815260206004820152600f60248201526e115512081cd95b990819985a5b1959608a1b6044820152606401610b04565b5050565b5f610bf3338484612219565b5060015b92915050565b5f333014610c395760405162461bcd60e51b815260206004820152600960248201526853656c66206f6e6c7960b81b6044820152606401610b04565b5f610c438461230c565b90505f816001600160a01b031611610c8a5760405162461bcd60e51b815260206004820152600a602482015269139bc8158d081c1bdbdb60b21b6044820152606401610b04565b5f6060610ca06001600160a01b038416866136b1565b901c90505f6060610cba6001600160a01b038516846136b1565b901c90505f6127106002546101f4612710610cd591906136c8565b610cdf91906136c8565b610ce990846136b1565b610cf391906136ef565b604080516001600160a01b038a16602082015280820189905260608082018490528251808303909101815260808201928390526348c8949160e01b9092529192505f91738366a39cc670b4001a1121b8f6a443a643e40951916348c8949191610d5f9190608401613495565b5f604051808303815f875af1158015610d7a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610da19190810190613747565b905080806020019051810190610db791906137d6565b98975050505050505050565b6001600160a01b0383165f908152600c602090815260408083203384529091528120545f198114610e405782811015610e335760405162461bcd60e51b8152602060048201526012602482015271105b1b1bddd85b98d948195e18d95959195960721b6044820152606401610b04565b610e408533858403612219565b610e4b8585856123ef565b506001949350505050565b6003546001600160a01b03163314610e805760405162461bcd60e51b8152600401610b049061367a565b6001600160a01b0382165f908152600e602052604090205481151560ff909116151503610edd5760405162461bcd60e51b815260206004820152600b60248201526a105b1c9958591e481cd95d60aa1b6044820152606401610b04565b8015610ef157610eec82612771565b610efa565b610efa826128c1565b816001600160a01b03167f6fb704e328736eb59ac6758cc1df5a98a609cfd47a1877201101c614dffc92e982604051610f37911515815260200190565b60405180910390a25050565b610f4c33612abb565b565b335f818152600c602090815260408083206001600160a01b03871684529091528120549091610bf3918590610f849086906137ed565b612219565b6001600160a01b038082165f818152601360209081526040808320948716835293815283822054600b8252848320549383526012909152928120549092600160801b929091610fd891906136b1565b610fe29190613800565b610fec91906136ef565b9392505050565b6003546001600160a01b0316331461101d5760405162461bcd60e51b8152600401610b049061367a565b61102681612b16565b50565b6003546001600160a01b031633146110535760405162461bcd60e51b8152600401610b049061367a565b6003546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b6001600160a01b0382165f908152600e602052604081205460ff16806110da57506001600160a01b0382165f9081526011602052604090205460ff16155b156110e657505f610bf7565b6001600160a01b038083165f908152601460209081526040808320938716835292905220546111158484610f89565b610fec91906136c8565b5f6007828154811061113357611133613827565b5f918252602090912001546001600160a01b031692915050565b6003546001600160a01b031633146111775760405162461bcd60e51b8152600401610b049061367a565b6001600160a01b0382165f9081526010602052604090205460ff166111d35760405162461bcd60e51b81526020600482015260126024820152714e6f742061207265776172642073746f636b60701b6044820152606401610b04565b5f81116112105760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610b04565b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064016020604051808303815f875af1158015611260573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611284919061383b565b6112c25760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610b04565b610be382825f19612c46565b606033738366a39cc670b4001a1121b8f6a443a643e40951146113255760405162461bcd60e51b815260206004820152600f60248201526e2737ba102837b7b626b0b730b3b2b960891b6044820152606401610b04565b5f808061133485870187613856565b919450925090505f738366a39cc670b4001a1121b8f6a443a643e4095163f3cd914c61135f86612d91565b6040805160608101909152600181526020810161137b88613888565b81526401000276a46020909101526040516001600160e01b031960e085901b1681526113ab9291906004016138e5565b6020604051808303815f875af11580156113c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113eb91906137d6565b9050608081901d815f6113fd83613934565b6fffffffffffffffffffffffffffffffff90811691508216858110156114535760405162461bcd60e51b815260206004820152600b60248201526a563420736c69707061676560a81b6044820152606401610b04565b738366a39cc670b4001a1121b8f6a443a643e409516001600160a01b03166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af11580156114a5573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114ca91906137d6565b50604051630b0d9c0960e01b81526001600160a01b038916600482015230602482015260448101829052738366a39cc670b4001a1121b8f6a443a643e4095190630b0d9c09906064015f604051808303815f87803b15801561152a575f80fd5b505af115801561153c573d5f803e3d5ffd5b505050508060405160200161155391815260200190565b6040516020818303038152906040529850505050505050505092915050565b6003546001600160a01b0316331461159c5760405162461bcd60e51b8152600401610b049061367a565b6005546001600160a01b0383811691161415806115b65750805b6116025760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f7420756e736574207072696d6172792070616972000000000000006044820152606401610b04565b610be38282612df2565b6003546001600160a01b031633146116365760405162461bcd60e51b8152600401610b049061367a565b5f81116116765760405162461bcd60e51b815260206004820152600e60248201526d16995c9bc81d1a1c995cda1bdb1960921b6044820152606401610b04565b60018190556040518181527f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd06476906020015b60405180910390a150565b6003546001600160a01b031633146116dc5760405162461bcd60e51b8152600401610b049061367a565b6005546001600160a01b03161561172a5760405162461bcd60e51b8152602060048201526012602482015271105b1c9958591e4818dbdb999a59dd5c995960721b6044820152606401610b04565b5f7389e5db8b5aa49aa85ac63f691524311aeb649eba6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561177b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179f9190613961565b60065460405163e6a4390560e01b81523060048201526001600160a01b0391821660248201529192505f919083169063e6a4390590604401602060405180830381865afa1580156117f2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118169190613961565b90506001600160a01b03811661189c576006546040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529083169063c9c65396906044016020604051808303815f875af1158015611875573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118999190613961565b90505b600580546001600160a01b0319166001600160a01b0383161790557389e5db8b5aa49aa85ac63f691524311aeb649eba5f52600d6020527f4c915e000e8411b89f3231c34db6d74033e2f68c9bb090a3f5811ac5237c9799805460ff1916600190811790915561190d908290612df2565b6040516001600160a01b038216907389e5db8b5aa49aa85ac63f691524311aeb649eba907f6209ea13f62b4b43b825dce649cd072d51b2fb81981c08b596512455f81fe55c905f90a35050565b335f908152600c602090815260408083206001600160a01b0386168452909152812054828110156119c45760405162461bcd60e51b81526020600482015260146024820152734465637265617365642062656c6f77207a65726f60601b6044820152606401610b04565b6119d13385858403612219565b5060019392505050565b5f610bf33384846123ef565b600654600160a81b900460ff1615611a2a5760405162461bcd60e51b8152600401610b04906020808252600490820152634275737960e01b604082015260600190565b600154305f908152600b60205260409020541015611a7c5760405162461bcd60e51b815260206004820152600f60248201526e10995b1bddc81d1a1c995cda1bdb19608a1b6044820152606401610b04565b60405163dd3314dd60e01b8152336004820152309063dd3314dd906024015f604051808303815f87803b158015611ab1575f80fd5b505af1158015611ac3573d5f803e3d5ffd5b50505050565b5f80546040805144602082015242918101919091524360608201526080810191909152819060039060a001604051602081830303815290604052805190602001205f1c611b16919061397c565b9050805f03611b2757606491505090565b80600103611b38576101f491505090565b6103e891505090565b5f610bf73383612e87565b5f6008828154811061113357611133613827565b6006805460ff60a81b1916600160a81b179055333014611bae5760405162461bcd60e51b815260206004820152600960248201526853656c66206f6e6c7960b81b6044820152606401610b04565b6009541580611bbd5750600754155b611f6057305f908152600b60205260409020548015801590611be957506005546001600160a01b031615155b15611dc757611c0d307389e5db8b5aa49aa85ac63f691524311aeb649eba83612219565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c4057611c40613827565b6001600160a01b039283166020918202929092010152600654825191169082906001908110611c7157611c71613827565b6001600160a01b039092166020928302919091019091015260405163d06ca61f60e01b81525f907389e5db8b5aa49aa85ac63f691524311aeb649eba9063d06ca61f90611cc490869086906004016139d2565b5f60405180830381865afa925050508015611d0057506040513d5f823e601f3d908101601f19168201604052611cfd91908101906139ea565b60015b611d0c57505050611f60565b612710600254612710611d1f91906136c8565b82600181518110611d3257611d32613827565b6020026020010151611d4491906136b1565b611d4e91906136ef565b91505060405163791ac94760e01b81527389e5db8b5aa49aa85ac63f691524311aeb649eba9063791ac94790611d909086908590879030904290600401613a7f565b5f604051808303815f87803b158015611da7575f80fd5b505af1925050508015611db8575060015b611dc457505050611f60565b50505b475f819003611dd7575050611f60565b5f611de15f612fd7565b6007549091505f5b81811015611f23575f82611dfd83866137ed565b611e07919061397c565b90505f60078281548110611e1d57611e1d613827565b5f918252602090912001546040516306c78c5160e11b81526001600160a01b03909116600482018190526024820188905291503090630d8f18a2906044016020604051808303815f875af1925050508015611e95575060408051601f3d908101601f19168201909252611e92918101906137d6565b60015b15611f19578015611f17575f6001600160a01b038a1615801590611eb7575060015b15611ef557612710611eca60c8846136b1565b611ed491906136ef565b90505f81118015611eed5750611eeb838b83613026565b155b15611ef557505f5b611f0983611f0383856136c8565b86612c46565b505050505050505050611f60565b505b5050600101611de9565b5060405162461bcd60e51b815260206004820152601160248201527010dbdb9d995c9cda5bdb8819985a5b1959607a1b6044820152606401610b04565b506006805460ff60a81b19169055565b6003546001600160a01b03163314611f9a5760405162461bcd60e51b8152600401610b049061367a565b6001600160a01b0382165f818152600d6020908152604091829020805460ff191685151590811790915591519182527f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa99101610f37565b6003546001600160a01b0316331461201b5760405162461bcd60e51b8152600401610b049061367a565b60068054821515600160a01b0260ff60a01b199091161790556040517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a12906116a790831515815260200190565b6003546001600160a01b031633146120925760405162461bcd60e51b8152600401610b049061367a565b6001600160a01b0381166120d75760405162461bcd60e51b815260206004820152600c60248201526b5a65726f206164647265737360a01b6044820152606401610b04565b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b805f5b81811015611ac35761216c84848381811061215257612152613827565b9050602002016020810190612167919061342d565b612abb565b600101612135565b6003546001600160a01b0316331461219e5760405162461bcd60e51b8152600401610b049061367a565b6107d08111156121e45760405162461bcd60e51b81526020600482015260116024820152700a6d8d2e0e0c2ceca40e8dede40d0d2ced607b1b6044820152606401610b04565b60028190556040518181527f3b869268152040c3a55d6a6eb0c94d3c4a55a4b59ad40ec4c603826584a87047906020016116a7565b6001600160a01b0383166122635760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610b04565b6001600160a01b0382166122ab5760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610b04565b6001600160a01b038381165f818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f8061231783612d91565b6040516020016123279190613aba565b6040516020818303038152906040528051906020012090505f81600660405160200161235d929190918252602082015260400190565b60408051808303601f19018152908290528051602090910120631e2eaeaf60e01b8252600482018190529150738366a39cc670b4001a1121b8f6a443a643e4095190631e2eaeaf90602401602060405180830381865afa1580156123c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123e791906137d6565b949350505050565b6001600160a01b03831661243a5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610b04565b6001600160a01b0382166124835760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610b04565b5f81116124c05760405162461bcd60e51b815260206004820152600b60248201526a16995c9bc8185b5bdd5b9d60aa1b6044820152606401610b04565b6001600160a01b0383165f908152600b602052604090205481111561251e5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610b04565b816001600160a01b0316836001600160a01b0316036125b057600654600160a81b900460ff166125515761255183612abb565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161259691815260200190565b60405180910390a36125ab5f80546001019055565b505050565b6001600160a01b0382165f908152600f602052604090205460ff168080156125e25750600654600160a81b900460ff16155b80156125f75750600654600160a01b900460ff165b801561260d57506005546001600160a01b031615155b80156126295750600154305f908152600b602052604090205410155b156126765760405163dd3314dd60e01b81525f6004820152309063dd3314dd906024015f604051808303815f87803b158015612663575f80fd5b505af1925050508015612674575060015b505b5f61267f611ac9565b6001600160a01b0386165f908152600d60205260408120549192509060ff16806126c057506001600160a01b0385165f908152600d602052604090205460ff165b90505f811580156126d057505f83115b80156126e65750600654600160a81b900460ff16155b9050801561272d575f6127106126fc85886136b1565b61270691906136ef565b905061271c8888612717848a6136c8565b6130f5565b6127278830836130f5565b50612738565b6127388787876130f5565b600654600160a81b900460ff1661275b5761275287612abb565b61275b86612abb565b6127685f80546001019055565b50505050505050565b6001600160a01b0381165f908152600e602052604090205460ff16156127cc5760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e48195e18db1d59195960821b6044820152606401610b04565b6001600160a01b0381165f908152600b6020526040902054801561289d576008545f5b8181101561287b57612827846008838154811061280e5761280e613827565b5f918252602090912001546001600160a01b0316612e87565b505f60135f6008848154811061283f5761283f613827565b5f9182526020808320909101546001600160a01b03908116845283820194909452604092830182209389168252929092529020556001016127ef565b508160095f82825461288d91906136c8565b9091555050600a80545f19019055505b506001600160a01b03165f908152600e60205260409020805460ff19166001179055565b6001600160a01b0381165f908152600e602052604090205460ff166129175760405162461bcd60e51b815260206004820152600c60248201526b139bdd08195e18db1d59195960a21b6044820152606401610b04565b6001600160a01b0381165f908152600e60209081526040808320805460ff19169055600b9091529020546008548115612a0e575f5b818110156129e9575f6008828154811061296857612968613827565b5f9182526020808320909101546001600160a01b0316808352601290915260409091205490915061299a9085906136b1565b6129a390613888565b6001600160a01b039182165f818152601360209081526040808320958a16808452958252808320949094559181526014825282812093815292905281205560010161294c565b508160095f8282546129fb91906137ed565b9091555050600a80546001019055505050565b5f5b81811015611ac3575f60135f60088481548110612a2f57612a2f613827565b5f9182526020808320909101546001600160a01b039081168452838201949094526040928301822093891682529290925281209190915560088054601491839185908110612a7f57612a7f613827565b5f9182526020808320909101546001600160a01b0390811684528382019490945260409283018220938916825292909252902055600101612a10565b6001600160a01b0381165f908152600e602052604090205460ff1680612ae15750600854155b15612ae95750565b6008545f5b818110156125ab57612b0d836008838154811061280e5761280e613827565b50600101612aee565b6001600160a01b038116612b595760405162461bcd60e51b815260206004820152600a6024820152695a65726f2073746f636b60b01b6044820152606401610b04565b6001600160a01b0381165f9081526010602052604090205460ff1615612bad5760405162461bcd60e51b81526020600482015260096024820152684475706c696361746560b81b6044820152606401610b04565b6001600160a01b0381165f818152601060209081526040808320805460ff1916600190811790915560078054808301825594527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890930180546001600160a01b03191685179055519182527fe1c188ab8b8ec3c960b6e42c291259ccc3152dc1824653b9dbbf22d1a97338a3910160405180910390a250565b811580612c535750600954155b15612c5d57505050565b6001600160a01b0383165f9081526011602052604090205460ff16612ce1576001600160a01b0383165f818152601160205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b03191690911790555b600954612cf2600160801b846136b1565b612cfc91906136ef565b6001600160a01b0384165f9081526012602052604081208054909190612d239084906137ed565b90915550506001600160a01b0383165f9081526015602052604081208054849290612d4f9084906137ed565b909155505060405182815281906001600160a01b038516907f35f78fc480409062fbe62f56c6977d08e2f2ab01a2dafb2842bb37e6f502c017906020016122ff565b6040805160a080820183525f808352602080840182905283850182905260608085018390526080948501839052855193840186528284526001600160a01b03969096169083015261c350938201939093526103e89381019390935282015290565b6001600160a01b0382165f908152600f60205260409020805460ff191682158015919091179091558190612e3e57506001600160a01b0382165f908152600e602052604090205460ff16155b15612e4c57612e4c82612771565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b5f80612e93848461109c565b9050805f03612ea5575f915050610bf7565b6001600160a01b038084165f90815260146020908152604080832093881683529290529081208054839290612edb9084906137ed565b90915550612eec9050838583613026565b612f83576001600160a01b038084165f90815260146020908152604080832093881683529290529081208054839290612f269084906136c8565b92505081905550826001600160a01b0316846001600160a01b03167fbcee400519acc386010c6ec8f0a21b5b4b8511743e32a5b15b7176b95a22c90983604051612f7291815260200190565b60405180910390a35f915050610bf7565b826001600160a01b0316846001600160a01b03167f0aa4d283470c904c551d18bb894d37e17674920f3261a7f854be501e25f421b783604051612fc891815260200190565b60405180910390a39392505050565b6007545f805460408051446020820152429181019190915260608101919091526080810184905290919060a001604051602081830303815290604052805190602001205f1c610bf7919061397c565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f9283928392918816916130839190613ac8565b5f604051808303815f865af19150503d805f81146130bc576040519150601f19603f3d011682016040523d82523d5f602084013e6130c1565b606091505b50915091508180156130eb5750805115806130eb5750808060200190518101906130eb919061383b565b9695505050505050565b805f0361310157505050565b6001600160a01b038084165f908152600b602052604080822054928516825290205461312d83836136c8565b6001600160a01b038087165f908152600b602052604080822093909355908616815290812080548592906131629084906137ed565b90915550613175905085858585856131c9565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516131ba91815260200190565b60405180910390a35050505050565b6008546001600160a01b0386165f908152600e602052604090205460ff16613291575f5b8181101561327f575f6008828154811061320957613209613827565b5f9182526020808320909101546001600160a01b0316808352601290915260409091205490915061323b9087906136b1565b6001600160a01b038083165f908152601360209081526040808320938d1683529290529081208054909190613271908490613800565b9091555050506001016131ed565b5083830361329157600a80545f190190555b6001600160a01b0385165f908152600e602052604090205460ff16613356575f5b81811015613344575f600882815481106132ce576132ce613827565b5f9182526020808320909101546001600160a01b031680835260129091526040909120549091506133009087906136b1565b6001600160a01b038083165f908152601360209081526040808320938c1683529290529081208054909190613336908490613ae3565b9091555050506001016132b2565b50815f0361335657600a805460010190555b6001600160a01b0386165f908152600e602052604090205460ff16801561339557506001600160a01b0385165f908152600e602052604090205460ff16155b156133b6578360095f8282546133ab91906137ed565b909155506134119050565b6001600160a01b0386165f908152600e602052604090205460ff161580156133f557506001600160a01b0385165f908152600e602052604090205460ff165b15613411578360095f82825461340b91906136c8565b90915550505b505050505050565b6001600160a01b0381168114611026575f80fd5b5f6020828403121561343d575f80fd5b8135610fec81613419565b5f5b8381101561346257818101518382015260200161344a565b50505f910152565b5f8151808452613481816020860160208601613448565b601f01601f19169290920160200192915050565b602081525f610fec602083018461346a565b5f80604083850312156134b8575f80fd5b82356134c381613419565b946020939093013593505050565b5f805f606084860312156134e3575f80fd5b83356134ee81613419565b925060208401356134fe81613419565b929592945050506040919091013590565b8015158114611026575f80fd5b5f806040838503121561352d575f80fd5b823561353881613419565b915060208301356135488161350f565b809150509250929050565b5f8060408385031215613564575f80fd5b823561356f81613419565b9150602083013561354881613419565b5f6020828403121561358f575f80fd5b5035919050565b5f80602083850312156135a7575f80fd5b823567ffffffffffffffff808211156135be575f80fd5b818501915085601f8301126135d1575f80fd5b8135818111156135df575f80fd5b8660208285010111156135f0575f80fd5b60209290920196919550909350505050565b5f60208284031215613612575f80fd5b8135610fec8161350f565b5f806020838503121561362e575f80fd5b823567ffffffffffffffff80821115613645575f80fd5b818501915085601f830112613658575f80fd5b813581811115613666575f80fd5b8660208260051b85010111156135f0575f80fd5b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610bf757610bf761369d565b81810381811115610bf757610bf761369d565b634e487b7160e01b5f52601260045260245ffd5b5f826136fd576136fd6136db565b500490565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561373f5761373f613702565b604052919050565b5f60208284031215613757575f80fd5b815167ffffffffffffffff8082111561376e575f80fd5b818401915084601f830112613781575f80fd5b81518181111561379357613793613702565b6137a6601f8201601f1916602001613716565b91508082528560208285010111156137bc575f80fd5b6137cd816020840160208601613448565b50949350505050565b5f602082840312156137e6575f80fd5b5051919050565b80820180821115610bf757610bf761369d565b8082018281125f83128015821682158216171561381f5761381f61369d565b505092915050565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561384b575f80fd5b8151610fec8161350f565b5f805f60608486031215613868575f80fd5b833561387381613419565b95602085013595506040909401359392505050565b5f600160ff1b820161389c5761389c61369d565b505f0390565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b5f6101206138f383866138a2565b8351151560a0840152602084015160c08401526040909301516001600160a01b031660e08301525061010081018290525f9181019190915261014001919050565b5f81600f0b6f7fffffffffffffffffffffffffffffff1981036139595761395961369d565b5f0392915050565b5f60208284031215613971575f80fd5b8151610fec81613419565b5f8261398a5761398a6136db565b500690565b5f815180845260208085019450602084015f5b838110156139c75781516001600160a01b0316875295820195908201906001016139a2565b509495945050505050565b828152604060208201525f6123e7604083018461398f565b5f60208083850312156139fb575f80fd5b825167ffffffffffffffff80821115613a12575f80fd5b818501915085601f830112613a25575f80fd5b815181811115613a3757613a37613702565b8060051b9150613a48848301613716565b8181529183018401918481019088841115613a61575f80fd5b938501935b83851015610db757845182529385019390850190613a66565b85815284602082015260a060408201525f613a9d60a083018661398f565b6001600160a01b0394909416606083015250608001529392505050565b60a08101610bf782846138a2565b5f8251613ad9818460208701613448565b9190910192915050565b8181035f831280158383131683831282161715613b0257613b0261369d565b509291505056fea2646970667358221220c3ffd6f41bc110a27436f1efd32e3c827f07b9792dbbdca2fbb21fddbfcc4c8d64736f6c63430008180033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
NVIDIA • Robinhood Token (NVDA) | NVDA | 0.404250 | $224.31 | $90.68 |
Apple • Robinhood Token (AAPL) | AAPL | 0.189251 | $305.28 | $57.78 |
Tesla • Robinhood Token (TSLA) | TSLA | 0.116369 | $340.91 | $39.67 |
| TREASURE | 821,794.530521 | $0.00000215 | $1.77 | |
| DIH | 3 | $0.0000102 | $0 | |
| MR.HOOD (H-O-O-D) | H-O-O-D | 10 | — | — |
| Ape Hood (APEHOOD) | APEHOOD | 10 | — | — |
Space Exploration Technologies Corp. Class A Common Stock • Robinhood Token (SPCX) | SPCX | 0.117610 | — | — |
AMD • Robinhood Token (AMD) | AMD | 0.057187 | — | — |
Alphabet Class A • Robinhood Token (GOOGL) | GOOGL | 0.007164 | — | — |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| 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 ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x70667f…188d7d | Approve | 21,824,158 | 20 days agoTue, 28 Jul 2026 18:56:27 UTC | 0x0098…3ec2 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000075 | |
| 0xf1a9c0…91c593 | Approve | 21,824,152 | 20 days agoTue, 28 Jul 2026 18:56:26 UTC | 0x0098…3ec2 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000132 | |
| 0x702bdf…ca4009 | Approve | 13,898,090 | 29 days agoSun, 19 Jul 2026 14:04:37 UTC | 0x1744…1f21 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000257 | |
| 0x6018db…889d5a | Approve | 12,722,735 | 30 days agoSat, 18 Jul 2026 05:17:02 UTC | 0x5d71…e735 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000350 | |
| 0xbf52b5…bfc0e0 | Approve | 11,849,918 | 31 days agoFri, 17 Jul 2026 04:57:24 UTC | 0x90dd…b3b8 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000388 | |
| 0x5c3fd8…c836ad | Approve | 11,446,142 | 32 days agoThu, 16 Jul 2026 17:43:35 UTC | 0x17d5…fd22 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000325 | |
| 0x11ec1d…c4e8c5 | Approve | 11,445,363 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x82e2…2138 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000320 | |
| 0x53e0a8…4ea542 | Approve | 11,444,164 | 32 days agoThu, 16 Jul 2026 17:40:16 UTC | 0x17d5…fd22 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000185 | |
| 0x27170c…2c642c | Approve | 11,444,162 | 32 days agoThu, 16 Jul 2026 17:40:16 UTC | 0x82e2…2138 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000184 | |
| 0x9e8f07…e6901c | Approve | 11,444,156 | 32 days agoThu, 16 Jul 2026 17:40:16 UTC | 0x17d5…fd22 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000325 | |
| 0x479a09…42b491 | Approve | 11,444,156 | 32 days agoThu, 16 Jul 2026 17:40:16 UTC | 0x82e2…2138 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000325 | |
| 0x2e2173…062974 | Approve | 10,864,922 | 32 days agoThu, 16 Jul 2026 01:33:46 UTC | 0x9499…378c | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000163 | |
| 0x9a7922…f7eaae | Approve | 10,715,038 | 32 days agoWed, 15 Jul 2026 21:23:49 UTC | 0x1285…599a | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000163 | |
| 0x8766ab…ce30e3 | Approve | 10,667,648 | 33 days agoWed, 15 Jul 2026 20:04:47 UTC | 0x7781…a936 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000165 | |
| 0xf32ed6…8ae2bf | Approve | 10,581,625 | 33 days agoWed, 15 Jul 2026 17:41:37 UTC | 0xd9a6…3072 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000304 | |
| 0x921adc…5be0ac | Approve | 10,440,164 | 33 days agoWed, 15 Jul 2026 13:47:11 UTC | 0x355b…4f4f | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000287 | |
| 0x4f2338…12ad33 | Approve | 10,321,738 | 33 days agoWed, 15 Jul 2026 10:29:53 UTC | 0x75c7…8a97 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000259 | |
| 0x93d1ee…f2cd33 | Approve | 10,048,107 | 33 days agoWed, 15 Jul 2026 02:54:06 UTC | 0x355b…4f4f | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000238 | |
| 0xdd59af…69636b | Approve | 9,866,337 | 33 days agoTue, 14 Jul 2026 21:50:21 UTC | 0x0098…3ec2 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000142 | |
| 0x46c30c…f9d86c | Approve | 9,866,329 | 33 days agoTue, 14 Jul 2026 21:50:20 UTC | 0x0098…3ec2 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000249 | |
| 0xc3fb59…561bbd | Approve | 9,655,547 | 34 days agoTue, 14 Jul 2026 15:58:46 UTC | 0x17d5…fd22 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000150 | |
| 0xc040d5…dc2686 | Approve | 9,655,545 | 34 days agoTue, 14 Jul 2026 15:58:45 UTC | 0x82e2…2138 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000156 | |
| 0xbf5dca…eee30f | Approve | 9,655,540 | 34 days agoTue, 14 Jul 2026 15:58:45 UTC | 0x17d5…fd22 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000247 | |
| 0xf93b06…9880cf | Approve | 9,655,538 | 34 days agoTue, 14 Jul 2026 15:58:45 UTC | 0x82e2…2138 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00000244 | |
| 0x4c5faa…3e99c8 | Transfer | 9,365,314 | 34 days agoTue, 14 Jul 2026 07:54:37 UTC | 0x6c48…ee87 | IN | Sherwood Treasure Chest | $0.000 ETH | 0.00003861 |
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x70667f…188d7d | 20 days agoTue, 28 Jul 2026 18:56:27 UTC | Approval | [0] 0x000000000000…65d23ec2 [1] 0x000000000000…bc152535 data: 0xffffffffffffffffff…ffffffff |
| 0xf1a9c0…91c593 | 20 days agoTue, 28 Jul 2026 18:56:26 UTC | Approval | [0] 0x000000000000…65d23ec2 [1] 0x000000000000…bc152535 data: 0xffffffffffffffffff…ffffffff |
| 0x702bdf…ca4009 | 29 days agoSun, 19 Jul 2026 14:04:37 UTC | Approval | [0] 0x000000000000…246e1f21 [1] 0x000000000000…172bb7fe data: 0xffffffffffffffffff…ffffffff |
| 0x58fcd0…6cc55a | 30 days agoSat, 18 Jul 2026 05:17:02 UTC | Transfer | [0] 0x000000000000…1114e735 [1] 0x000000000000…6d7e337a data: 0x000000000000000000…d3a00000 |
| 0x58fcd0…6cc55a | 30 days agoSat, 18 Jul 2026 05:17:02 UTC | Transfer | [0] 0x000000000000…1114e735 [1] 0x000000000000…42d0907c data: 0x000000000000000000…d6e00000 |
| 0x6018db…889d5a | 30 days agoSat, 18 Jul 2026 05:17:02 UTC | Approval | [0] 0x000000000000…1114e735 [1] 0x000000000000…262c40dc data: 0xffffffffffffffffff…ffffffff |
| 0xbf52b5…bfc0e0 | 31 days agoFri, 17 Jul 2026 04:57:24 UTC | Approval | [0] 0x000000000000…fa10b3b8 [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0x201364…dba3e3 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…5437fd22 [1] 0x000000000000…adad4fe3 data: 0x000000000000000000…eba30007 |
| 0x201364…dba3e3 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…5437fd22 [1] 0x000000000000…8f8a93f9 data: 0x000000000000000000…ef749498 |
| 0x201364…dba3e3 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…5437fd22 [1] 0x000000000000…1c003b2d data: 0x000000000000000000…ca5da1f3 |
| 0x201364…dba3e3 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…5437fd22 [1] 0x000000000000…320d9eec data: 0x000000000000000000…d2820ed5 |
| 0x201364…dba3e3 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…5437fd22 [1] 0x000000000000…fae35eea data: 0x000000000000000000…99aeebb8 |
| 0x201364…dba3e3 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…5437fd22 [1] 0x000000000000…d2023fdc data: 0x000000000000000000…7610b226 |
| 0x201364…dba3e3 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | Transfer | [0] 0x000000000000…5437fd22 [1] 0x000000000000…6d7e337a data: 0x000000000000000000…95c750a9 |
| 0x201364…dba3e3 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | Transfer | [0] 0x000000000000…5437fd22 [1] 0x000000000000…42d0907c data: 0x000000000000000000…4401d5f4 |
| 0x5c3fd8…c836ad | 32 days agoThu, 16 Jul 2026 17:43:35 UTC | Approval | [0] 0x000000000000…5437fd22 [1] 0x000000000000…e1a4f53d data: 0xffffffffffffffffff…ffffffff |
| 0x34cb90…f03914 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…c69b2138 [1] 0x000000000000…adad4fe3 data: 0x000000000000000000…2c455b98 |
| 0x34cb90…f03914 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…c69b2138 [1] 0x000000000000…8f8a93f9 data: 0x000000000000000000…2cebbff1 |
| 0x34cb90…f03914 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…c69b2138 [1] 0x000000000000…1c003b2d data: 0x000000000000000000…358a5f84 |
| 0x34cb90…f03914 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…c69b2138 [1] 0x000000000000…320d9eec data: 0x000000000000000000…8243dd44 |
| 0x34cb90…f03914 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…c69b2138 [1] 0x000000000000…fae35eea data: 0x000000000000000000…91ed0c1d |
| 0x34cb90…f03914 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x0aa4d2…21b7 | [0] 0x000000000000…c69b2138 [1] 0x000000000000…d2023fdc data: 0x000000000000000000…1b87bf9d |
| 0x34cb90…f03914 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | Transfer | [0] 0x000000000000…c69b2138 [1] 0x000000000000…6d7e337a data: 0x000000000000000000…5a77fff0 |
| 0x34cb90…f03914 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | Transfer | [0] 0x000000000000…c69b2138 [1] 0x000000000000…42d0907c data: 0x000000000000000000…fc67f9e0 |
| 0x11ec1d…c4e8c5 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | Approval | [0] 0x000000000000…c69b2138 [1] 0x000000000000…e1a4f53d data: 0xffffffffffffffffff…ffffffff |
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xdbdf0221…bdd9a4 | Transfer | 17,425,893 | 25 days agoThu, 23 Jul 2026 16:19:43 UTC | 0xcaf7…5d11 | IN | 0x3c48…337a | $0.001 DIH | ||
| 0xfbd823fb…1066ef | Transfer | 17,420,858 | 25 days agoThu, 23 Jul 2026 16:11:18 UTC | 0xcaf7…5d11 | IN | 0x3c48…337a | $0.001 DIH | ||
| 0x51aff050…5a0e4d | Transfer | 17,414,848 | 25 days agoThu, 23 Jul 2026 16:01:16 UTC | 0xcaf7…5d11 | IN | 0x3c48…337a | $0.001 DIH | ||
| 0x58fcd029…6cc55a | Transfer | 12,722,736 | 30 days agoSat, 18 Jul 2026 05:17:02 UTC | 0x5d71…e735 | IN | 0x3c48…337a | $NaN9,000 TREASURE | ||
| 0x20136440…dba3e3 | Transfer | 11,479,318 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x3c48…337a | OUT | 0x17d5…fd22 | 0.000270 GOOGL | Alphabet Class A • Robinhood Token (GOOGL) | |
| 0x20136440…dba3e3 | Transfer | 11,479,318 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x3c48…337a | OUT | 0x17d5…fd22 | $1.320.004313 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x20136440…dba3e3 | Transfer | 11,479,318 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x3c48…337a | OUT | 0x17d5…fd22 | $0.350.001036 TSLA | Tesla • Robinhood Token (TSLA) | |
| 0x20136440…dba3e3 | Transfer | 11,479,318 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x3c48…337a | OUT | 0x17d5…fd22 | $1.100.004925 NVDA | NVIDIA • Robinhood Token (NVDA) | |
| 0x20136440…dba3e3 | Transfer | 11,479,318 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x3c48…337a | OUT | 0x17d5…fd22 | 0.004249 SPCX | Space Exploration Technologies Corp. Class A Common Stock • Robinhood Token (SPCX) | |
| 0x20136440…dba3e3 | Transfer | 11,479,318 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x3c48…337a | OUT | 0x17d5…fd22 | 0.000236 AMD | AMD • Robinhood Token (AMD) | |
| 0x20136440…dba3e3 | Transfer | 11,479,318 | 32 days agoThu, 16 Jul 2026 18:38:56 UTC | 0x17d5…fd22 | IN | 0x3c48…337a | $NaN291,590.958566 TREASURE | ||
| 0x34cb90a8…f03914 | Transfer | 11,445,366 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x3c48…337a | OUT | 0x82e2…2138 | 0.000248 GOOGL | Alphabet Class A • Robinhood Token (GOOGL) | |
| 0x34cb90a8…f03914 | Transfer | 11,445,366 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x3c48…337a | OUT | 0x82e2…2138 | $1.860.006080 AAPL | Apple • Robinhood Token (AAPL) | |
| 0x34cb90a8…f03914 | Transfer | 11,445,366 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x3c48…337a | OUT | 0x82e2…2138 | $0.820.002406 TSLA | Tesla • Robinhood Token (TSLA) | |
| 0x34cb90a8…f03914 | Transfer | 11,445,366 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x3c48…337a | OUT | 0x82e2…2138 | $1.590.007090 NVDA | NVIDIA • Robinhood Token (NVDA) | |
| 0x34cb90a8…f03914 | Transfer | 11,445,366 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x3c48…337a | OUT | 0x82e2…2138 | 0.003895 SPCX | Space Exploration Technologies Corp. Class A Common Stock • Robinhood Token (SPCX) | |
| 0x34cb90a8…f03914 | Transfer | 11,445,366 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x3c48…337a | OUT | 0x82e2…2138 | 0.000813 AMD | AMD • Robinhood Token (AMD) | |
| 0x34cb90a8…f03914 | Transfer | 11,445,366 | 32 days agoThu, 16 Jul 2026 17:42:17 UTC | 0x82e2…2138 | IN | 0x3c48…337a | $NaN26,727.781742 TREASURE | ||
| 0xd49adf95…7f9730 | Transfer | 10,624,538 | 33 days agoWed, 15 Jul 2026 18:52:59 UTC | 0x2ba5…aaf3 | IN | 0x3c48…337a | 10 H-O-O-D | MR.HOOD (H-O-O-D) | |
| 0xa6875d6b…970d88 | Transfer | 10,581,625 | 33 days agoWed, 15 Jul 2026 17:41:37 UTC | 0x3c48…337a | OUT | 0xd9a6…3072 | 0.000232 GOOGL | Alphabet Class A • Robinhood Token (GOOGL) | |
| 0xa6875d6b…970d88 | Transfer | 10,581,625 | 33 days agoWed, 15 Jul 2026 17:41:37 UTC | 0x3c48…337a | OUT | 0xd9a6…3072 | $1.130.003703 AAPL | Apple • Robinhood Token (AAPL) | |
| 0xa6875d6b…970d88 | Transfer | 10,581,625 | 33 days agoWed, 15 Jul 2026 17:41:37 UTC | 0x3c48…337a | OUT | 0xd9a6…3072 | $0.300.000889 TSLA | Tesla • Robinhood Token (TSLA) | |
| 0xa6875d6b…970d88 | Transfer | 10,581,625 | 33 days agoWed, 15 Jul 2026 17:41:37 UTC | 0x3c48…337a | OUT | 0xd9a6…3072 | $0.950.004228 NVDA | NVIDIA • Robinhood Token (NVDA) | |
| 0xa6875d6b…970d88 | Transfer | 10,581,625 | 33 days agoWed, 15 Jul 2026 17:41:37 UTC | 0x3c48…337a | OUT | 0xd9a6…3072 | 0.003648 SPCX | Space Exploration Technologies Corp. Class A Common Stock • Robinhood Token (SPCX) | |
| 0xa6875d6b…970d88 | Transfer | 10,581,625 | 33 days agoWed, 15 Jul 2026 17:41:37 UTC | 0x3c48…337a | OUT | 0xd9a6…3072 | 0.000202 AMD | AMD • Robinhood Token (AMD) |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 9,313,068 | 34 days agoTue, 14 Jul 2026 06:27:21 UTC | 0x828dcb…86b030 | CALL | swapExactTokensForETHSupportingFeeOnTransferTokens | 0x3c48…337a | OUT | 0x8366…0951 | 0.00306 ETH |
| 9,313,068 | 34 days agoTue, 14 Jul 2026 06:27:21 UTC | 0x828dcb…86b030 | CALL | swapExactTokensForETHSupportingFeeOnTransferTokens | 0x89e5…9eba | IN | 0x3c48…337a | 0.00306 ETH |
| 9,090,164 | 34 days agoTue, 14 Jul 2026 00:14:34 UTC | 0x152025…c71f37 | CALL | SigmaSwap | 0x3c48…337a | OUT | 0x8366…0951 | 0.00517 ETH |
| 9,090,164 | 34 days agoTue, 14 Jul 2026 00:14:34 UTC | 0x152025…c71f37 | CALL | SigmaSwap | 0x89e5…9eba | IN | 0x3c48…337a | 0.00517 ETH |