ETH Price: $1,976.24 (+0.71%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve244300032026-02-11 0:39:4711 days ago1770770387IN
0x7F960182...fc40a9355
0 ETH0.000003010.06512748
Approve242955202026-01-23 5:52:4730 days ago1769147567IN
0x7F960182...fc40a9355
0 ETH0.000024820.53299622
Approve242546052026-01-17 12:56:4735 days ago1768654607IN
0x7F960182...fc40a9355
0 ETH0.000001680.03630686
Transfer242349612026-01-14 19:13:4738 days ago1768418027IN
0x7F960182...fc40a9355
0 ETH0.000011430.17218126
Approve240895642025-12-25 12:13:3558 days ago1766664815IN
0x7F960182...fc40a9355
0 ETH0.0000130.53532577
Approve240842932025-12-24 18:32:2359 days ago1766601143IN
0x7F960182...fc40a9355
0 ETH0.00000250.05413343
Approve239896162025-12-11 13:04:4772 days ago1765458287IN
0x7F960182...fc40a9355
0 ETH0.000014810.31841117
Approve237811172025-11-12 5:39:47102 days ago1762925987IN
0x7F960182...fc40a9355
0 ETH0.000008080.17365511
Approve235051432025-10-04 14:55:35140 days ago1759589735IN
0x7F960182...fc40a9355
0 ETH0.000051491.10703831
Approve234871302025-10-02 2:29:47143 days ago1759372187IN
0x7F960182...fc40a9355
0 ETH0.000017140.70560704
Approve234460912025-09-26 8:46:47148 days ago1758876407IN
0x7F960182...fc40a9355
0 ETH0.000011380.46965514
Approve234448742025-09-26 4:40:59149 days ago1758861659IN
0x7F960182...fc40a9355
0 ETH0.000016210.66767317
Approve234448662025-09-26 4:39:23149 days ago1758861563IN
0x7F960182...fc40a9355
0 ETH0.000032480.69737983
Approve234298472025-09-24 2:15:11151 days ago1758680111IN
0x7F960182...fc40a9355
0 ETH0.000011620.24969339
Approve234109572025-09-21 10:54:23153 days ago1758452063IN
0x7F960182...fc40a9355
0 ETH0.000007180.15544251
Approve234109102025-09-21 10:44:59153 days ago1758451499IN
0x7F960182...fc40a9355
0 ETH0.000007220.15624791
Approve234099642025-09-21 7:34:47154 days ago1758440087IN
0x7F960182...fc40a9355
0 ETH0.000007910.17113587
Approve232479162025-08-29 16:16:11176 days ago1756484171IN
0x7F960182...fc40a9355
0 ETH0.00007723.17824837
Approve232379812025-08-28 6:59:35178 days ago1756364375IN
0x7F960182...fc40a9355
0 ETH0.000057341.23125767
Approve232107932025-08-24 11:56:59181 days ago1756036619IN
0x7F960182...fc40a9355
0 ETH0.000030790.66115639
Approve231513842025-08-16 5:02:23190 days ago1755320543IN
0x7F960182...fc40a9355
0 ETH0.000021070.72230808
Approve231450612025-08-15 7:52:35190 days ago1755244355IN
0x7F960182...fc40a9355
0 ETH0.000027430.58945791
Approve231315662025-08-13 10:35:11192 days ago1755081311IN
0x7F960182...fc40a9355
0 ETH0.000124972.68526899
Approve231091802025-08-10 7:30:47196 days ago1754811047IN
0x7F960182...fc40a9355
0 ETH0.00002320.49866909
Approve231070122025-08-10 0:14:35196 days ago1754784875IN
0x7F960182...fc40a9355
0 ETH0.000026890.57827246
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer230007842025-07-26 3:59:23211 days ago1753502363
0x7F960182...fc40a9355
0.24655602 ETH
Transfer230007842025-07-26 3:59:23211 days ago1753502363
0x7F960182...fc40a9355
0.24655602 ETH
Transfer230007842025-07-26 3:59:23211 days ago1753502363
0x7F960182...fc40a9355
0.04186889 ETH
Transfer230007842025-07-26 3:59:23211 days ago1753502363
0x7F960182...fc40a9355
0.04186889 ETH
Transfer230007752025-07-26 3:57:35211 days ago1753502255
0x7F960182...fc40a9355
0.09239617 ETH
Transfer230007752025-07-26 3:57:35211 days ago1753502255
0x7F960182...fc40a9355
0.09239617 ETH
Transfer230007652025-07-26 3:55:35211 days ago1753502135
0x7F960182...fc40a9355
0.0046485 ETH
Transfer230007652025-07-26 3:55:35211 days ago1753502135
0x7F960182...fc40a9355
0.0046485 ETH
Transfer230007642025-07-26 3:55:23211 days ago1753502123
0x7F960182...fc40a9355
0.39160167 ETH
Transfer230007642025-07-26 3:55:23211 days ago1753502123
0x7F960182...fc40a9355
0.39160167 ETH
Transfer230007542025-07-26 3:53:23211 days ago1753502003
0x7F960182...fc40a9355
0.17940256 ETH
Transfer230007542025-07-26 3:53:23211 days ago1753502003
0x7F960182...fc40a9355
0.17940256 ETH
Transfer230007332025-07-26 3:49:11211 days ago1753501751
0x7F960182...fc40a9355
0.24319331 ETH
Transfer230007332025-07-26 3:49:11211 days ago1753501751
0x7F960182...fc40a9355
0.24319331 ETH
Transfer230007242025-07-26 3:47:23211 days ago1753501643
0x7F960182...fc40a9355
0.14878825 ETH
Transfer230007242025-07-26 3:47:23211 days ago1753501643
0x7F960182...fc40a9355
0.14878825 ETH
Transfer230006992025-07-26 3:42:23211 days ago1753501343
0x7F960182...fc40a9355
0.01248793 ETH
Transfer230006992025-07-26 3:42:23211 days ago1753501343
0x7F960182...fc40a9355
0.01248793 ETH
Transfer230006972025-07-26 3:41:59211 days ago1753501319
0x7F960182...fc40a9355
0.11447737 ETH
Transfer230006972025-07-26 3:41:59211 days ago1753501319
0x7F960182...fc40a9355
0.11447737 ETH
Transfer230006762025-07-26 3:37:47211 days ago1753501067
0x7F960182...fc40a9355
0.0871937 ETH
Transfer230006762025-07-26 3:37:47211 days ago1753501067
0x7F960182...fc40a9355
0.0871937 ETH
Transfer230006662025-07-26 3:35:47211 days ago1753500947
0x7F960182...fc40a9355
0.43195711 ETH
Transfer230006662025-07-26 3:35:47211 days ago1753500947
0x7F960182...fc40a9355
0.43195711 ETH
Transfer230006622025-07-26 3:34:59211 days ago1753500899
0x7F960182...fc40a9355
0.00130476 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
JOY

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : JOY.sol
// SPDX-License-Identifier: Unlicensed


/*
Telegram: https://t.me/biscuitjoy
X: https://x.com/biscuitjoyeth    
*/


pragma solidity ^0.8.23;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract JOY is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = unicode"Biscuit";
    string private constant _symbol = unicode"JOY";
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000000000000;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;

    uint256 private _initialBuyTax = 15;
    uint256 private _initialSellTax = 15;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 40;
    uint256 private _reduceSellTaxAt = 40;
    uint256 private _preventSwapBefore = 30;
    uint256 private _buyCount = 0;

    uint256 public _maxTxAmount = 20000000000000000;
    uint256 public _maxWalletSize = 20000000000000000;
    uint256 public _taxSwapThreshold = 20000000000000000;
    uint256 public _maxTaxSwap = 20000000000000000;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")
        );
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance > _taxSwapThreshold &&
                _buyCount > _preventSwapBefore
            ) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        uniswapV2Router.addLiquidityETH{ value: address(this).balance }(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function reduceFee(uint256 _newFee) external {
        require(_msgSender() == _taxWallet);
        require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax);
        _finalBuyTax = _newFee;
        _finalSellTax = _newFee;
    }

    function rescueEth() external {
        require(_msgSender() == _taxWallet);
        payable(_taxWallet).transfer(address(this).balance);
    }

    function rescueErc20() external {
        require(_msgSender() == _taxWallet);
        uint256 _amount = IERC20(address(this)).balanceOf(address(this));
        IERC20(address(this)).transfer(_taxWallet, _amount);
    }

    function updateSellTax(uint256 newSellTax) external onlyOwner {
        require(newSellTax <= 50, "Sell tax too high");
        _finalSellTax = newSellTax;
    }

    function updateBuyTax(uint256 newBuyTax) external onlyOwner {
        require(newBuyTax <= 50, "Buy tax too high");
        _finalBuyTax = newBuyTax;
    }

    function manualSwap() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }

    receive() external payable {}
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueErc20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600f600581905560068190555f6007819055600881905560286009819055600a55601e600b55600c81905566470de4df820000600d819055600e819055918290556010919091556012805461ffff60a81b19169055601381905560145534801561006c575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916339081179091555f9081526001602081905260408220670de0b6b3a76400009055906003906100f15f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055308152600390935281832080548516600190811790915560045490911683529120805490921617905561014e3390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a764000060405161019a91815260200190565b60405180910390a361195e806101af5f395ff3fe60806040526004361061013f575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb14610370578063bf474bed1461038f578063c9567bf9146103a4578063ce31a06b146103b8578063dd62ed3e146103cc578063ec1f3f6314610410575f80fd5b8063715018a6146102cd578063751039fc146102e15780637d1db4a5146102f55780638da5cb5b1461030a5780638f9a55c01461033057806395d89b4114610345575f80fd5b806323b872dd1161010457806323b872dd14610218578063313ce56714610237578063436d33401461025257806351bc3c85146102715780635e0426cb1461028557806370a0823114610299575f80fd5b806306fdde031461014a578063095ea7b31461018b5780630faee56f146101ba57806312185a39146101dd57806318160ddd146101fe575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b50604080518082019091526007815266109a5cd8dd5a5d60ca1b60208201525b6040516101829190611611565b60405180910390f35b348015610196575f80fd5b506101aa6101a5366004611671565b61042f565b6040519015158152602001610182565b3480156101c5575f80fd5b506101cf60105481565b604051908152602001610182565b3480156101e8575f80fd5b506101fc6101f736600461169b565b610445565b005b348015610209575f80fd5b50670de0b6b3a76400006101cf565b348015610223575f80fd5b506101aa6102323660046116b2565b6104c1565b348015610242575f80fd5b5060405160098152602001610182565b34801561025d575f80fd5b506101fc61026c36600461169b565b610528565b34801561027c575f80fd5b506101fc61059a565b348015610290575f80fd5b506101fc6105eb565b3480156102a4575f80fd5b506101cf6102b33660046116f0565b6001600160a01b03165f9081526001602052604090205490565b3480156102d8575f80fd5b506101fc6106e1565b3480156102ec575f80fd5b506101fc610752565b348015610300575f80fd5b506101cf600d5481565b348015610315575f80fd5b505f546040516001600160a01b039091168152602001610182565b34801561033b575f80fd5b506101cf600e5481565b348015610350575f80fd5b506040805180820190915260038152624a4f5960e81b6020820152610175565b34801561037b575f80fd5b506101aa61038a366004611671565b6107c3565b34801561039a575f80fd5b506101cf600f5481565b3480156103af575f80fd5b506101fc6107cf565b3480156103c3575f80fd5b506101fc610b6c565b3480156103d7575f80fd5b506101cf6103e636600461170b565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561041b575f80fd5b506101fc61042a36600461169b565b610bc4565b5f61043b338484610c09565b5060015b92915050565b5f546001600160a01b031633146104775760405162461bcd60e51b815260040161046e90611742565b60405180910390fd5b60328111156104bc5760405162461bcd60e51b81526020600482015260116024820152700a6cad8d840e8c2f040e8dede40d0d2ced607b1b604482015260640161046e565b600855565b5f6104cd848484610d2c565b61051e843361051985604051806060016040528060288152602001611901602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061128d565b610c09565b5060019392505050565b5f546001600160a01b031633146105515760405162461bcd60e51b815260040161046e90611742565b60328111156105955760405162461bcd60e51b815260206004820152601060248201526f084eaf240e8c2f040e8dede40d0d2ced60831b604482015260640161046e565b600755565b6004546001600160a01b0316336001600160a01b0316146105b9575f80fd5b305f9081526001602052604090205480156105d7576105d7816112c5565b4780156105e7576105e781611435565b5050565b6004546001600160a01b0316336001600160a01b03161461060a575f80fd5b6040516370a0823160e01b815230600482018190525f916370a0823190602401602060405180830381865afa158015610645573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106699190611777565b6004805460405163a9059cbb60e01b81526001600160a01b039091169181019190915260248101829052909150309063a9059cbb906044016020604051808303815f875af11580156106bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e7919061178e565b5f546001600160a01b0316331461070a5760405162461bcd60e51b815260040161046e90611742565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461077b5760405162461bcd60e51b815260040161046e90611742565b670de0b6b3a7640000600d819055600e8190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b5f61043b338484610d2c565b5f546001600160a01b031633146107f85760405162461bcd60e51b815260040161046e90611742565b601254600160a01b900460ff16156108525760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161046e565b601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561088f903090670de0b6b3a7640000610c09565b60115f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090391906117ad565b6001600160a01b031663c9c653963060115f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610962573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098691906117ad565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f491906117ad565b601280546001600160a01b039283166001600160a01b03199091161790556011541663f305d7194730610a3b816001600160a01b03165f9081526001602052604090205490565b5f80610a4e5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ab4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ad991906117c8565b505060125460115460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b52919061178e565b506012805462ff00ff60a01b19166201000160a01b179055565b6004546001600160a01b0316336001600160a01b031614610b8b575f80fd5b6004546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610bc1573d5f803e3d5ffd5b50565b6004546001600160a01b0316336001600160a01b031614610be3575f80fd5b6007548111158015610bf757506008548111155b610bff575f80fd5b6007819055600855565b6001600160a01b038316610c6b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161046e565b6001600160a01b038216610ccc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161046e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161046e565b6001600160a01b038216610df25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161046e565b5f8111610e535760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161046e565b5f80546001600160a01b03858116911614801590610e7e57505f546001600160a01b03848116911614155b1561115057610eaf6064610ea9600954600c5411610e9e57600554610ea2565b6007545b859061146c565b906114f1565b6012549091506001600160a01b038581169116148015610edd57506011546001600160a01b03848116911614155b8015610f0157506001600160a01b0383165f9081526003602052604090205460ff16155b15610fe757600d54821115610f585760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161046e565b600e5482610f7a856001600160a01b03165f9081526001602052604090205490565b610f849190611807565b1115610fd25760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161046e565b600c8054905f610fe18361181a565b91905055505b6012546001600160a01b03848116911614801561100d57506001600160a01b0384163014155b1561103a576110376064610ea9600a54600c541161102d57600654610ea2565b600854859061146c565b90505b305f90815260016020526040902054601254600160a81b900460ff1615801561107057506012546001600160a01b038581169116145b80156110855750601254600160b01b900460ff165b80156110925750600f5481115b80156110a15750600b54600c54115b1561114e576014544311156110b5575f6013555b6003601354106111075760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000604482015260640161046e565b61112461111f8461111a84601054611532565b611532565b6112c5565b4780156111345761113447611435565b60138054905f6111438361181a565b909155505043601455505b505b80156111c857305f9081526001602052604090205461116f9082611546565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111bf9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546111ea90836115a4565b6001600160a01b0385165f9081526001602052604090205561122d61120f83836115a4565b6001600160a01b0385165f9081526001602052604090205490611546565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61127685856115a4565b60405190815260200160405180910390a350505050565b5f81848411156112b05760405162461bcd60e51b815260040161046e9190611611565b505f6112bc8486611832565b95945050505050565b6012805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061130b5761130b611845565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611362573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138691906117ad565b8160018151811061139957611399611845565b6001600160a01b0392831660209182029290920101526011546113bf9130911684610c09565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac947906113f79085905f90869030904290600401611859565b5f604051808303815f87803b15801561140e575f80fd5b505af1158015611420573d5f803e3d5ffd5b50506012805460ff60a81b1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156105e7573d5f803e3d5ffd5b5f825f0361147b57505f61043f565b5f61148683856118ca565b90508261149385836118e1565b146114ea5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161046e565b9392505050565b5f6114ea83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115e5565b5f81831161154057826114ea565b50919050565b5f806115528385611807565b9050838110156114ea5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161046e565b5f6114ea83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061128d565b5f81836116055760405162461bcd60e51b815260040161046e9190611611565b505f6112bc84866118e1565b5f602080835283518060208501525f5b8181101561163d57858101830151858201604001528201611621565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bc1575f80fd5b5f8060408385031215611682575f80fd5b823561168d8161165d565b946020939093013593505050565b5f602082840312156116ab575f80fd5b5035919050565b5f805f606084860312156116c4575f80fd5b83356116cf8161165d565b925060208401356116df8161165d565b929592945050506040919091013590565b5f60208284031215611700575f80fd5b81356114ea8161165d565b5f806040838503121561171c575f80fd5b82356117278161165d565b915060208301356117378161165d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611787575f80fd5b5051919050565b5f6020828403121561179e575f80fd5b815180151581146114ea575f80fd5b5f602082840312156117bd575f80fd5b81516114ea8161165d565b5f805f606084860312156117da575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561043f5761043f6117f3565b5f6001820161182b5761182b6117f3565b5060010190565b8181038181111561043f5761043f6117f3565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156118a95784516001600160a01b031683529383019391830191600101611884565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761043f5761043f6117f3565b5f826118fb57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203f5335a7c57c3fd3dde986c4a4c037a15cfb51b8f6cb3e4096fb61207007c71964736f6c63430008180033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063715018a6116100b3578063a9059cbb1161006d578063a9059cbb14610370578063bf474bed1461038f578063c9567bf9146103a4578063ce31a06b146103b8578063dd62ed3e146103cc578063ec1f3f6314610410575f80fd5b8063715018a6146102cd578063751039fc146102e15780637d1db4a5146102f55780638da5cb5b1461030a5780638f9a55c01461033057806395d89b4114610345575f80fd5b806323b872dd1161010457806323b872dd14610218578063313ce56714610237578063436d33401461025257806351bc3c85146102715780635e0426cb1461028557806370a0823114610299575f80fd5b806306fdde031461014a578063095ea7b31461018b5780630faee56f146101ba57806312185a39146101dd57806318160ddd146101fe575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b50604080518082019091526007815266109a5cd8dd5a5d60ca1b60208201525b6040516101829190611611565b60405180910390f35b348015610196575f80fd5b506101aa6101a5366004611671565b61042f565b6040519015158152602001610182565b3480156101c5575f80fd5b506101cf60105481565b604051908152602001610182565b3480156101e8575f80fd5b506101fc6101f736600461169b565b610445565b005b348015610209575f80fd5b50670de0b6b3a76400006101cf565b348015610223575f80fd5b506101aa6102323660046116b2565b6104c1565b348015610242575f80fd5b5060405160098152602001610182565b34801561025d575f80fd5b506101fc61026c36600461169b565b610528565b34801561027c575f80fd5b506101fc61059a565b348015610290575f80fd5b506101fc6105eb565b3480156102a4575f80fd5b506101cf6102b33660046116f0565b6001600160a01b03165f9081526001602052604090205490565b3480156102d8575f80fd5b506101fc6106e1565b3480156102ec575f80fd5b506101fc610752565b348015610300575f80fd5b506101cf600d5481565b348015610315575f80fd5b505f546040516001600160a01b039091168152602001610182565b34801561033b575f80fd5b506101cf600e5481565b348015610350575f80fd5b506040805180820190915260038152624a4f5960e81b6020820152610175565b34801561037b575f80fd5b506101aa61038a366004611671565b6107c3565b34801561039a575f80fd5b506101cf600f5481565b3480156103af575f80fd5b506101fc6107cf565b3480156103c3575f80fd5b506101fc610b6c565b3480156103d7575f80fd5b506101cf6103e636600461170b565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b34801561041b575f80fd5b506101fc61042a36600461169b565b610bc4565b5f61043b338484610c09565b5060015b92915050565b5f546001600160a01b031633146104775760405162461bcd60e51b815260040161046e90611742565b60405180910390fd5b60328111156104bc5760405162461bcd60e51b81526020600482015260116024820152700a6cad8d840e8c2f040e8dede40d0d2ced607b1b604482015260640161046e565b600855565b5f6104cd848484610d2c565b61051e843361051985604051806060016040528060288152602001611901602891396001600160a01b038a165f908152600260209081526040808320338452909152902054919061128d565b610c09565b5060019392505050565b5f546001600160a01b031633146105515760405162461bcd60e51b815260040161046e90611742565b60328111156105955760405162461bcd60e51b815260206004820152601060248201526f084eaf240e8c2f040e8dede40d0d2ced60831b604482015260640161046e565b600755565b6004546001600160a01b0316336001600160a01b0316146105b9575f80fd5b305f9081526001602052604090205480156105d7576105d7816112c5565b4780156105e7576105e781611435565b5050565b6004546001600160a01b0316336001600160a01b03161461060a575f80fd5b6040516370a0823160e01b815230600482018190525f916370a0823190602401602060405180830381865afa158015610645573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106699190611777565b6004805460405163a9059cbb60e01b81526001600160a01b039091169181019190915260248101829052909150309063a9059cbb906044016020604051808303815f875af11580156106bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105e7919061178e565b5f546001600160a01b0316331461070a5760405162461bcd60e51b815260040161046e90611742565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b0316331461077b5760405162461bcd60e51b815260040161046e90611742565b670de0b6b3a7640000600d819055600e8190556040519081527f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf9060200160405180910390a1565b5f61043b338484610d2c565b5f546001600160a01b031633146107f85760405162461bcd60e51b815260040161046e90611742565b601254600160a01b900460ff16156108525760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161046e565b601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811790915561088f903090670de0b6b3a7640000610c09565b60115f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108df573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090391906117ad565b6001600160a01b031663c9c653963060115f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610962573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098691906117ad565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156109d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f491906117ad565b601280546001600160a01b039283166001600160a01b03199091161790556011541663f305d7194730610a3b816001600160a01b03165f9081526001602052604090205490565b5f80610a4e5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ab4573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610ad991906117c8565b505060125460115460405163095ea7b360e01b81526001600160a01b0391821660048201525f1960248201529116915063095ea7b3906044016020604051808303815f875af1158015610b2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b52919061178e565b506012805462ff00ff60a01b19166201000160a01b179055565b6004546001600160a01b0316336001600160a01b031614610b8b575f80fd5b6004546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610bc1573d5f803e3d5ffd5b50565b6004546001600160a01b0316336001600160a01b031614610be3575f80fd5b6007548111158015610bf757506008548111155b610bff575f80fd5b6007819055600855565b6001600160a01b038316610c6b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161046e565b6001600160a01b038216610ccc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161046e565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161046e565b6001600160a01b038216610df25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161046e565b5f8111610e535760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161046e565b5f80546001600160a01b03858116911614801590610e7e57505f546001600160a01b03848116911614155b1561115057610eaf6064610ea9600954600c5411610e9e57600554610ea2565b6007545b859061146c565b906114f1565b6012549091506001600160a01b038581169116148015610edd57506011546001600160a01b03848116911614155b8015610f0157506001600160a01b0383165f9081526003602052604090205460ff16155b15610fe757600d54821115610f585760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e00000000000000604482015260640161046e565b600e5482610f7a856001600160a01b03165f9081526001602052604090205490565b610f849190611807565b1115610fd25760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161046e565b600c8054905f610fe18361181a565b91905055505b6012546001600160a01b03848116911614801561100d57506001600160a01b0384163014155b1561103a576110376064610ea9600a54600c541161102d57600654610ea2565b600854859061146c565b90505b305f90815260016020526040902054601254600160a81b900460ff1615801561107057506012546001600160a01b038581169116145b80156110855750601254600160b01b900460ff165b80156110925750600f5481115b80156110a15750600b54600c54115b1561114e576014544311156110b5575f6013555b6003601354106111075760405162461bcd60e51b815260206004820152601760248201527f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000604482015260640161046e565b61112461111f8461111a84601054611532565b611532565b6112c5565b4780156111345761113447611435565b60138054905f6111438361181a565b909155505043601455505b505b80156111c857305f9081526001602052604090205461116f9082611546565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111bf9085815260200190565b60405180910390a35b6001600160a01b0384165f908152600160205260409020546111ea90836115a4565b6001600160a01b0385165f9081526001602052604090205561122d61120f83836115a4565b6001600160a01b0385165f9081526001602052604090205490611546565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61127685856115a4565b60405190815260200160405180910390a350505050565b5f81848411156112b05760405162461bcd60e51b815260040161046e9190611611565b505f6112bc8486611832565b95945050505050565b6012805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061130b5761130b611845565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611362573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138691906117ad565b8160018151811061139957611399611845565b6001600160a01b0392831660209182029290920101526011546113bf9130911684610c09565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac947906113f79085905f90869030904290600401611859565b5f604051808303815f87803b15801561140e575f80fd5b505af1158015611420573d5f803e3d5ffd5b50506012805460ff60a81b1916905550505050565b6004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156105e7573d5f803e3d5ffd5b5f825f0361147b57505f61043f565b5f61148683856118ca565b90508261149385836118e1565b146114ea5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161046e565b9392505050565b5f6114ea83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115e5565b5f81831161154057826114ea565b50919050565b5f806115528385611807565b9050838110156114ea5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161046e565b5f6114ea83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061128d565b5f81836116055760405162461bcd60e51b815260040161046e9190611611565b505f6112bc84866118e1565b5f602080835283518060208501525f5b8181101561163d57858101830151858201604001528201611621565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bc1575f80fd5b5f8060408385031215611682575f80fd5b823561168d8161165d565b946020939093013593505050565b5f602082840312156116ab575f80fd5b5035919050565b5f805f606084860312156116c4575f80fd5b83356116cf8161165d565b925060208401356116df8161165d565b929592945050506040919091013590565b5f60208284031215611700575f80fd5b81356114ea8161165d565b5f806040838503121561171c575f80fd5b82356117278161165d565b915060208301356117378161165d565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611787575f80fd5b5051919050565b5f6020828403121561179e575f80fd5b815180151581146114ea575f80fd5b5f602082840312156117bd575f80fd5b81516114ea8161165d565b5f805f606084860312156117da575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561043f5761043f6117f3565b5f6001820161182b5761182b6117f3565b5060010190565b8181038181111561043f5761043f6117f3565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156118a95784516001600160a01b031683529383019391830191600101611884565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761043f5761043f6117f3565b5f826118fb57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203f5335a7c57c3fd3dde986c4a4c037a15cfb51b8f6cb3e4096fb61207007c71964736f6c63430008180033

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.