ETH Price: $3,098.73 (-1.06%)

Contract

0xD2A5F0ad21C6E50f248a3F4dcf934C3301742bB5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve181089042023-09-10 22:19:23436 days ago1694384363IN
0xD2A5F0ad...301742bB5
0 ETH0.000460689.89865354
Approve180954772023-09-09 1:10:59438 days ago1694221859IN
0xD2A5F0ad...301742bB5
0 ETH0.00042659.21407819
Approve180953172023-09-09 0:38:35438 days ago1694219915IN
0xD2A5F0ad...301742bB5
0 ETH0.000425049.1825289
Approve180937562023-09-08 19:23:23438 days ago1694201003IN
0xD2A5F0ad...301742bB5
0 ETH0.0010526122.74063109
Approve180901952023-09-08 7:25:23438 days ago1694157923IN
0xD2A5F0ad...301742bB5
0 ETH0.000497610.69199264
Approve180890952023-09-08 3:43:23439 days ago1694144603IN
0xD2A5F0ad...301742bB5
0 ETH0.0007234415.52452847
Approve180873012023-09-07 21:42:35439 days ago1694122955IN
0xD2A5F0ad...301742bB5
0 ETH0.0014146430.35722317
Approve180867042023-09-07 19:42:23439 days ago1694115743IN
0xD2A5F0ad...301742bB5
0 ETH0.0007889332.52546817
Approve180866962023-09-07 19:40:47439 days ago1694115647IN
0xD2A5F0ad...301742bB5
0 ETH0.0014713731.78749067
Approve180866942023-09-07 19:40:23439 days ago1694115623IN
0xD2A5F0ad...301742bB5
0 ETH0.0013977930.07311348
Approve180866292023-09-07 19:27:11439 days ago1694114831IN
0xD2A5F0ad...301742bB5
0 ETH0.0012365226.71380444
Approve180866112023-09-07 19:23:35439 days ago1694114615IN
0xD2A5F0ad...301742bB5
0 ETH0.0013904529.87652389
Approve180866022023-09-07 19:21:35439 days ago1694114495IN
0xD2A5F0ad...301742bB5
0 ETH0.0016595735.61328661
Approve180865852023-09-07 19:18:11439 days ago1694114291IN
0xD2A5F0ad...301742bB5
0 ETH0.0018137738.92215461
Approve180865852023-09-07 19:18:11439 days ago1694114291IN
0xD2A5F0ad...301742bB5
0 ETH0.002341850.25329867
Approve180865792023-09-07 19:16:59439 days ago1694114219IN
0xD2A5F0ad...301742bB5
0 ETH0.0019151341.20348289
Approve180865782023-09-07 19:16:47439 days ago1694114207IN
0xD2A5F0ad...301742bB5
0 ETH0.0020061343.05
Approve180865772023-09-07 19:16:35439 days ago1694114195IN
0xD2A5F0ad...301742bB5
0 ETH0.0020002143.21231131
Approve180865732023-09-07 19:15:47439 days ago1694114147IN
0xD2A5F0ad...301742bB5
0 ETH0.0021734246.64004879
Approve180865712023-09-07 19:15:23439 days ago1694114123IN
0xD2A5F0ad...301742bB5
0 ETH0.0022421848.1154951
Approve180865692023-09-07 19:14:59439 days ago1694114099IN
0xD2A5F0ad...301742bB5
0 ETH0.0022485448.25211647
Approve180865682023-09-07 19:14:47439 days ago1694114087IN
0xD2A5F0ad...301742bB5
0 ETH0.0020394143.76437493
Approve180865642023-09-07 19:13:59439 days ago1694114039IN
0xD2A5F0ad...301742bB5
0 ETH0.0020401643.78034044
Approve180865632023-09-07 19:13:47439 days ago1694114027IN
0xD2A5F0ad...301742bB5
0 ETH0.0018562440.05009262
Approve180865632023-09-07 19:13:47439 days ago1694114027IN
0xD2A5F0ad...301742bB5
0 ETH0.0020014742.95009262
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
183759772023-10-18 8:12:59398 days ago1697616779
0xD2A5F0ad...301742bB5
0.00194728 ETH
183759772023-10-18 8:12:59398 days ago1697616779
0xD2A5F0ad...301742bB5
0.00104854 ETH
183759772023-10-18 8:12:59398 days ago1697616779
0xD2A5F0ad...301742bB5
0.00299582 ETH
181132422023-09-11 12:54:47435 days ago1694436887
0xD2A5F0ad...301742bB5
0.00224378 ETH
181132422023-09-11 12:54:47435 days ago1694436887
0xD2A5F0ad...301742bB5
0.00120819 ETH
181132422023-09-11 12:54:47435 days ago1694436887
0xD2A5F0ad...301742bB5
0.00345198 ETH
181089062023-09-10 22:19:47436 days ago1694384387
0xD2A5F0ad...301742bB5
0.00036639 ETH
181089062023-09-10 22:19:47436 days ago1694384387
0xD2A5F0ad...301742bB5
0.00019729 ETH
181089062023-09-10 22:19:47436 days ago1694384387
0xD2A5F0ad...301742bB5
0.00056369 ETH
181010632023-09-09 19:57:35437 days ago1694289455
0xD2A5F0ad...301742bB5
0.00016408 ETH
181010632023-09-09 19:57:35437 days ago1694289455
0xD2A5F0ad...301742bB5
0.00008835 ETH
181010632023-09-09 19:57:35437 days ago1694289455
0xD2A5F0ad...301742bB5
0.00025243 ETH
180954792023-09-09 1:11:23438 days ago1694221883
0xD2A5F0ad...301742bB5
0.00142585 ETH
180954792023-09-09 1:11:23438 days ago1694221883
0xD2A5F0ad...301742bB5
0.00076776 ETH
180954792023-09-09 1:11:23438 days ago1694221883
0xD2A5F0ad...301742bB5
0.00219362 ETH
180953252023-09-09 0:40:11438 days ago1694220011
0xD2A5F0ad...301742bB5
0.00113638 ETH
180953252023-09-09 0:40:11438 days ago1694220011
0xD2A5F0ad...301742bB5
0.00061189 ETH
180953252023-09-09 0:40:11438 days ago1694220011
0xD2A5F0ad...301742bB5
0.00174827 ETH
180937582023-09-08 19:23:47438 days ago1694201027
0xD2A5F0ad...301742bB5
0.00092018 ETH
180937582023-09-08 19:23:47438 days ago1694201027
0xD2A5F0ad...301742bB5
0.00049548 ETH
180937582023-09-08 19:23:47438 days ago1694201027
0xD2A5F0ad...301742bB5
0.00141566 ETH
180928432023-09-08 16:19:35438 days ago1694189975
0xD2A5F0ad...301742bB5
0.00037677 ETH
180928432023-09-08 16:19:35438 days ago1694189975
0xD2A5F0ad...301742bB5
0.00020288 ETH
180928432023-09-08 16:19:35438 days ago1694189975
0xD2A5F0ad...301742bB5
0.00057966 ETH
180901962023-09-08 7:25:35438 days ago1694157935
0xD2A5F0ad...301742bB5
0.00046397 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
flewbot

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : flewbot.sol
// SPDX-License-Identifier: MIT

/*

Telegram - https://t.me/flewbottg
Twitter - https://twitter.com/flewbot
Website - https://flewbot.app

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*-::::::-+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::::::::-%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*::::::::::::+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@#*=--------::::::::::::::::::::::::::::-=*%@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@*------::::::::::::::::::::::::::::::::::::.:=%@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@=------=+++++++++++++++==================-::::::#@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@*-----#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=:::::@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@=----#@@@#++++++++++++++++++++++++++++++*@@@@:::::#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@=----#@@@=------------:::::::::::::::::::%@@@-::::#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@=----#@@@=--------------:::::::::::::::::%@@@-::::#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@=----#@@@=------------------:::::::::::::@@@@-::::#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@=----#@@@=--------=#####################%@@@@-::::#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@====-#@@@=--------=%%%%%%%%%%%%@@@@%%%%%@@@@@-::::#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@=====#@@@=---------------------*@%-------@@@@-::::#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@+====#@@@==--------------------*@#-=*-*=-@@@@-::::#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@+====#@@@====------------------*@%-------@@@@-::::#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@+====#@@@+=======-=*###########@@@#*****%@@@@--:::#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@+====#@@@+========*@@####################@@@@-----#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@+====#@@@+========*@%===-----------------@@@@=----#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@+====#@@@+========*@@%##################%@@@@=----#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@+====%@@@+========*@%=========-----------@@@@=----#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@+====%@@@+========*@@#*******************@@@@=----#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@+++==%@@@+========*@@++++++++++++++++++++@@@@=----#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@+++++#@@@#******+*%@@*+++++++++++++++++++@@@@=----#@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@*+++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*----=@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@%*+++++**#######**************************+===--=#@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@#+++++++++++++===============================+%@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@#*++++++++++++==========================+*%@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#++==========*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+++++======+%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#++++++++*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

*/

pragma solidity ^0.8.21;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint256);

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

pragma solidity ^0.8.21;

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

pragma solidity ^0.8.21;

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

pragma solidity ^0.8.21;

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);
}

pragma solidity ^0.8.21;


interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

pragma solidity ^0.8.21;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

pragma solidity ^0.8.21;


abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

pragma solidity ^0.8.21;


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        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 _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

pragma solidity ^0.8.21;

contract flewbot is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address private marketingWallet;
    address private devWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
    uint256 public maxSwapAmount;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 private launchedAt;
    uint256 private launchedTime;
    uint256 public deadBlocks;

    uint256 public buyTotalFees;

    uint256 public sellTotalFees;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);

    constructor() ERC20("Flewbot", "FLEW") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 1_000_000_000 * 1e18;

        maxTransactionAmount = 5_000_000 * 1e18; // 0.5%
        maxWallet = 5_000_000 * 1e18; // 0.5%
        swapTokensAtAmount = 100_000 * 1e18; // 0.01%
        maxSwapAmount = 2_000_000 * 1e18; // 0.2%

        marketingWallet = 0x273E9a80675853EA06Ad6AE7212f0746E5019a51;
        devWallet = 0x7854a3F15924512a283914D9499E372f07E4674f;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        deadBlocks = _deadBlocks;
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
        launchedTime = block.timestamp;
    }

    function changeLimits(bool _input) external onlyOwner returns (bool) {
        limitsInEffect = _input;
        return _input;
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        swapTokensAtAmount = newAmount * (10 ** 18);
    }

    function updateMaxSwap(uint256 newAmount) external onlyOwner {
        maxSwapAmount = newAmount * (10 ** 18);
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10 ** 18);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10 ** 18);
    }

    function whitelistContract(address _whitelist, bool isWL) public onlyOwner {
        _isExcludedMaxTransactionAmount[_whitelist] = isWL;

        _isExcludedFromFees[_whitelist] = isWL;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function manualswap(uint256 amount) external {
        require(_msgSender() == marketingWallet);
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        swapTokensForEth(amount);
    }

    function manualsend() external {
        bool success;
        (success,) = address(devWallet).call{value: address(this).balance}("");
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBothFees(uint256 _fees) external onlyOwner {
        buyTotalFees = _fees;
        sellTotalFees = _fees;
    }

    function updateBuyFees(uint256 _marketingFee) external onlyOwner {
        buyTotalFees = _marketingFee;
    }

    function updateSellFees(uint256 _marketingFee) external onlyOwner {
        sellTotalFees = _marketingFee;
    }

    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        marketingWallet = newMarketingWallet;
    }

    function updateDevWallet(address _newWallet) external onlyOwner {
        devWallet = _newWallet;
    }

    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint256 i = 0; i < addresses.length; i++) {
            _transfer(from, addresses[i], amounts[i] * (10 ** 18));
        }
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
                if ((launchedAt + deadBlocks) >= block.number) {
                    buyTotalFees = 30;
                    sellTotalFees = 30;
                } else if (block.number <= launchedAt + deadBlocks + 3) {
                    buyTotalFees = 15;
                    sellTotalFees = 15;
                } else {
                    buyTotalFees = 5;
                    sellTotalFees = 5;
                }

                if (!tradingActive) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from]
                && !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        bool success;

        if (contractBalance == 0) {
            return;
        }

        if (contractBalance > maxSwapAmount) {
            contractBalance = maxSwapAmount;
        }

        // Halve the amount of liquidity tokens

        uint256 amountToSwapForETH = contractBalance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethForDev = (address(this).balance).mul(35).div(100);
        uint256 ethforMarketing = address(this).balance - ethForDev;

        (success,) = address(devWallet).call{value: ethForDev}("");
        (success,) = address(marketingWallet).call{value: ethforMarketing}("");
    }
}

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

Contract Security Audit

Contract ABI

[{"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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_input","type":"bool"}],"name":"changeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fees","type":"uint256"}],"name":"updateBothFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_whitelist","type":"address"},{"internalType":"bool","name":"isWL","type":"bool"}],"name":"whitelistContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600c805462ffffff191660011790553480156200001f575f80fd5b5060405180604001604052806007815260200166119b195dd89bdd60ca1b81525060405180604001604052806004815260200163464c455760e01b81525081600390816200006e919062000697565b5060046200007d828262000697565b5050506200009a620000946200034960201b60201c565b6200034d565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000bc8160016200039e565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000105573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200012b91906200075f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000177573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200019d91906200075f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001e8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200020e91906200075f565b6001600160a01b031660a0819052620002299060016200039e565b60a0516200023990600162000416565b6a0422ca8b0a00a4250000006008819055600a5569152d02c7e14af68000006009556a01a784379d99db42000000600b55600680546001600160a01b031990811673273e9a80675853ea06ad6ae7212f0746e5019a511790915560078054909116737854a3f15924512a283914d9499e372f07e4674f1790556b033b2e3c9fd0803ce8000000620002de620002d66005546001600160a01b031690565b600162000469565b620002eb30600162000469565b620002fa61dead600162000469565b62000319620003116005546001600160a01b031690565b60016200039e565b620003263060016200039e565b6200033561dead60016200039e565b62000341338262000511565b5050620007b4565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6005546001600160a01b03163314620003ec5760405162461bcd60e51b815260206004820181905260248201525f8051602062002c0583398151915260448201526064015b60405180910390fd5b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620004b35760405162461bcd60e51b815260206004820181905260248201525f8051602062002c058339815191526044820152606401620003e3565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005695760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003e3565b8060025f8282546200057c91906200078e565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005aa9084906200078e565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200062157607f821691505b6020821081036200064057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005f3575f81815260208120601f850160051c810160208610156200066e5750805b601f850160051c820191505b818110156200068f578281556001016200067a565b505050505050565b81516001600160401b03811115620006b357620006b3620005f8565b620006cb81620006c484546200060c565b8462000646565b602080601f83116001811462000701575f8415620006e95750858301515b5f19600386901b1c1916600185901b1785556200068f565b5f85815260208120601f198616915b82811015620007315788860151825594840194600190910190840162000710565b50858210156200074f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000770575f80fd5b81516001600160a01b038116811462000787575f80fd5b9392505050565b80820180821115620007ae57634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a051612413620007f25f395f81816104670152610e8c01525f818161035201528181611b6d01528181611c240152611c6001526124135ff3fe60806040526004361061028e575f3560e01c80638da5cb5b11610155578063c18bc195116100be578063dd62ed3e11610078578063dd62ed3e146107de578063e2f4560514610822578063eba4c33314610837578063f2fde38b14610856578063f8b45b0514610875578063fabb0b4f1461088a575f80fd5b8063c18bc19514610742578063c8c8ebe414610761578063cce987d414610776578063d257b34f1461078b578063d85ba063146107aa578063db56f458146107bf575f80fd5b8063a9059cbb1161010f578063a9059cbb1461067a578063aacebbe314610699578063b62496f5146106b8578063b926e464146106e6578063bbc0c74214610705578063c024666814610723575f80fd5b80638da5cb5b146105cd578063924de9b7146105ea57806395d89b41146106095780639a7a23d61461061d578063a457c2d71461063c578063a672990c1461065b575f80fd5b806349bd5a5e116101f757806370a08231116101b157806370a0823114610509578063715018a61461053d57806371fc4688146105515780637571336a1461057057806382aa7c681461058f578063881dce60146105ae575f80fd5b806349bd5a5e146104565780634a62bb651461048957806367243482146104a25780636a486a8e146104c15780636ddd1713146104d65780636fc3eaec146104f5575f80fd5b80631816467f116102485780631816467f146103aa578063203e727e146103c957806323b872dd146103e857806327c8f83514610407578063313ce5671461041c5780633950935114610437575f80fd5b806306fdde0314610299578063095ea7b3146102c357806310d5de53146102f2578063150074a3146103205780631694505e1461034157806318160ddd1461038c575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ad61089f565b6040516102ba9190611f88565b60405180910390f35b3480156102ce575f80fd5b506102e26102dd366004611fe7565b61092f565b60405190151581526020016102ba565b3480156102fd575f80fd5b506102e261030c366004612011565b60136020525f908152604090205460ff1681565b34801561032b575f80fd5b5061033f61033a36600461202c565b610945565b005b34801561034c575f80fd5b506103747f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102ba565b348015610397575f80fd5b506002545b6040519081526020016102ba565b3480156103b5575f80fd5b5061033f6103c4366004612011565b610990565b3480156103d4575f80fd5b5061033f6103e336600461202c565b6109dc565b3480156103f3575f80fd5b506102e2610402366004612043565b610ab9565b348015610412575f80fd5b5061037461dead81565b348015610427575f80fd5b50604051601281526020016102ba565b348015610442575f80fd5b506102e2610451366004611fe7565b610b61565b348015610461575f80fd5b506103747f000000000000000000000000000000000000000000000000000000000000000081565b348015610494575f80fd5b50600c546102e29060ff1681565b3480156104ad575f80fd5b5061033f6104bc3660046120c9565b610b9c565b3480156104cc575f80fd5b5061039c60115481565b3480156104e1575f80fd5b50600c546102e29062010000900460ff1681565b348015610500575f80fd5b5061033f610c33565b348015610514575f80fd5b5061039c610523366004612011565b6001600160a01b03165f9081526020819052604090205490565b348015610548575f80fd5b5061033f610c88565b34801561055c575f80fd5b5061033f61056b36600461202c565b610cbd565b34801561057b575f80fd5b5061033f61058a36600461213f565b610cec565b34801561059a575f80fd5b5061033f6105a936600461202c565b610d40565b3480156105b9575f80fd5b5061033f6105c836600461202c565b610d88565b3480156105d8575f80fd5b506005546001600160a01b0316610374565b3480156105f5575f80fd5b5061033f610604366004612172565b610e0b565b348015610614575f80fd5b506102ad610e51565b348015610628575f80fd5b5061033f61063736600461213f565b610e60565b348015610647575f80fd5b506102e2610656366004611fe7565b610f3f565b348015610666575f80fd5b5061033f61067536600461213f565b610fd7565b348015610685575f80fd5b506102e2610694366004611fe7565b61103e565b3480156106a4575f80fd5b5061033f6106b3366004612011565b61104a565b3480156106c3575f80fd5b506102e26106d2366004612011565b60146020525f908152604090205460ff1681565b3480156106f1575f80fd5b506102e2610700366004612172565b611096565b348015610710575f80fd5b50600c546102e290610100900460ff1681565b34801561072e575f80fd5b5061033f61073d36600461213f565b6110d8565b34801561074d575f80fd5b5061033f61075c36600461202c565b611160565b34801561076c575f80fd5b5061039c60085481565b348015610781575f80fd5b5061039c600b5481565b348015610796575f80fd5b5061033f6107a536600461202c565b611231565b3480156107b5575f80fd5b5061039c60105481565b3480156107ca575f80fd5b5061033f6107d936600461202c565b611273565b3480156107e9575f80fd5b5061039c6107f836600461218b565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561082d575f80fd5b5061039c60095481565b348015610842575f80fd5b5061033f61085136600461202c565b6112a7565b348015610861575f80fd5b5061033f610870366004612011565b6112d6565b348015610880575f80fd5b5061039c600a5481565b348015610895575f80fd5b5061039c600f5481565b6060600380546108ae906121c2565b80601f01602080910402602001604051908101604052809291908181526020018280546108da906121c2565b80156109255780601f106108fc57610100808354040283529160200191610925565b820191905f5260205f20905b81548152906001019060200180831161090857829003601f168201915b5050505050905090565b5f61093b33848461136e565b5060015b92915050565b6005546001600160a01b031633146109785760405162461bcd60e51b815260040161096f906121fa565b60405180910390fd5b61098a81670de0b6b3a7640000612243565b600b5550565b6005546001600160a01b031633146109ba5760405162461bcd60e51b815260040161096f906121fa565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610a065760405162461bcd60e51b815260040161096f906121fa565b670de0b6b3a76400006103e8610a1b60025490565b610a26906001612243565b610a30919061225a565b610a3a919061225a565b811015610aa15760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161096f565b610ab381670de0b6b3a7640000612243565b60085550565b5f610ac5848484611491565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b495760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161096f565b610b56853385840361136e565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161093b918590610b97908690612279565b61136e565b8215801590610baa57508083145b610bb2575f80fd5b335f5b84811015610c2b57610c1982878784818110610bd357610bd361228c565b9050602002016020810190610be89190612011565b868685818110610bfa57610bfa61228c565b90506020020135670de0b6b3a7640000610c149190612243565b611491565b80610c23816122a0565b915050610bb5565b505050505050565b6007546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610c7d576040519150601f19603f3d011682016040523d82523d5f602084013e610c82565b606091505b50505050565b6005546001600160a01b03163314610cb25760405162461bcd60e51b815260040161096f906121fa565b610cbb5f611ac7565b565b6005546001600160a01b03163314610ce75760405162461bcd60e51b815260040161096f906121fa565b601055565b6005546001600160a01b03163314610d165760405162461bcd60e51b815260040161096f906121fa565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d6a5760405162461bcd60e51b815260040161096f906121fa565b600f55600c805462ffff0019166201010017905543600d5542600e55565b6006546001600160a01b0316336001600160a01b031614610da7575f80fd5b305f908152602081905260409020548111158015610dc457505f81115b610dff5760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b604482015260640161096f565b610e0881611b18565b50565b6005546001600160a01b03163314610e355760405162461bcd60e51b815260040161096f906121fa565b600c8054911515620100000262ff000019909216919091179055565b6060600480546108ae906121c2565b6005546001600160a01b03163314610e8a5760405162461bcd60e51b815260040161096f906121fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f315760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161096f565b610f3b8282611cc6565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610fc05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161096f565b610fcd338585840361136e565b5060019392505050565b6005546001600160a01b031633146110015760405162461bcd60e51b815260040161096f906121fa565b6001600160a01b039091165f908152601360209081526040808320805494151560ff19958616811790915560129092529091208054909216179055565b5f61093b338484611491565b6005546001600160a01b031633146110745760405162461bcd60e51b815260040161096f906121fa565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005545f906001600160a01b031633146110c25760405162461bcd60e51b815260040161096f906121fa565b50600c805460ff1916821515179055805b919050565b6005546001600160a01b031633146111025760405162461bcd60e51b815260040161096f906121fa565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461118a5760405162461bcd60e51b815260040161096f906121fa565b670de0b6b3a76400006103e861119f60025490565b6111aa906005612243565b6111b4919061225a565b6111be919061225a565b8110156112195760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161096f565b61122b81670de0b6b3a7640000612243565b600a5550565b6005546001600160a01b0316331461125b5760405162461bcd60e51b815260040161096f906121fa565b61126d81670de0b6b3a7640000612243565b60095550565b6005546001600160a01b0316331461129d5760405162461bcd60e51b815260040161096f906121fa565b6010819055601155565b6005546001600160a01b031633146112d15760405162461bcd60e51b815260040161096f906121fa565b601155565b6005546001600160a01b031633146113005760405162461bcd60e51b815260040161096f906121fa565b6001600160a01b0381166113655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161096f565b610e0881611ac7565b6001600160a01b0383166113d05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161096f565b6001600160a01b0382166114315760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161096f565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114b75760405162461bcd60e51b815260040161096f906122b8565b6001600160a01b0382166114dd5760405162461bcd60e51b815260040161096f906122fd565b805f036114f4576114ef83835f611d19565b505050565b600c5460ff16156118c1576005546001600160a01b0384811691161480159061152b57506005546001600160a01b03838116911614155b801561153f57506001600160a01b03821615155b801561155657506001600160a01b03821661dead14155b801561156c5750600554600160a01b900460ff16155b156118c15743600f54600d546115829190612279565b1061159657601e60108190556011556115d1565b600f54600d546115a69190612279565b6115b1906003612279565b43116115c657600f60108190556011556115d1565b600560108190556011555b600c54610100900460ff16611662576001600160a01b0383165f9081526012602052604090205460ff168061161d57506001600160a01b0382165f9081526012602052604090205460ff165b6116625760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161096f565b6001600160a01b0383165f9081526014602052604090205460ff1680156116a157506001600160a01b0382165f9081526013602052604090205460ff16155b15611784576008548111156117165760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161096f565b600a546001600160a01b0383165f9081526020819052604090205461173b9083612279565b111561177f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161096f565b6118c1565b6001600160a01b0382165f9081526014602052604090205460ff1680156117c357506001600160a01b0383165f9081526013602052604090205460ff16155b156118395760085481111561177f5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161096f565b6001600160a01b0382165f9081526013602052604090205460ff166118c157600a546001600160a01b0383165f9081526020819052604090205461187d9083612279565b11156118c15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161096f565b305f90815260208190526040902054600954811080159081906118ec5750600c5462010000900460ff165b80156119025750600554600160a01b900460ff16155b801561192657506001600160a01b0385165f9081526014602052604090205460ff16155b801561194a57506001600160a01b0385165f9081526012602052604090205460ff16155b801561196e57506001600160a01b0384165f9081526012602052604090205460ff16155b1561199c576005805460ff60a01b1916600160a01b17905561198e611e6c565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526012602052604090205460ff600160a01b9092048216159116806119e857506001600160a01b0385165f9081526012602052604090205460ff165b156119f057505f5b5f8115611ab3576001600160a01b0386165f9081526014602052604090205460ff168015611a1f57505f601154115b15611a4b57611a446064611a3e60115488611f6b90919063ffffffff16565b90611f7d565b9050611a95565b6001600160a01b0387165f9081526014602052604090205460ff168015611a7357505f601054115b15611a9557611a926064611a3e60105488611f6b90919063ffffffff16565b90505b8015611aa657611aa6873083611d19565b611ab08186612340565b94505b611abe878787611d19565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b4b57611b4b61228c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bc7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611beb9190612353565b81600181518110611bfe57611bfe61228c565b60200260200101906001600160a01b031690816001600160a01b031681525050611c49307f00000000000000000000000000000000000000000000000000000000000000008461136e565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611c9d9085905f9086903090429060040161236e565b5f604051808303815f87803b158015611cb4575f80fd5b505af1158015610c2b573d5f803e3d5ffd5b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d3f5760405162461bcd60e51b815260040161096f906122b8565b6001600160a01b038216611d655760405162461bcd60e51b815260040161096f906122fd565b6001600160a01b0383165f9081526020819052604090205481811015611ddc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161096f565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611e12908490612279565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e5e91815260200190565b60405180910390a350505050565b305f9081526020819052604081205490818103611e87575050565b600b54821115611e9757600b5491505b81611ea181611b18565b5f611eb26064611a3e476023611f6b565b90505f611ebf8247612340565b6007546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611f0a576040519150601f19603f3d011682016040523d82523d5f602084013e611f0f565b606091505b50506006546040519195506001600160a01b03169082905f81818185875af1925050503d805f8114611f5c576040519150601f19603f3d011682016040523d82523d5f602084013e611f61565b606091505b5050505050505050565b5f611f768284612243565b9392505050565b5f611f76828461225a565b5f6020808352835180828501525f5b81811015611fb357858101830151858201604001528201611f97565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e08575f80fd5b5f8060408385031215611ff8575f80fd5b823561200381611fd3565b946020939093013593505050565b5f60208284031215612021575f80fd5b8135611f7681611fd3565b5f6020828403121561203c575f80fd5b5035919050565b5f805f60608486031215612055575f80fd5b833561206081611fd3565b9250602084013561207081611fd3565b929592945050506040919091013590565b5f8083601f840112612091575f80fd5b50813567ffffffffffffffff8111156120a8575f80fd5b6020830191508360208260051b85010111156120c2575f80fd5b9250929050565b5f805f80604085870312156120dc575f80fd5b843567ffffffffffffffff808211156120f3575f80fd5b6120ff88838901612081565b90965094506020870135915080821115612117575f80fd5b5061212487828801612081565b95989497509550505050565b803580151581146110d3575f80fd5b5f8060408385031215612150575f80fd5b823561215b81611fd3565b915061216960208401612130565b90509250929050565b5f60208284031215612182575f80fd5b611f7682612130565b5f806040838503121561219c575f80fd5b82356121a781611fd3565b915060208301356121b781611fd3565b809150509250929050565b600181811c908216806121d657607f821691505b6020821081036121f457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761093f5761093f61222f565b5f8261227457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561093f5761093f61222f565b634e487b7160e01b5f52603260045260245ffd5b5f600182016122b1576122b161222f565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561093f5761093f61222f565b5f60208284031215612363575f80fd5b8151611f7681611fd3565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123bc5784516001600160a01b031683529383019391830191600101612397565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c1b8c3dcacad526376d84ce7c89cc9e0843614ae0ce5d81b1c5e7e8f4db6ab5664736f6c634300081500334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x60806040526004361061028e575f3560e01c80638da5cb5b11610155578063c18bc195116100be578063dd62ed3e11610078578063dd62ed3e146107de578063e2f4560514610822578063eba4c33314610837578063f2fde38b14610856578063f8b45b0514610875578063fabb0b4f1461088a575f80fd5b8063c18bc19514610742578063c8c8ebe414610761578063cce987d414610776578063d257b34f1461078b578063d85ba063146107aa578063db56f458146107bf575f80fd5b8063a9059cbb1161010f578063a9059cbb1461067a578063aacebbe314610699578063b62496f5146106b8578063b926e464146106e6578063bbc0c74214610705578063c024666814610723575f80fd5b80638da5cb5b146105cd578063924de9b7146105ea57806395d89b41146106095780639a7a23d61461061d578063a457c2d71461063c578063a672990c1461065b575f80fd5b806349bd5a5e116101f757806370a08231116101b157806370a0823114610509578063715018a61461053d57806371fc4688146105515780637571336a1461057057806382aa7c681461058f578063881dce60146105ae575f80fd5b806349bd5a5e146104565780634a62bb651461048957806367243482146104a25780636a486a8e146104c15780636ddd1713146104d65780636fc3eaec146104f5575f80fd5b80631816467f116102485780631816467f146103aa578063203e727e146103c957806323b872dd146103e857806327c8f83514610407578063313ce5671461041c5780633950935114610437575f80fd5b806306fdde0314610299578063095ea7b3146102c357806310d5de53146102f2578063150074a3146103205780631694505e1461034157806318160ddd1461038c575f80fd5b3661029557005b5f80fd5b3480156102a4575f80fd5b506102ad61089f565b6040516102ba9190611f88565b60405180910390f35b3480156102ce575f80fd5b506102e26102dd366004611fe7565b61092f565b60405190151581526020016102ba565b3480156102fd575f80fd5b506102e261030c366004612011565b60136020525f908152604090205460ff1681565b34801561032b575f80fd5b5061033f61033a36600461202c565b610945565b005b34801561034c575f80fd5b506103747f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102ba565b348015610397575f80fd5b506002545b6040519081526020016102ba565b3480156103b5575f80fd5b5061033f6103c4366004612011565b610990565b3480156103d4575f80fd5b5061033f6103e336600461202c565b6109dc565b3480156103f3575f80fd5b506102e2610402366004612043565b610ab9565b348015610412575f80fd5b5061037461dead81565b348015610427575f80fd5b50604051601281526020016102ba565b348015610442575f80fd5b506102e2610451366004611fe7565b610b61565b348015610461575f80fd5b506103747f00000000000000000000000090cea9023648ffa95248b4f2ab54838daed00f2b81565b348015610494575f80fd5b50600c546102e29060ff1681565b3480156104ad575f80fd5b5061033f6104bc3660046120c9565b610b9c565b3480156104cc575f80fd5b5061039c60115481565b3480156104e1575f80fd5b50600c546102e29062010000900460ff1681565b348015610500575f80fd5b5061033f610c33565b348015610514575f80fd5b5061039c610523366004612011565b6001600160a01b03165f9081526020819052604090205490565b348015610548575f80fd5b5061033f610c88565b34801561055c575f80fd5b5061033f61056b36600461202c565b610cbd565b34801561057b575f80fd5b5061033f61058a36600461213f565b610cec565b34801561059a575f80fd5b5061033f6105a936600461202c565b610d40565b3480156105b9575f80fd5b5061033f6105c836600461202c565b610d88565b3480156105d8575f80fd5b506005546001600160a01b0316610374565b3480156105f5575f80fd5b5061033f610604366004612172565b610e0b565b348015610614575f80fd5b506102ad610e51565b348015610628575f80fd5b5061033f61063736600461213f565b610e60565b348015610647575f80fd5b506102e2610656366004611fe7565b610f3f565b348015610666575f80fd5b5061033f61067536600461213f565b610fd7565b348015610685575f80fd5b506102e2610694366004611fe7565b61103e565b3480156106a4575f80fd5b5061033f6106b3366004612011565b61104a565b3480156106c3575f80fd5b506102e26106d2366004612011565b60146020525f908152604090205460ff1681565b3480156106f1575f80fd5b506102e2610700366004612172565b611096565b348015610710575f80fd5b50600c546102e290610100900460ff1681565b34801561072e575f80fd5b5061033f61073d36600461213f565b6110d8565b34801561074d575f80fd5b5061033f61075c36600461202c565b611160565b34801561076c575f80fd5b5061039c60085481565b348015610781575f80fd5b5061039c600b5481565b348015610796575f80fd5b5061033f6107a536600461202c565b611231565b3480156107b5575f80fd5b5061039c60105481565b3480156107ca575f80fd5b5061033f6107d936600461202c565b611273565b3480156107e9575f80fd5b5061039c6107f836600461218b565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561082d575f80fd5b5061039c60095481565b348015610842575f80fd5b5061033f61085136600461202c565b6112a7565b348015610861575f80fd5b5061033f610870366004612011565b6112d6565b348015610880575f80fd5b5061039c600a5481565b348015610895575f80fd5b5061039c600f5481565b6060600380546108ae906121c2565b80601f01602080910402602001604051908101604052809291908181526020018280546108da906121c2565b80156109255780601f106108fc57610100808354040283529160200191610925565b820191905f5260205f20905b81548152906001019060200180831161090857829003601f168201915b5050505050905090565b5f61093b33848461136e565b5060015b92915050565b6005546001600160a01b031633146109785760405162461bcd60e51b815260040161096f906121fa565b60405180910390fd5b61098a81670de0b6b3a7640000612243565b600b5550565b6005546001600160a01b031633146109ba5760405162461bcd60e51b815260040161096f906121fa565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610a065760405162461bcd60e51b815260040161096f906121fa565b670de0b6b3a76400006103e8610a1b60025490565b610a26906001612243565b610a30919061225a565b610a3a919061225a565b811015610aa15760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161096f565b610ab381670de0b6b3a7640000612243565b60085550565b5f610ac5848484611491565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610b495760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161096f565b610b56853385840361136e565b506001949350505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909161093b918590610b97908690612279565b61136e565b8215801590610baa57508083145b610bb2575f80fd5b335f5b84811015610c2b57610c1982878784818110610bd357610bd361228c565b9050602002016020810190610be89190612011565b868685818110610bfa57610bfa61228c565b90506020020135670de0b6b3a7640000610c149190612243565b611491565b80610c23816122a0565b915050610bb5565b505050505050565b6007546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610c7d576040519150601f19603f3d011682016040523d82523d5f602084013e610c82565b606091505b50505050565b6005546001600160a01b03163314610cb25760405162461bcd60e51b815260040161096f906121fa565b610cbb5f611ac7565b565b6005546001600160a01b03163314610ce75760405162461bcd60e51b815260040161096f906121fa565b601055565b6005546001600160a01b03163314610d165760405162461bcd60e51b815260040161096f906121fa565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d6a5760405162461bcd60e51b815260040161096f906121fa565b600f55600c805462ffff0019166201010017905543600d5542600e55565b6006546001600160a01b0316336001600160a01b031614610da7575f80fd5b305f908152602081905260409020548111158015610dc457505f81115b610dff5760405162461bcd60e51b815260206004820152600c60248201526b15dc9bdb99c8185b5bdd5b9d60a21b604482015260640161096f565b610e0881611b18565b50565b6005546001600160a01b03163314610e355760405162461bcd60e51b815260040161096f906121fa565b600c8054911515620100000262ff000019909216919091179055565b6060600480546108ae906121c2565b6005546001600160a01b03163314610e8a5760405162461bcd60e51b815260040161096f906121fa565b7f00000000000000000000000090cea9023648ffa95248b4f2ab54838daed00f2b6001600160a01b0316826001600160a01b031603610f315760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161096f565b610f3b8282611cc6565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610fc05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161096f565b610fcd338585840361136e565b5060019392505050565b6005546001600160a01b031633146110015760405162461bcd60e51b815260040161096f906121fa565b6001600160a01b039091165f908152601360209081526040808320805494151560ff19958616811790915560129092529091208054909216179055565b5f61093b338484611491565b6005546001600160a01b031633146110745760405162461bcd60e51b815260040161096f906121fa565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005545f906001600160a01b031633146110c25760405162461bcd60e51b815260040161096f906121fa565b50600c805460ff1916821515179055805b919050565b6005546001600160a01b031633146111025760405162461bcd60e51b815260040161096f906121fa565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461118a5760405162461bcd60e51b815260040161096f906121fa565b670de0b6b3a76400006103e861119f60025490565b6111aa906005612243565b6111b4919061225a565b6111be919061225a565b8110156112195760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b606482015260840161096f565b61122b81670de0b6b3a7640000612243565b600a5550565b6005546001600160a01b0316331461125b5760405162461bcd60e51b815260040161096f906121fa565b61126d81670de0b6b3a7640000612243565b60095550565b6005546001600160a01b0316331461129d5760405162461bcd60e51b815260040161096f906121fa565b6010819055601155565b6005546001600160a01b031633146112d15760405162461bcd60e51b815260040161096f906121fa565b601155565b6005546001600160a01b031633146113005760405162461bcd60e51b815260040161096f906121fa565b6001600160a01b0381166113655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161096f565b610e0881611ac7565b6001600160a01b0383166113d05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161096f565b6001600160a01b0382166114315760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161096f565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166114b75760405162461bcd60e51b815260040161096f906122b8565b6001600160a01b0382166114dd5760405162461bcd60e51b815260040161096f906122fd565b805f036114f4576114ef83835f611d19565b505050565b600c5460ff16156118c1576005546001600160a01b0384811691161480159061152b57506005546001600160a01b03838116911614155b801561153f57506001600160a01b03821615155b801561155657506001600160a01b03821661dead14155b801561156c5750600554600160a01b900460ff16155b156118c15743600f54600d546115829190612279565b1061159657601e60108190556011556115d1565b600f54600d546115a69190612279565b6115b1906003612279565b43116115c657600f60108190556011556115d1565b600560108190556011555b600c54610100900460ff16611662576001600160a01b0383165f9081526012602052604090205460ff168061161d57506001600160a01b0382165f9081526012602052604090205460ff165b6116625760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161096f565b6001600160a01b0383165f9081526014602052604090205460ff1680156116a157506001600160a01b0382165f9081526013602052604090205460ff16155b15611784576008548111156117165760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b606482015260840161096f565b600a546001600160a01b0383165f9081526020819052604090205461173b9083612279565b111561177f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161096f565b6118c1565b6001600160a01b0382165f9081526014602052604090205460ff1680156117c357506001600160a01b0383165f9081526013602052604090205460ff16155b156118395760085481111561177f5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b606482015260840161096f565b6001600160a01b0382165f9081526013602052604090205460ff166118c157600a546001600160a01b0383165f9081526020819052604090205461187d9083612279565b11156118c15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161096f565b305f90815260208190526040902054600954811080159081906118ec5750600c5462010000900460ff165b80156119025750600554600160a01b900460ff16155b801561192657506001600160a01b0385165f9081526014602052604090205460ff16155b801561194a57506001600160a01b0385165f9081526012602052604090205460ff16155b801561196e57506001600160a01b0384165f9081526012602052604090205460ff16155b1561199c576005805460ff60a01b1916600160a01b17905561198e611e6c565b6005805460ff60a01b191690555b6005546001600160a01b0386165f9081526012602052604090205460ff600160a01b9092048216159116806119e857506001600160a01b0385165f9081526012602052604090205460ff165b156119f057505f5b5f8115611ab3576001600160a01b0386165f9081526014602052604090205460ff168015611a1f57505f601154115b15611a4b57611a446064611a3e60115488611f6b90919063ffffffff16565b90611f7d565b9050611a95565b6001600160a01b0387165f9081526014602052604090205460ff168015611a7357505f601054115b15611a9557611a926064611a3e60105488611f6b90919063ffffffff16565b90505b8015611aa657611aa6873083611d19565b611ab08186612340565b94505b611abe878787611d19565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611b4b57611b4b61228c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bc7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611beb9190612353565b81600181518110611bfe57611bfe61228c565b60200260200101906001600160a01b031690816001600160a01b031681525050611c49307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461136e565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611c9d9085905f9086903090429060040161236e565b5f604051808303815f87803b158015611cb4575f80fd5b505af1158015610c2b573d5f803e3d5ffd5b6001600160a01b0382165f81815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038316611d3f5760405162461bcd60e51b815260040161096f906122b8565b6001600160a01b038216611d655760405162461bcd60e51b815260040161096f906122fd565b6001600160a01b0383165f9081526020819052604090205481811015611ddc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161096f565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611e12908490612279565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e5e91815260200190565b60405180910390a350505050565b305f9081526020819052604081205490818103611e87575050565b600b54821115611e9757600b5491505b81611ea181611b18565b5f611eb26064611a3e476023611f6b565b90505f611ebf8247612340565b6007546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611f0a576040519150601f19603f3d011682016040523d82523d5f602084013e611f0f565b606091505b50506006546040519195506001600160a01b03169082905f81818185875af1925050503d805f8114611f5c576040519150601f19603f3d011682016040523d82523d5f602084013e611f61565b606091505b5050505050505050565b5f611f768284612243565b9392505050565b5f611f76828461225a565b5f6020808352835180828501525f5b81811015611fb357858101830151858201604001528201611f97565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e08575f80fd5b5f8060408385031215611ff8575f80fd5b823561200381611fd3565b946020939093013593505050565b5f60208284031215612021575f80fd5b8135611f7681611fd3565b5f6020828403121561203c575f80fd5b5035919050565b5f805f60608486031215612055575f80fd5b833561206081611fd3565b9250602084013561207081611fd3565b929592945050506040919091013590565b5f8083601f840112612091575f80fd5b50813567ffffffffffffffff8111156120a8575f80fd5b6020830191508360208260051b85010111156120c2575f80fd5b9250929050565b5f805f80604085870312156120dc575f80fd5b843567ffffffffffffffff808211156120f3575f80fd5b6120ff88838901612081565b90965094506020870135915080821115612117575f80fd5b5061212487828801612081565b95989497509550505050565b803580151581146110d3575f80fd5b5f8060408385031215612150575f80fd5b823561215b81611fd3565b915061216960208401612130565b90509250929050565b5f60208284031215612182575f80fd5b611f7682612130565b5f806040838503121561219c575f80fd5b82356121a781611fd3565b915060208301356121b781611fd3565b809150509250929050565b600181811c908216806121d657607f821691505b6020821081036121f457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761093f5761093f61222f565b5f8261227457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561093f5761093f61222f565b634e487b7160e01b5f52603260045260245ffd5b5f600182016122b1576122b161222f565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561093f5761093f61222f565b5f60208284031215612363575f80fd5b8151611f7681611fd3565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123bc5784516001600160a01b031683529383019391830191600101612397565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220c1b8c3dcacad526376d84ce7c89cc9e0843614ae0ce5d81b1c5e7e8f4db6ab5664736f6c63430008150033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.