ETH Price: $3,394.72 (-1.39%)
Gas: 2 Gwei

Contract

0x3D0F3A8daB6bda1Ffdb345d174b611d6Ff7a6f7c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve201021022024-06-16 4:56:3513 days ago1718513795IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000113262.43197
Approve200961212024-06-15 8:52:3514 days ago1718441555IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000216254.64329179
Approve200707312024-06-11 19:39:3517 days ago1718134775IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000609613.08886705
Transfer200707062024-06-11 19:34:2317 days ago1718134463IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.0006262313.40225208
Approve200491252024-06-08 19:13:5920 days ago1717874039IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.0006589814.1492749
Approve199475012024-05-25 14:31:1134 days ago1716647471IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000325336.97624469
Approve199376362024-05-24 5:24:4736 days ago1716528287IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000287446.20692899
Approve199043872024-05-19 13:49:4740 days ago1716126587IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000166243.5695185
Approve198970542024-05-18 13:13:4741 days ago1716038027IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.00015723.37536027
Approve198910852024-05-17 17:08:5942 days ago1715965739IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000306616.58337077
Approve198493322024-05-11 20:59:2348 days ago1715461163IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000240675.194438
Transfer198225892024-05-08 3:13:3552 days ago1715138015IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000422086.61301809
Approve197490132024-04-27 20:20:5962 days ago1714249259IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000215644.63012061
Approve197404942024-04-26 15:43:2363 days ago1714146203IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000439679.42821486
Transfer197323652024-04-25 12:25:1164 days ago1714047911IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.0006443810.09977089
Approve197008382024-04-21 2:35:1169 days ago1713666911IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000306726.58568585
Approve196986052024-04-20 19:06:4769 days ago1713640007IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.0006525413.99281653
Approve196923382024-04-19 22:04:1170 days ago1713564251IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000463789.95791926
Approve196896452024-04-19 13:01:1170 days ago1713531671IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.0007302715.75699845
Transfer196896392024-04-19 12:59:4770 days ago1713531587IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.0005861412.54742407
Transfer196896112024-04-19 12:54:1170 days ago1713531251IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.0006560914.04851613
Transfer196895992024-04-19 12:51:3570 days ago1713531095IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000587512.57978583
Approve196895902024-04-19 12:49:4770 days ago1713530987IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.0006236713.4568804
Approve196699192024-04-16 18:46:4773 days ago1713293207IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.000238919.81174834
Approve196699122024-04-16 18:45:2373 days ago1713293123IN
0x3D0F3A8d...6Ff7a6f7c
0 ETH0.0002645810.86593125
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DonutsCoin

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : DonutsCoin.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.18;

//  /$$$$$$$                                  /$$               /$$$$$$            /$$
// | $$__  $$                                | $$              /$$__  $$          |__/
// | $$  \ $$  /$$$$$$  /$$$$$$$  /$$   /$$ /$$$$$$   /$$$$$$$| $$  \__/  /$$$$$$  /$$ /$$$$$$$
// | $$  | $$ /$$__  $$| $$__  $$| $$  | $$|_  $$_/  /$$_____/| $$       /$$__  $$| $$| $$__  $$
// | $$  | $$| $$  \ $$| $$  \ $$| $$  | $$  | $$   |  $$$$$$ | $$      | $$  \ $$| $$| $$  \ $$
// | $$  | $$| $$  | $$| $$  | $$| $$  | $$  | $$ /$$\____  $$| $$    $$| $$  | $$| $$| $$  | $$
// | $$$$$$$/|  $$$$$$/| $$  | $$|  $$$$$$/  |  $$$$//$$$$$$$/|  $$$$$$/|  $$$$$$/| $$| $$  | $$
// |_______/  \______/ |__/  |__/ \______/    \___/ |_______/  \______/  \______/ |__/|__/  |__/


/// @title DonutsCoin

/********************************************************************************************
  INTERFACE
********************************************************************************************/

interface IERC20 {
    // EVENT

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    // FUNCTION

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

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

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

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

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IPair {
    // FUNCTION

    function token0() external view returns (address);

    function token1() external view returns (address);
}

interface IFactory {
    // FUNCTION

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

interface IRouter {

    // FUNCTION

    function WETH() external pure returns (address);
        
    function factory() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(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 swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);

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

interface ICommonError {
    // ERROR

    error CannotUseCurrentAddress(address current);

    error CannotUseCurrentValue(uint256 current);

    error CannotUseCurrentState(bool current);

    error InvalidAddress(address invalid);

    error InvalidValue(uint256 invalid);
}

/********************************************************************************************
  ACCESS
********************************************************************************************/

abstract contract Ownable {
    // DATA

    address private _owner;

    // MODIFIER

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    // ERROR

    error InvalidOwner(address account);

    error UnauthorizedAccount(address account);

    // CONSTRUCTOR

    constructor(address initialOwner) {
        _transferOwnership(initialOwner);
    }

    // EVENT

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

    // FUNCTION

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

    function _checkOwner() internal view virtual {
        if (owner() != msg.sender) {
            revert UnauthorizedAccount(msg.sender);
        }
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert InvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

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

/********************************************************************************************
  TOKEN
********************************************************************************************/

contract DonutsCoin is Ownable, ICommonError, IERC20 {
    // DATA

    IRouter public router;

    string private constant NAME = "DonutsCoin";
    string private constant SYMBOL = "DONUTS";

    uint8 private constant DECIMALS = 18;

    uint256 private _totalSupply;

    uint256 public constant FEEDENOMINATOR = 10_000;
    uint256 public constant TRANSFERFEE = 0;

    uint256 public buyFee = 100;
    uint256 public sellFee = 200;
    uint256 public burnFeePercentage = 0; 
    uint256 public liquidityFeePercentage = 0; 
    uint256 public marketingFeePercentage = 0;

    address public marketingWallet = 0x7c983436362602Ca3A38a7d518409E1f08B10c66;
    address public projectWallet = 0x7c983436362602Ca3A38a7d518409E1f08B10c66;
    address public feeWallet = 0x7c983436362602Ca3A38a7d518409E1f08B10c66;

    uint256 public totalFeeCollected = 0;
    uint256 public minSwap = 1_000 ether;

    bool public tradeEnabled = false;
    bool public isFeeActive = false;
    bool public inSwap = false;
    bool public isSwapEnabled = false;

    address public pair;

    // MAPPING

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isExcludeFromFees;
    mapping(address => bool) public isPairLP;

    // MODIFIER

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    // ERROR

    error InvalidTradeEnabledState(bool current);

    error InvalidFeeActiveState(bool current);

    error InvalidSwapEnabledState(bool current);

    error PresaleAlreadyFinalized(bool current);

    error TradeDisabled();
    
    error InvalidFee();

    // CONSTRUCTOR

    constructor() Ownable(msg.sender) {
        _mint(projectWallet, 1_000_000 * 10 ** DECIMALS);

        router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );

        isPairLP[pair] = true;

        isExcludeFromFees[msg.sender] = true;
        isExcludeFromFees[projectWallet] = true;
        isExcludeFromFees[address(router)] = true;
    }

    // EVENT

    event UpdateRouter(
        address oldRouter,
        address newRouter,
        address caller,
        uint256 timestamp
    );

    event UpdateMinSwap(
        uint256 oldMinSwap,
        uint256 newMinSwap,
        address caller,
        uint256 timestamp
    );

    event UpdateFeeActive(
        bool oldStatus,
        bool newStatus,
        address caller,
        uint256 timestamp
    );

    event UpdateSwapEnabled(
        bool oldStatus,
        bool newStatus,
        address caller,
        uint256 timestamp
    );

    event AutoRedeem(
        uint256 feeDistribution,
        uint256 amountToRedeem,
        address caller,
        uint256 timestamp
    );

    event EnableTrading(
        bool oldStatus,
        bool newStatus,
        address caller,
        uint256 timestamp
    );

    // FUNCTION

    /* General */

    receive() external payable {}

    function enableTrading() external onlyOwner {
        if (tradeEnabled) {
            revert InvalidTradeEnabledState(tradeEnabled);
        }
        if (isFeeActive) {
            revert InvalidFeeActiveState(isFeeActive);
        }
         if (isSwapEnabled) {
            revert InvalidSwapEnabledState(isSwapEnabled);
        }
        tradeEnabled = true;
        isFeeActive = true;
        isSwapEnabled = true;
    }

    /* Check */

    function isDonut() external pure returns (bool) {
        return true;
    }

    function circulatingSupply() external view returns (uint256) {
        return
            totalSupply() - balanceOf(address(0xdead)) - balanceOf(address(0));
    }

    /* Update */

    function updateRouter(address newRouter) external onlyOwner {
        if (address(router) == newRouter) {
            revert CannotUseCurrentAddress(newRouter);
        }
        address oldRouter = address(router);
        router = IRouter(newRouter);

        isExcludeFromFees[newRouter] = true;

        emit UpdateRouter(oldRouter, newRouter, msg.sender, block.timestamp);
        pair = IFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );
        isPairLP[pair] = true;
    }

    function updateMinSwap(uint256 newMinSwap) external onlyOwner {
        if (minSwap == newMinSwap) {
            revert CannotUseCurrentValue(newMinSwap);
        }
        uint256 oldMinSwap = minSwap;
        minSwap = newMinSwap;
        emit UpdateMinSwap(oldMinSwap, newMinSwap, msg.sender, block.timestamp);
    }

    function updateFeeActive(bool newStatus) external onlyOwner {
        if (isFeeActive == newStatus) {
            revert CannotUseCurrentState(newStatus);
        }
        bool oldStatus = isFeeActive;
        isFeeActive = newStatus;
        emit UpdateFeeActive(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function updateWallets(address _project, address _marketing, address _fee) external onlyOwner {
        projectWallet = _project;
        marketingWallet = _marketing;
        feeWallet = _fee;
    }

    function updateSwapEnabled(bool newStatus) external onlyOwner {
        if (isSwapEnabled == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isSwapEnabled;
        isSwapEnabled = newStatus;
        emit UpdateSwapEnabled(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        if(_buyFee > 3000 || _sellFee > 3000 ) { revert InvalidFee(); }
        buyFee = _buyFee;
        sellFee = _sellFee;
    }

    function setFeePercentages(uint256 _burnFee, uint256 _liquidityFee, uint256 _marketingFee) public onlyOwner {
        require(_burnFee + _liquidityFee + _marketingFee <= 100, "Total fee percentage exceeds 100");
        burnFeePercentage = _burnFee;
        liquidityFeePercentage = _liquidityFee;
        marketingFeePercentage = _marketingFee;
    }

    function setExcludeFromFees(address user, bool status) external onlyOwner {
        if (isExcludeFromFees[user] == status) {
            revert CannotUseCurrentState(status);
        }
        isExcludeFromFees[user] = status;
    }

    function setPairLP(address lpPair, bool status) external onlyOwner {
        if (isPairLP[lpPair] == status) {
            revert CannotUseCurrentState(status);
        }
        if (
            IPair(lpPair).token0() != address(this) &&
            IPair(lpPair).token1() != address(this)
        ) {
            revert InvalidAddress(lpPair);
        }
        isPairLP[lpPair] = status;
    }

    /* Fee */

    function takeBuyFee(address from, uint256 amount) internal swapping returns (uint256) {
        uint256 feeAmount = (amount * buyFee) / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;

        if (feeAmount > 0) {
            distributeFee(from, feeAmount);
        }

        return newAmount;
    }

    function takeSellFee(address from, uint256 amount) internal swapping returns (uint256) {
        uint256 feeAmount = (amount * sellFee) / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;

        if (feeAmount > 0) {
            distributeFee(from, feeAmount);
        }

        return newAmount;
    }

    function swapBack() internal swapping {
        uint256 initialBalance = address(this).balance;
        uint256 firstLiquidityHalf = minSwap / 2;
        uint256 secondLiquidityHalf = minSwap - firstLiquidityHalf;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), minSwap);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            firstLiquidityHalf,
            0,
            path,
            address(this),
            block.timestamp
        );
        
        router.addLiquidityETH{
            value: address(this).balance - initialBalance
        }(
            address(this),
            secondLiquidityHalf,
            0,
            0,
            address(0xdead),
            block.timestamp + 1_200
        );
    }

    function distributeFee(address from, uint256 feeAmount) internal swapping {
        totalFeeCollected += feeAmount;
        uint256 burnAmount = (feeAmount * burnFeePercentage) / 100;
        uint256 liquidityAmount = (feeAmount * liquidityFeePercentage) / 100;
        uint256 marketingAmount = (feeAmount * marketingFeePercentage) / 100;

        if (burnAmount > 0) {
            _balances[address(0)] += burnAmount;
        }

        if(liquidityAmount > 0){
            _balances[address(this)] += liquidityAmount;
        }

        if (marketingAmount > 0) {
            _balances[marketingWallet] += marketingAmount;
        }

        _balances[from] -= feeAmount;
        _balances[feeWallet] += (feeAmount - burnAmount - liquidityAmount - marketingAmount);
    }

    function takeTransferFee(
        address from,
        uint256 amount
    ) internal swapping returns (uint256) {
        uint256 feeAmount = (amount * TRANSFERFEE) / FEEDENOMINATOR;
        uint256 newAmount = amount - feeAmount;
        if (feeAmount > 0) {
            distributeFee(from, feeAmount);
        }
        return newAmount;
    }

    /* ERC20 Standard */

    function name() external view virtual override returns (string memory) {
        return NAME;
    }

    function symbol() external view virtual override returns (string memory) {
        return SYMBOL;
    }

    function decimals() external view virtual override returns (uint8) {
        return DECIMALS;
    }

    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 to,
        uint256 amount
    ) external virtual override returns (bool) {
        address provider = msg.sender;
        return _transfer(provider, to, amount);
    }

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

    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        return _transfer(from, to, amount);
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) external virtual returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, allowance(provider, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) external virtual returns (bool) {
        address provider = msg.sender;
        uint256 currentAllowance = allowance(provider, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(provider, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _mint(address account, uint256 amount) internal virtual {
        if (account == address(0)) {
            revert InvalidAddress(account);
        }

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

    function _approve(
        address provider,
        address spender,
        uint256 amount
    ) internal virtual {
        if (provider == address(0)) {
            revert InvalidAddress(provider);
        }
        if (spender == address(0)) {
            revert InvalidAddress(spender);
        }

        _allowances[provider][spender] = amount;
        emit Approval(provider, spender, amount);
    }

    function _spendAllowance(
        address provider,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(provider, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(provider, spender, currentAllowance - amount);
            }
        }
    }

    /* Additional */

    function _basicTransfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
        return true;
    }

    /* Overrides */

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual returns (bool) {
        if (from == address(0)) {
            revert InvalidAddress(from);
        }
        if (to == address(0)) {
            revert InvalidAddress(to);
        }

        if (
            !tradeEnabled && !isExcludeFromFees[from] && !isExcludeFromFees[to]
        ) {
            revert TradeDisabled();
        }

        if (inSwap || isExcludeFromFees[from]) {
            return _basicTransfer(from, to, amount);
        }

        uint256 newAmount = amount;

        if (isFeeActive && !isExcludeFromFees[from] && !isExcludeFromFees[to]) {
            newAmount = _beforeTokenTransfer(from, to, amount);
        }

        if (from != pair && balanceOf(address(this)) >= minSwap && isSwapEnabled) {
            swapBack();
        }

        require(
            _balances[from] >= newAmount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = _balances[from] - newAmount;
            _balances[to] += newAmount;
        }

        emit Transfer(from, to, newAmount);

        return true;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual swapping returns (uint256) {
        if (isPairLP[from] && (buyFee > 0)) {
            return takeBuyFee(from, amount);
        }
        if (isPairLP[to] && (sellFee > 0)) {
            return takeSellFee(from, amount);
        }
        if (!isPairLP[from] && !isPairLP[to] && (TRANSFERFEE > 0)) {
            return takeTransferFee(from, amount);
        }
        return amount;
    }
}

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"},{"inputs":[{"internalType":"address","name":"current","type":"address"}],"name":"CannotUseCurrentAddress","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"CannotUseCurrentState","type":"error"},{"inputs":[{"internalType":"uint256","name":"current","type":"uint256"}],"name":"CannotUseCurrentValue","type":"error"},{"inputs":[{"internalType":"address","name":"invalid","type":"address"}],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidFee","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidFeeActiveState","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"InvalidOwner","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidSwapEnabledState","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidTradeEnabledState","type":"error"},{"inputs":[{"internalType":"uint256","name":"invalid","type":"uint256"}],"name":"InvalidValue","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"PresaleAlreadyFinalized","type":"error"},{"inputs":[],"name":"TradeDisabled","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"UnauthorizedAccount","type":"error"},{"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":"feeDistribution","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToRedeem","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"AutoRedeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"EnableTrading","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateFeeActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMinSwap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMinSwap","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateMinSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateSwapEnabled","type":"event"},{"inputs":[],"name":"FEEDENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFERFEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","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":"burnFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"isDonut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPairLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwap","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFeePercentages","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpPair","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setPairLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateFeeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinSwap","type":"uint256"}],"name":"updateMinSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_project","type":"address"},{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_fee","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052606460035560c8600455600060058190556006819055600781905560088054737c983436362602ca3a38a7d518409e1f08b10c666001600160a01b0319918216811790925560098054821683179055600a80549091169091179055600b55683635c9adc5dea00000600c55600d805463ffffffff191690553480156200008957600080fd5b50336200009681620002e3565b50600954620000cb906001600160a01b0316620000b66012600a620004ec565b620000c590620f424062000504565b62000333565b600180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015691906200051e565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df91906200051e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025391906200051e565b600d8054600160201b600160c01b0319166401000000006001600160a01b0393841681029190911791829055900481166000908152601160209081526040808320805460ff1990811660019081179092553385526010909352818420805484168217905560095485168452818420805484168217905580549094168352909120805490911690911790556200055f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166200036a57604051634726455360e11b81526001600160a01b038316600482015260240160405180910390fd5b80600260008282546200037e919062000549565b90915550506001600160a01b0382166000818152600e60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200042e578160001904821115620004125762000412620003d7565b808516156200042057918102915b93841c9390800290620003f2565b509250929050565b6000826200044757506001620004e6565b816200045657506000620004e6565b81600181146200046f57600281146200047a576200049a565b6001915050620004e6565b60ff8411156200048e576200048e620003d7565b50506001821b620004e6565b5060208310610133831016604e8410600b8410161715620004bf575081810a620004e6565b620004cb8383620003ed565b8060001904821115620004e257620004e2620003d7565b0290505b92915050565b6000620004fd60ff84168362000436565b9392505050565b8082028115828204841417620004e657620004e6620003d7565b6000602082840312156200053157600080fd5b81516001600160a01b0381168114620004fd57600080fd5b80820180821115620004e657620004e6620003d7565b61212c806200056f6000396000f3fe6080604052600436106102815760003560e01c80638a8c523c1161014f578063beb08ab9116100c1578063dd62ed3e1161007a578063dd62ed3e14610785578063e43504da146107a5578063f25f4b56146107c4578063f2a42687146107e4578063f2fde38b14610814578063f887ea401461083457600080fd5b8063beb08ab9146106d5578063c4ceb339146106f5578063c851cc321461070b578063d621e8131461072b578063d63cad2214610745578063d83067861461076557600080fd5b8063a457c2d711610113578063a457c2d714610621578063a8aa1b3114610641578063a9059cbb14610669578063ab28a04c14610689578063b4b081df1461069f578063b9b2b5cd146106bf57600080fd5b80638a8c523c1461058a5780638da5cb5b1461059f578063924de9b7146105bd5780639358928b146105dd57806395d89b41146105f257600080fd5b80633bf31454116101f35780636db79437116101ac5780636db79437146104b157806370a08231146104d1578063715018a61461050757806375f0a8741461051c57806375fed3c71461055457806380ada68a1461057457600080fd5b80633bf314541461041b578063470624021461043b57806359cd903114610451578063601d495814610467578063625dd6051461047d5780636a3dacf21461049d57600080fd5b806323b872dd1161024557806323b872dd146103735780632b14ca56146103935780632ce0c0a0146103a9578063313ce567146103be578063351a964d146103da57806339509351146103fb57600080fd5b806306fdde031461028d57806308c43650146102d2578063095ea7b314610312578063147c9f6d1461033257806318160ddd1461035457600080fd5b3661028857005b600080fd5b34801561029957600080fd5b5060408051808201909152600a8152692237b73aba39a1b7b4b760b11b60208201525b6040516102c99190611d2c565b60405180910390f35b3480156102de57600080fd5b506103026102ed366004611d8f565b60116020526000908152604090205460ff1681565b60405190151581526020016102c9565b34801561031e57600080fd5b5061030261032d366004611dac565b610854565b34801561033e57600080fd5b5061035261034d366004611dd8565b61086e565b005b34801561036057600080fd5b506002545b6040519081526020016102c9565b34801561037f57600080fd5b5061030261038e366004611e23565b6108b5565b34801561039f57600080fd5b5061036560045481565b3480156103b557600080fd5b50610365600081565b3480156103ca57600080fd5b50604051601281526020016102c9565b3480156103e657600080fd5b50600d54610302906301000000900460ff1681565b34801561040757600080fd5b50610302610416366004611dac565b6108d9565b34801561042757600080fd5b50610352610436366004611e79565b6108fb565b34801561044757600080fd5b5061036560035481565b34801561045d57600080fd5b50610365600c5481565b34801561047357600080fd5b5061036560065481565b34801561048957600080fd5b50610352610498366004611e94565b6109b0565b3480156104a957600080fd5b506001610302565b3480156104bd57600080fd5b506103526104cc366004611ec9565b610b46565b3480156104dd57600080fd5b506103656104ec366004611d8f565b6001600160a01b03166000908152600e602052604090205490565b34801561051357600080fd5b50610352610b88565b34801561052857600080fd5b5060085461053c906001600160a01b031681565b6040516001600160a01b0390911681526020016102c9565b34801561056057600080fd5b5061035261056f366004611eeb565b610b9c565b34801561058057600080fd5b5061036560075481565b34801561059657600080fd5b50610352610c17565b3480156105ab57600080fd5b506000546001600160a01b031661053c565b3480156105c957600080fd5b506103526105d8366004611e79565b610cd7565b3480156105e957600080fd5b50610365610d83565b3480156105fe57600080fd5b50604080518082019091526006815265444f4e55545360d01b60208201526102bc565b34801561062d57600080fd5b5061030261063c366004611dac565b610df3565b34801561064d57600080fd5b50600d5461053c9064010000000090046001600160a01b031681565b34801561067557600080fd5b50610302610684366004611dac565b610e79565b34801561069557600080fd5b5061036561271081565b3480156106ab57600080fd5b506103526106ba366004611f04565b610e8f565b3480156106cb57600080fd5b50610365600b5481565b3480156106e157600080fd5b5060095461053c906001600160a01b031681565b34801561070157600080fd5b5061036560055481565b34801561071757600080fd5b50610352610726366004611d8f565b610f0a565b34801561073757600080fd5b50600d546103029060ff1681565b34801561075157600080fd5b50610352610760366004611e94565b61118a565b34801561077157600080fd5b50600d546103029062010000900460ff1681565b34801561079157600080fd5b506103656107a0366004611f30565b611201565b3480156107b157600080fd5b50600d5461030290610100900460ff1681565b3480156107d057600080fd5b50600a5461053c906001600160a01b031681565b3480156107f057600080fd5b506103026107ff366004611d8f565b60106020526000908152604090205460ff1681565b34801561082057600080fd5b5061035261082f366004611d8f565b61122c565b34801561084057600080fd5b5060015461053c906001600160a01b031681565b60003361086281858561126a565b60019150505b92915050565b61087661132f565b600980546001600160a01b039485166001600160a01b0319918216179091556008805493851693821693909317909255600a8054919093169116179055565b6000336108c385828561136b565b6108ce8585856113e5565b9150505b9392505050565b6000336108628185856108ec8383611201565b6108f69190611f7f565b61126a565b61090361132f565b801515600d60019054906101000a900460ff1615150361093e5760405162a7e72d60e41b815281151560048201526024015b60405180910390fd5b600d805482151561010081810261ff00198416179093556040805160ff94909304939093168015158352602083019190915233928201929092524260608201527ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f906080015b60405180910390a15050565b6109b861132f565b6001600160a01b03821660009081526011602052604090205481151560ff9091161515036109fc5760405162a7e72d60e41b81528115156004820152602401610935565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190611f92565b6001600160a01b031614158015610af25750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190611f92565b6001600160a01b031614155b15610b1b57604051634726455360e11b81526001600160a01b0383166004820152602401610935565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b610b4e61132f565b610bb8821180610b5f5750610bb881115b15610b7d576040516358d620b360e01b815260040160405180910390fd5b600391909155600455565b610b9061132f565b610b9a6000611670565b565b610ba461132f565b80600c5403610bc95760405163657e16cf60e01b815260048101829052602401610935565b600c805490829055604080518281526020810184905233918101919091524260608201527f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c5906080016109a4565b610c1f61132f565b600d5460ff1615610c4e57600d546040516301bf623960e61b815260ff90911615156004820152602401610935565b600d54610100900460ff1615610c8657600d54604051630eff900b60e21b815261010090910460ff1615156004820152602401610935565b600d546301000000900460ff1615610cc257600d5460405163610a8e6760e01b8152630100000090910460ff1615156004820152602401610935565b600d805463ff00ffff19166301000101179055565b610cdf61132f565b801515600d60039054906101000a900460ff16151503610d155760405162a7e72d60e41b81528115156004820152602401610935565b600d8054821515630100000081810263ff000000198416179093556040805160ff94909304939093168015158352602083019190915233928201929092524260608201527fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a044906080016109a4565b600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c5461dead60009081527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a54600254919291610de49190611faf565b610dee9190611faf565b905090565b60003381610e018286611201565b905083811015610e615760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610935565b610e6e828686840361126a565b506001949350505050565b600033610e878185856113e5565b949350505050565b610e9761132f565b606481610ea48486611f7f565b610eae9190611f7f565b1115610efc5760405162461bcd60e51b815260206004820181905260248201527f546f74616c206665652070657263656e746167652065786365656473203130306044820152606401610935565b600592909255600655600755565b610f1261132f565b6001546001600160a01b03808316911603610f4b5760405163a936636960e01b81526001600160a01b0382166004820152602401610935565b600180546001600160a01b038381166001600160a01b0319831681178455600081815260106020908152604091829020805460ff19169096179095558051929093168083529382015233918101919091524260608201527fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611022573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110469190611f92565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc9190611f92565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190611f92565b600d8054640100000000600160c01b0319166401000000006001600160a01b03938416810291909117918290559004166000908152601160205260409020805460ff191660011790555050565b61119261132f565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036111d65760405162a7e72d60e41b81528115156004820152602401610935565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b61123461132f565b6001600160a01b03811661125e5760405163b20f76e360e01b815260006004820152602401610935565b61126781611670565b50565b6001600160a01b03831661129c57604051634726455360e11b81526001600160a01b0384166004820152602401610935565b6001600160a01b0382166112ce57604051634726455360e11b81526001600160a01b0383166004820152602401610935565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b336113426000546001600160a01b031690565b6001600160a01b031614610b9a576040516332b2baa360e01b8152336004820152602401610935565b60006113778484611201565b905060001981146113df57818110156113d25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610935565b6113df848484840361126a565b50505050565b60006001600160a01b03841661141957604051634726455360e11b81526001600160a01b0385166004820152602401610935565b6001600160a01b03831661144b57604051634726455360e11b81526001600160a01b0384166004820152602401610935565b600d5460ff1615801561147757506001600160a01b03841660009081526010602052604090205460ff16155b801561149c57506001600160a01b03831660009081526010602052604090205460ff16155b156114ba57604051632b61510560e11b815260040160405180910390fd5b600d5462010000900460ff16806114e957506001600160a01b03841660009081526010602052604090205460ff165b15611500576114f98484846116c0565b90506108d2565b600d548290610100900460ff16801561153257506001600160a01b03851660009081526010602052604090205460ff16155b801561155757506001600160a01b03841660009081526010602052604090205460ff16155b1561156a57611567858585611759565b90505b600d546001600160a01b0386811664010000000090920416148015906115a15750600c54306000908152600e602052604090205410155b80156115b65750600d546301000000900460ff165b156115c3576115c3611854565b6001600160a01b0385166000908152600e60205260409020548111156115fb5760405162461bcd60e51b815260040161093590611fc2565b6001600160a01b038086166000818152600e6020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061165d9085815260200190565b60405180910390a3506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600e6020526040812054828110156116f95760405162461bcd60e51b815260040161093590611fc2565b6001600160a01b038086166000818152600e602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061165d9087815260200190565b600d805462ff00001916620100001790556001600160a01b03831660009081526011602052604081205460ff16801561179457506000600354115b156117aa576117a38483611ac1565b9050611841565b6001600160a01b03831660009081526011602052604090205460ff1680156117d457506000600454115b156117e3576117a38483611b26565b6001600160a01b03841660009081526011602052604090205460ff1615801561182557506001600160a01b03831660009081526011602052604090205460ff16155b801561182f575060005b1561183e576117a38483611b4d565b50805b600d805462ff0000191690559392505050565b600d805462ff0000191662010000179055600c54479060009061187990600290612008565b9050600081600c5461188b9190611faf565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106118c5576118c561202a565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190611f92565b816001815181106119555761195561202a565b6001600160a01b039283166020918202929092010152600154600c5461197e923092169061126a565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906119b7908690600090869030904290600401612040565b600060405180830381600087803b1580156119d157600080fd5b505af11580156119e5573d6000803e3d6000fd5b50506001546001600160a01b0316915063f305d7199050611a068647611faf565b308560008061dead611a1a426104b0611f7f565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015611a87573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611aac91906120b1565b5050600d805462ff0000191690555050505050565b600d805462ff0000191662010000179055600354600090819061271090611ae890856120df565b611af29190612008565b90506000611b008285611faf565b90508115611b1257611b128583611b6e565b600d805462ff000019169055949350505050565b600d805462ff0000191662010000179055600454600090819061271090611ae890856120df565b600d805462ff0000191662010000179055600080612710611ae882856120df565b600d805462ff0000191662010000179055600b8054829190600090611b94908490611f7f565b9091555050600554600090606490611bac90846120df565b611bb69190612008565b90506000606460065484611bca91906120df565b611bd49190612008565b90506000606460075485611be891906120df565b611bf29190612008565b90508215611c3b576000808052600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c8054859290611c35908490611f7f565b90915550505b8115611c6657306000908152600e602052604081208054849290611c60908490611f7f565b90915550505b8015611c9c576008546001600160a01b03166000908152600e602052604081208054839290611c96908490611f7f565b90915550505b6001600160a01b0385166000908152600e602052604081208054869290611cc4908490611faf565b9091555081905082611cd68587611faf565b611ce09190611faf565b611cea9190611faf565b600a546001600160a01b03166000908152600e602052604081208054909190611d14908490611f7f565b9091555050600d805462ff0000191690555050505050565b600060208083528351808285015260005b81811015611d5957858101830151858201604001528201611d3d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461126757600080fd5b600060208284031215611da157600080fd5b81356108d281611d7a565b60008060408385031215611dbf57600080fd5b8235611dca81611d7a565b946020939093013593505050565b600080600060608486031215611ded57600080fd5b8335611df881611d7a565b92506020840135611e0881611d7a565b91506040840135611e1881611d7a565b809150509250925092565b600080600060608486031215611e3857600080fd5b8335611e4381611d7a565b92506020840135611e5381611d7a565b929592945050506040919091013590565b80358015158114611e7457600080fd5b919050565b600060208284031215611e8b57600080fd5b6108d282611e64565b60008060408385031215611ea757600080fd5b8235611eb281611d7a565b9150611ec060208401611e64565b90509250929050565b60008060408385031215611edc57600080fd5b50508035926020909101359150565b600060208284031215611efd57600080fd5b5035919050565b600080600060608486031215611f1957600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611f4357600080fd5b8235611f4e81611d7a565b91506020830135611f5e81611d7a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561086857610868611f69565b600060208284031215611fa457600080fd5b81516108d281611d7a565b8181038181111561086857610868611f69565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60008261202557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120905784516001600160a01b03168352938301939183019160010161206b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156120c657600080fd5b8351925060208401519150604084015190509250925092565b808202811582820484141761086857610868611f6956fea264697066735822122043b97226d301edac07357a4ba20454671b15a4bcf7302dd58c30b89063527c3d64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102815760003560e01c80638a8c523c1161014f578063beb08ab9116100c1578063dd62ed3e1161007a578063dd62ed3e14610785578063e43504da146107a5578063f25f4b56146107c4578063f2a42687146107e4578063f2fde38b14610814578063f887ea401461083457600080fd5b8063beb08ab9146106d5578063c4ceb339146106f5578063c851cc321461070b578063d621e8131461072b578063d63cad2214610745578063d83067861461076557600080fd5b8063a457c2d711610113578063a457c2d714610621578063a8aa1b3114610641578063a9059cbb14610669578063ab28a04c14610689578063b4b081df1461069f578063b9b2b5cd146106bf57600080fd5b80638a8c523c1461058a5780638da5cb5b1461059f578063924de9b7146105bd5780639358928b146105dd57806395d89b41146105f257600080fd5b80633bf31454116101f35780636db79437116101ac5780636db79437146104b157806370a08231146104d1578063715018a61461050757806375f0a8741461051c57806375fed3c71461055457806380ada68a1461057457600080fd5b80633bf314541461041b578063470624021461043b57806359cd903114610451578063601d495814610467578063625dd6051461047d5780636a3dacf21461049d57600080fd5b806323b872dd1161024557806323b872dd146103735780632b14ca56146103935780632ce0c0a0146103a9578063313ce567146103be578063351a964d146103da57806339509351146103fb57600080fd5b806306fdde031461028d57806308c43650146102d2578063095ea7b314610312578063147c9f6d1461033257806318160ddd1461035457600080fd5b3661028857005b600080fd5b34801561029957600080fd5b5060408051808201909152600a8152692237b73aba39a1b7b4b760b11b60208201525b6040516102c99190611d2c565b60405180910390f35b3480156102de57600080fd5b506103026102ed366004611d8f565b60116020526000908152604090205460ff1681565b60405190151581526020016102c9565b34801561031e57600080fd5b5061030261032d366004611dac565b610854565b34801561033e57600080fd5b5061035261034d366004611dd8565b61086e565b005b34801561036057600080fd5b506002545b6040519081526020016102c9565b34801561037f57600080fd5b5061030261038e366004611e23565b6108b5565b34801561039f57600080fd5b5061036560045481565b3480156103b557600080fd5b50610365600081565b3480156103ca57600080fd5b50604051601281526020016102c9565b3480156103e657600080fd5b50600d54610302906301000000900460ff1681565b34801561040757600080fd5b50610302610416366004611dac565b6108d9565b34801561042757600080fd5b50610352610436366004611e79565b6108fb565b34801561044757600080fd5b5061036560035481565b34801561045d57600080fd5b50610365600c5481565b34801561047357600080fd5b5061036560065481565b34801561048957600080fd5b50610352610498366004611e94565b6109b0565b3480156104a957600080fd5b506001610302565b3480156104bd57600080fd5b506103526104cc366004611ec9565b610b46565b3480156104dd57600080fd5b506103656104ec366004611d8f565b6001600160a01b03166000908152600e602052604090205490565b34801561051357600080fd5b50610352610b88565b34801561052857600080fd5b5060085461053c906001600160a01b031681565b6040516001600160a01b0390911681526020016102c9565b34801561056057600080fd5b5061035261056f366004611eeb565b610b9c565b34801561058057600080fd5b5061036560075481565b34801561059657600080fd5b50610352610c17565b3480156105ab57600080fd5b506000546001600160a01b031661053c565b3480156105c957600080fd5b506103526105d8366004611e79565b610cd7565b3480156105e957600080fd5b50610365610d83565b3480156105fe57600080fd5b50604080518082019091526006815265444f4e55545360d01b60208201526102bc565b34801561062d57600080fd5b5061030261063c366004611dac565b610df3565b34801561064d57600080fd5b50600d5461053c9064010000000090046001600160a01b031681565b34801561067557600080fd5b50610302610684366004611dac565b610e79565b34801561069557600080fd5b5061036561271081565b3480156106ab57600080fd5b506103526106ba366004611f04565b610e8f565b3480156106cb57600080fd5b50610365600b5481565b3480156106e157600080fd5b5060095461053c906001600160a01b031681565b34801561070157600080fd5b5061036560055481565b34801561071757600080fd5b50610352610726366004611d8f565b610f0a565b34801561073757600080fd5b50600d546103029060ff1681565b34801561075157600080fd5b50610352610760366004611e94565b61118a565b34801561077157600080fd5b50600d546103029062010000900460ff1681565b34801561079157600080fd5b506103656107a0366004611f30565b611201565b3480156107b157600080fd5b50600d5461030290610100900460ff1681565b3480156107d057600080fd5b50600a5461053c906001600160a01b031681565b3480156107f057600080fd5b506103026107ff366004611d8f565b60106020526000908152604090205460ff1681565b34801561082057600080fd5b5061035261082f366004611d8f565b61122c565b34801561084057600080fd5b5060015461053c906001600160a01b031681565b60003361086281858561126a565b60019150505b92915050565b61087661132f565b600980546001600160a01b039485166001600160a01b0319918216179091556008805493851693821693909317909255600a8054919093169116179055565b6000336108c385828561136b565b6108ce8585856113e5565b9150505b9392505050565b6000336108628185856108ec8383611201565b6108f69190611f7f565b61126a565b61090361132f565b801515600d60019054906101000a900460ff1615150361093e5760405162a7e72d60e41b815281151560048201526024015b60405180910390fd5b600d805482151561010081810261ff00198416179093556040805160ff94909304939093168015158352602083019190915233928201929092524260608201527ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f906080015b60405180910390a15050565b6109b861132f565b6001600160a01b03821660009081526011602052604090205481151560ff9091161515036109fc5760405162a7e72d60e41b81528115156004820152602401610935565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190611f92565b6001600160a01b031614158015610af25750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190611f92565b6001600160a01b031614155b15610b1b57604051634726455360e11b81526001600160a01b0383166004820152602401610935565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b610b4e61132f565b610bb8821180610b5f5750610bb881115b15610b7d576040516358d620b360e01b815260040160405180910390fd5b600391909155600455565b610b9061132f565b610b9a6000611670565b565b610ba461132f565b80600c5403610bc95760405163657e16cf60e01b815260048101829052602401610935565b600c805490829055604080518281526020810184905233918101919091524260608201527f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c5906080016109a4565b610c1f61132f565b600d5460ff1615610c4e57600d546040516301bf623960e61b815260ff90911615156004820152602401610935565b600d54610100900460ff1615610c8657600d54604051630eff900b60e21b815261010090910460ff1615156004820152602401610935565b600d546301000000900460ff1615610cc257600d5460405163610a8e6760e01b8152630100000090910460ff1615156004820152602401610935565b600d805463ff00ffff19166301000101179055565b610cdf61132f565b801515600d60039054906101000a900460ff16151503610d155760405162a7e72d60e41b81528115156004820152602401610935565b600d8054821515630100000081810263ff000000198416179093556040805160ff94909304939093168015158352602083019190915233928201929092524260608201527fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a044906080016109a4565b600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c5461dead60009081527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a54600254919291610de49190611faf565b610dee9190611faf565b905090565b60003381610e018286611201565b905083811015610e615760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610935565b610e6e828686840361126a565b506001949350505050565b600033610e878185856113e5565b949350505050565b610e9761132f565b606481610ea48486611f7f565b610eae9190611f7f565b1115610efc5760405162461bcd60e51b815260206004820181905260248201527f546f74616c206665652070657263656e746167652065786365656473203130306044820152606401610935565b600592909255600655600755565b610f1261132f565b6001546001600160a01b03808316911603610f4b5760405163a936636960e01b81526001600160a01b0382166004820152602401610935565b600180546001600160a01b038381166001600160a01b0319831681178455600081815260106020908152604091829020805460ff19169096179095558051929093168083529382015233918101919091524260608201527fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611022573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110469190611f92565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cc9190611f92565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190611f92565b600d8054640100000000600160c01b0319166401000000006001600160a01b03938416810291909117918290559004166000908152601160205260409020805460ff191660011790555050565b61119261132f565b6001600160a01b03821660009081526010602052604090205481151560ff9091161515036111d65760405162a7e72d60e41b81528115156004820152602401610935565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b61123461132f565b6001600160a01b03811661125e5760405163b20f76e360e01b815260006004820152602401610935565b61126781611670565b50565b6001600160a01b03831661129c57604051634726455360e11b81526001600160a01b0384166004820152602401610935565b6001600160a01b0382166112ce57604051634726455360e11b81526001600160a01b0383166004820152602401610935565b6001600160a01b038381166000818152600f602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b336113426000546001600160a01b031690565b6001600160a01b031614610b9a576040516332b2baa360e01b8152336004820152602401610935565b60006113778484611201565b905060001981146113df57818110156113d25760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610935565b6113df848484840361126a565b50505050565b60006001600160a01b03841661141957604051634726455360e11b81526001600160a01b0385166004820152602401610935565b6001600160a01b03831661144b57604051634726455360e11b81526001600160a01b0384166004820152602401610935565b600d5460ff1615801561147757506001600160a01b03841660009081526010602052604090205460ff16155b801561149c57506001600160a01b03831660009081526010602052604090205460ff16155b156114ba57604051632b61510560e11b815260040160405180910390fd5b600d5462010000900460ff16806114e957506001600160a01b03841660009081526010602052604090205460ff165b15611500576114f98484846116c0565b90506108d2565b600d548290610100900460ff16801561153257506001600160a01b03851660009081526010602052604090205460ff16155b801561155757506001600160a01b03841660009081526010602052604090205460ff16155b1561156a57611567858585611759565b90505b600d546001600160a01b0386811664010000000090920416148015906115a15750600c54306000908152600e602052604090205410155b80156115b65750600d546301000000900460ff165b156115c3576115c3611854565b6001600160a01b0385166000908152600e60205260409020548111156115fb5760405162461bcd60e51b815260040161093590611fc2565b6001600160a01b038086166000818152600e6020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061165d9085815260200190565b60405180910390a3506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166000908152600e6020526040812054828110156116f95760405162461bcd60e51b815260040161093590611fc2565b6001600160a01b038086166000818152600e602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061165d9087815260200190565b600d805462ff00001916620100001790556001600160a01b03831660009081526011602052604081205460ff16801561179457506000600354115b156117aa576117a38483611ac1565b9050611841565b6001600160a01b03831660009081526011602052604090205460ff1680156117d457506000600454115b156117e3576117a38483611b26565b6001600160a01b03841660009081526011602052604090205460ff1615801561182557506001600160a01b03831660009081526011602052604090205460ff16155b801561182f575060005b1561183e576117a38483611b4d565b50805b600d805462ff0000191690559392505050565b600d805462ff0000191662010000179055600c54479060009061187990600290612008565b9050600081600c5461188b9190611faf565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106118c5576118c561202a565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561191e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119429190611f92565b816001815181106119555761195561202a565b6001600160a01b039283166020918202929092010152600154600c5461197e923092169061126a565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906119b7908690600090869030904290600401612040565b600060405180830381600087803b1580156119d157600080fd5b505af11580156119e5573d6000803e3d6000fd5b50506001546001600160a01b0316915063f305d7199050611a068647611faf565b308560008061dead611a1a426104b0611f7f565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c40160606040518083038185885af1158015611a87573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611aac91906120b1565b5050600d805462ff0000191690555050505050565b600d805462ff0000191662010000179055600354600090819061271090611ae890856120df565b611af29190612008565b90506000611b008285611faf565b90508115611b1257611b128583611b6e565b600d805462ff000019169055949350505050565b600d805462ff0000191662010000179055600454600090819061271090611ae890856120df565b600d805462ff0000191662010000179055600080612710611ae882856120df565b600d805462ff0000191662010000179055600b8054829190600090611b94908490611f7f565b9091555050600554600090606490611bac90846120df565b611bb69190612008565b90506000606460065484611bca91906120df565b611bd49190612008565b90506000606460075485611be891906120df565b611bf29190612008565b90508215611c3b576000808052600e6020527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c8054859290611c35908490611f7f565b90915550505b8115611c6657306000908152600e602052604081208054849290611c60908490611f7f565b90915550505b8015611c9c576008546001600160a01b03166000908152600e602052604081208054839290611c96908490611f7f565b90915550505b6001600160a01b0385166000908152600e602052604081208054869290611cc4908490611faf565b9091555081905082611cd68587611faf565b611ce09190611faf565b611cea9190611faf565b600a546001600160a01b03166000908152600e602052604081208054909190611d14908490611f7f565b9091555050600d805462ff0000191690555050505050565b600060208083528351808285015260005b81811015611d5957858101830151858201604001528201611d3d565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461126757600080fd5b600060208284031215611da157600080fd5b81356108d281611d7a565b60008060408385031215611dbf57600080fd5b8235611dca81611d7a565b946020939093013593505050565b600080600060608486031215611ded57600080fd5b8335611df881611d7a565b92506020840135611e0881611d7a565b91506040840135611e1881611d7a565b809150509250925092565b600080600060608486031215611e3857600080fd5b8335611e4381611d7a565b92506020840135611e5381611d7a565b929592945050506040919091013590565b80358015158114611e7457600080fd5b919050565b600060208284031215611e8b57600080fd5b6108d282611e64565b60008060408385031215611ea757600080fd5b8235611eb281611d7a565b9150611ec060208401611e64565b90509250929050565b60008060408385031215611edc57600080fd5b50508035926020909101359150565b600060208284031215611efd57600080fd5b5035919050565b600080600060608486031215611f1957600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611f4357600080fd5b8235611f4e81611d7a565b91506020830135611f5e81611d7a565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561086857610868611f69565b600060208284031215611fa457600080fd5b81516108d281611d7a565b8181038181111561086857610868611f69565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b60008261202557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120905784516001600160a01b03168352938301939183019160010161206b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156120c657600080fd5b8351925060208401519150604084015190509250925092565b808202811582820484141761086857610868611f6956fea264697066735822122043b97226d301edac07357a4ba20454671b15a4bcf7302dd58c30b89063527c3d64736f6c63430008120033

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  ]

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.