ETH Price: $2,868.20 (-10.44%)
Gas: 14 Gwei

Contract

0x559BaBc46A6Ab52FD11b2790bCe01F0A434a8B4e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve202342512024-07-04 16:10:1114 hrs ago1720109411IN
0x559BaBc4...A434a8B4e
0 ETH0.0005774412.38245545
Approve202035892024-06-30 9:24:594 days ago1719739499IN
0x559BaBc4...A434a8B4e
0 ETH0.000150773.23737071
Approve201996362024-06-29 20:09:475 days ago1719691787IN
0x559BaBc4...A434a8B4e
0 ETH0.000118332.54082463
Approve201903112024-06-28 12:53:476 days ago1719579227IN
0x559BaBc4...A434a8B4e
0 ETH0.000344327.39303227
Approve201903002024-06-28 12:51:356 days ago1719579095IN
0x559BaBc4...A434a8B4e
0 ETH0.000317876.8164543
Approve201648772024-06-24 23:39:5910 days ago1719272399IN
0x559BaBc4...A434a8B4e
0 ETH0.000366947.86868258
Approve201579432024-06-24 0:23:3511 days ago1719188615IN
0x559BaBc4...A434a8B4e
0 ETH0.0005578511.96247349
Approve201316512024-06-20 8:09:1114 days ago1718870951IN
0x559BaBc4...A434a8B4e
0 ETH0.0006891214.85371078
Approve201112142024-06-17 11:29:3517 days ago1718623775IN
0x559BaBc4...A434a8B4e
0 ETH0.000230394.94682853
Approve201111762024-06-17 11:21:4717 days ago1718623307IN
0x559BaBc4...A434a8B4e
0 ETH0.000202074.33882102
Approve201108932024-06-17 10:25:1117 days ago1718619911IN
0x559BaBc4...A434a8B4e
0 ETH0.000353887.58865761
Approve200825822024-06-13 11:24:2321 days ago1718277863IN
0x559BaBc4...A434a8B4e
0 ETH0.0007336115.75163404
Approve200029612024-06-02 8:31:5932 days ago1717317119IN
0x559BaBc4...A434a8B4e
0 ETH0.000406738.72175948
Approve200022432024-06-02 6:07:4733 days ago1717308467IN
0x559BaBc4...A434a8B4e
0 ETH0.000196314.21501709
Approve199986302024-06-01 18:01:4733 days ago1717264907IN
0x559BaBc4...A434a8B4e
0 ETH0.0009260619.85824898
Approve199947122024-06-01 4:54:4734 days ago1717217687IN
0x559BaBc4...A434a8B4e
0 ETH0.00024715.30572506
Approve199577412024-05-27 0:50:4739 days ago1716771047IN
0x559BaBc4...A434a8B4e
0 ETH0.000170863.6686544
Approve199245842024-05-22 9:39:3543 days ago1716370775IN
0x559BaBc4...A434a8B4e
0 ETH0.000395398.48966658
Approve199132042024-05-20 19:26:3545 days ago1716233195IN
0x559BaBc4...A434a8B4e
0 ETH0.0023830351.16653826
Approve198871132024-05-17 3:48:1149 days ago1715917691IN
0x559BaBc4...A434a8B4e
0 ETH0.000088513.63520691
Approve198430362024-05-10 23:52:1155 days ago1715385131IN
0x559BaBc4...A434a8B4e
0 ETH0.000321136.89521956
Approve198377432024-05-10 6:07:3556 days ago1715321255IN
0x559BaBc4...A434a8B4e
0 ETH0.000322866.92340906
Approve198212152024-05-07 22:37:4758 days ago1715121467IN
0x559BaBc4...A434a8B4e
0 ETH0.00020774.45978058
Approve198170012024-05-07 8:29:3558 days ago1715070575IN
0x559BaBc4...A434a8B4e
0 ETH0.0004963310.65698433
Transfer198169982024-05-07 8:28:5958 days ago1715070539IN
0x559BaBc4...A434a8B4e
0 ETH0.0005433510.98939725
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
202342512024-07-04 16:10:1114 hrs ago1720109411
0x559BaBc4...A434a8B4e
0.00348066 ETH
202342512024-07-04 16:10:1114 hrs ago1720109411
0x559BaBc4...A434a8B4e
0.00348066 ETH
202342512024-07-04 16:10:1114 hrs ago1720109411
0x559BaBc4...A434a8B4e
0.00696132 ETH
202288272024-07-03 21:59:4732 hrs ago1720043987
0x559BaBc4...A434a8B4e
0.00011203 ETH
202288272024-07-03 21:59:4732 hrs ago1720043987
0x559BaBc4...A434a8B4e
0.00011203 ETH
202288272024-07-03 21:59:4732 hrs ago1720043987
0x559BaBc4...A434a8B4e
0.00022406 ETH
202288252024-07-03 21:59:2332 hrs ago1720043963
0x559BaBc4...A434a8B4e
0.00579832 ETH
202288252024-07-03 21:59:2332 hrs ago1720043963
0x559BaBc4...A434a8B4e
0.00579832 ETH
202288252024-07-03 21:59:2332 hrs ago1720043963
0x559BaBc4...A434a8B4e
0.01159664 ETH
202035912024-06-30 9:25:234 days ago1719739523
0x559BaBc4...A434a8B4e
0.00049821 ETH
202035912024-06-30 9:25:234 days ago1719739523
0x559BaBc4...A434a8B4e
0.00049821 ETH
202035912024-06-30 9:25:234 days ago1719739523
0x559BaBc4...A434a8B4e
0.00099642 ETH
202024452024-06-30 5:35:115 days ago1719725711
0x559BaBc4...A434a8B4e
0.00042512 ETH
202024452024-06-30 5:35:115 days ago1719725711
0x559BaBc4...A434a8B4e
0.00042512 ETH
202024452024-06-30 5:35:115 days ago1719725711
0x559BaBc4...A434a8B4e
0.00085025 ETH
201996382024-06-29 20:10:115 days ago1719691811
0x559BaBc4...A434a8B4e
0.00701466 ETH
201996382024-06-29 20:10:115 days ago1719691811
0x559BaBc4...A434a8B4e
0.00701466 ETH
201996382024-06-29 20:10:115 days ago1719691811
0x559BaBc4...A434a8B4e
0.01402933 ETH
201636242024-06-24 19:27:1110 days ago1719257231
0x559BaBc4...A434a8B4e
0.00404629 ETH
201636242024-06-24 19:27:1110 days ago1719257231
0x559BaBc4...A434a8B4e
0.00404629 ETH
201636242024-06-24 19:27:1110 days ago1719257231
0x559BaBc4...A434a8B4e
0.00809259 ETH
201316582024-06-20 8:10:3514 days ago1718871035
0x559BaBc4...A434a8B4e
0.00513964 ETH
201316582024-06-20 8:10:3514 days ago1718871035
0x559BaBc4...A434a8B4e
0.00513964 ETH
201316582024-06-20 8:10:3514 days ago1718871035
0x559BaBc4...A434a8B4e
0.01027928 ETH
201316522024-06-20 8:09:2314 days ago1718870963
0x559BaBc4...A434a8B4e
0.00133773 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TrendGuru

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 350 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-16
*/

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;


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

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

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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);
    }
}

// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    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);
}

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;



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;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }


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

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }


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

    /**
     * @dev See {IERC20-allowance}.
     */
    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) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }


    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }


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

        return true;
    }


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

        _beforeTokenTransfer(from, to, amount);

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

        _afterTokenTransfer(from, to, 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;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _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;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

//SPDX-License-Identifier: MIT




pragma solidity 0.8.19;

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

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

    function WETH() external pure returns (address);

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

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

contract TrendGuru is ERC20, Ownable {
    struct Tax {
        uint256 marketingTax;
    }

    uint256 private constant _totalSupply = 1_000_000_000 * 1e18;

    //Router
    DexRouter public immutable uniswapRouter;
    address public immutable pairAddress;

    //Taxes
    Tax public buyTaxes = Tax(15);
    Tax public sellTaxes = Tax(15);


    //Whitelisting from taxes/maxwallet/txlimit/etc
    mapping(address => bool) private whitelisted;

    //Swapping
    uint256 public swapTokensAtAmount = _totalSupply / 100000; //after 0.001% of total supply, swap them
    bool public swapAndLiquifyEnabled = true;
    bool public isSwapping = false;
    bool public tradingEnabled = false;
    uint256 public startTradingBlock;

    //Wallets
    address public marketingWallet = 0x0ac2b75E5D1f50BBD1b25cFe1E132e0a546B3490 ;
    address public developmentWallet = 0xDb6F46184223Aa32F241b80e2108C138c3416b30 ;
    uint256 public maxWalletPercentage = 2;

    //Events

    event BuyFeesUpdated(uint256 indexed _trFee);
    event SellFeesUpdated(uint256 indexed _trFee);
    event marketingWalletChanged(address indexed _trWallet);
    event developmentWalletChanged(address indexed _trWallet);
    event SwapThresholdUpdated(uint256 indexed _newThreshold);
    event Whitelist(address indexed _target, bool indexed _status);
    event TransferFailed(address recipient, uint256 amount);
    event MaxWChanged(uint256 percentage);



    constructor() ERC20("TrendGuru", "TrendGuru") {

        uniswapRouter = DexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // mainet
        pairAddress = DexFactory(uniswapRouter.factory()).createPair(
            address(this),
            uniswapRouter.WETH()
        );
        whitelisted[msg.sender] = true;
        whitelisted[address(uniswapRouter)] = true;
        whitelisted[address(this)] = true;       
        _mint(msg.sender, _totalSupply);

    }

    function isContract(address account) internal view returns (bool) {
    return account.code.length > 0;
    }

    function setmarketingWallet(address _newmarketing) external onlyOwner {
        require(
            _newmarketing != address(0),
            "can not set marketing to dead wallet"
        );
        require(!isContract(_newmarketing), "Address can not be a contract address");
        marketingWallet = _newmarketing;
        emit marketingWalletChanged(_newmarketing);
    }

    function setdevelopmentWallet(address _newdevelopment) external onlyOwner {
        require(
            _newdevelopment != address(0),
            "can not set marketing to dead wallet"
        );

        require(!isContract(_newdevelopment), "Address can not be a contract address");
        developmentWallet = _newdevelopment;
        emit developmentWalletChanged(_newdevelopment);
    }    
    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        startTradingBlock = block.number;
    }
    function setBuyTaxes(uint256 _marketingTax) external onlyOwner {
        buyTaxes.marketingTax = _marketingTax;
        require(_marketingTax <= 20, "Can not set buy fees higher than 30%");
        emit BuyFeesUpdated(_marketingTax);
    }

    function setSellTaxes(uint256 _marketingTax) external onlyOwner {
        sellTaxes.marketingTax = _marketingTax;
        require(_marketingTax <= 20, "Can not set buy fees higher than 30%");
        emit SellFeesUpdated(_marketingTax);
    }
    function setSwapTokensAtAmount(uint256 _newAmount) external onlyOwner {
        require(
            _newAmount > 0 && _newAmount <= (_totalSupply * 5) / 1000,
            "Minimum swap amount must be greater than 0 and less than 0.5% of total supply!"
        );
        swapTokensAtAmount = _newAmount;
        emit SwapThresholdUpdated(swapTokensAtAmount);
    }

    function toggleSwapping() external onlyOwner {
        swapAndLiquifyEnabled = (swapAndLiquifyEnabled) ? false : true;
    }

    function setWhitelistStatus(
        address _wallet,
        bool _status
    ) external onlyOwner {
        whitelisted[_wallet] = _status;
        emit Whitelist(_wallet, _status);
    }

    function checkWhitelist(address _wallet) external view returns (bool) {
        return whitelisted[_wallet];
    }

    // this function is reponsible for managing tax, if _from or _to is whitelisted, we simply return _amount and skip all the limitations
    function _takeTax(
        address _from,
        address _to,
        uint256 _amount
    ) internal returns (uint256) {
        if (whitelisted[_from] || whitelisted[_to]) {
            return _amount;
        }
        uint256 totalTax = 0;

        if (_to == pairAddress) {
            totalTax = sellTaxes.marketingTax;
        } else if (_from == pairAddress) {
            totalTax = buyTaxes.marketingTax;
        }

        uint256 tax = 0;
        if (totalTax > 0) {
            tax = (_amount * totalTax) / 100;
            super._transfer(_from, address(this), tax);
        }
        return (_amount - tax);
    }

    function _transfer(
        address _from,
        address _to,
        uint256 _amount
    ) internal virtual override {
        require(_from != address(0), "transfer from address zero");
        require(_to != address(0), "transfer to address zero");
        require(_amount > 0, "Transfer amount must be greater than zero");


            // Calculate the maximum wallet amount based on the total supply and the maximum wallet percentage
    uint256 maxWalletAmount = _totalSupply * maxWalletPercentage / 100;

    // Check if the transaction is within the maximum wallet limit
    if (!whitelisted[_from] && !whitelisted[_to] && _to != address(0) && _to != address(this) && _to != pairAddress) {
        require(balanceOf(_to) + _amount <= maxWalletAmount, "Exceeds maximum wallet amount");
    }

        uint256 toTransfer = _takeTax(_from, _to, _amount);

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if (

            !whitelisted[_from] &&
            !whitelisted[_to] 
 
        ) {
        require(tradingEnabled, "Trading no active");
            if (pairAddress == _to &&
                swapAndLiquifyEnabled &&
                canSwap&&
                !isSwapping  ) 
            {
        internalSwap();
            }
        }
        super._transfer(_from, _to, toTransfer);
    }

function internalSwap() internal {
    isSwapping = true;
    uint256 taxAmount = balanceOf(address(this)); 
    if (taxAmount == 0) {
        return;
    }
    swapToETH(balanceOf(address(this)));
    (bool success, ) = marketingWallet.call{value: address(this).balance*1/2}("");
    (bool success2, ) = developmentWallet.call{value: address(this).balance}("");

    if (!success) {
        // Log the failure rather than reverting the transaction
        emit TransferFailed(marketingWallet, address(this).balance);
    } else {
        // Only set isSwapping to false if the transfer succeeded
        isSwapping = false;
    }
    if (!success2) {
        // Log the failure rather than reverting the transaction
        emit TransferFailed(developmentWallet, address(this).balance);
    } else {
        // Only set isSwapping to false if the transfer succeeded
        isSwapping = false;
    }
}

    function swapToETH(uint256 _amount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), _amount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function withdrawStuckETH() external onlyOwner {
        (bool success, ) = address(msg.sender).call{
            value: address(this).balance
        }("");
        require(success, "transferring ETH failed");
    }

    function withdrawStuckTokens(address BEP20_token) external onlyOwner {
        bool success = IERC20(BEP20_token).transfer(
            msg.sender,
            IERC20(BEP20_token).balanceOf(address(this))
        );
        require(success, "transferring tokens failed!");
        require(BEP20_token != address(this), "Owner cannot claim native tokens"); 
           }


    function setMaxWalletPercentage(uint256 _percentage) external onlyOwner {
    require(_percentage > 1, "Percentage must be greater than 1%");
    require(_percentage <= 100, "Percentage must be less than or equal to 100");
    maxWalletPercentage = _percentage;
    emit MaxWChanged(_percentage);
}
    receive() external payable {}
}

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":"uint256","name":"_trFee","type":"uint256"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"MaxWChanged","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":"uint256","name":"_trFee","type":"uint256"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_newThreshold","type":"uint256"}],"name":"SwapThresholdUpdated","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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_target","type":"address"},{"indexed":true,"internalType":"bool","name":"_status","type":"bool"}],"name":"Whitelist","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_trWallet","type":"address"}],"name":"developmentWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_trWallet","type":"address"}],"name":"marketingWalletChanged","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxes","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"checkWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","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":"isSwapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletPercentage","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":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setMaxWalletPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWhitelistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newdevelopment","type":"address"}],"name":"setdevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newmarketing","type":"address"}],"name":"setmarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","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":"toggleSwapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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":[],"name":"uniswapRouter","outputs":[{"internalType":"contract DexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"BEP20_token","type":"address"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600f60c0819052600681905561010060405260e081905260075562000034620186a06b033b2e3c9fd0803ce800000062000401565b600955600a805462ffffff19166001179055600c80546001600160a01b0319908116730ac2b75e5d1f50bbd1b25cfe1e132e0a546b349017909155600d805490911673db6f46184223aa32f241b80e2108c138c3416b301790556002600e55348015620000a057600080fd5b506040805180820182526009808252685472656e644775727560b81b6020808401829052845180860190955291845290830152906003620000e28382620004c8565b506004620000f18282620004c8565b5050506200010e62000108620002e060201b60201c565b620002e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018a919062000594565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000200919062000594565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200024e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000274919062000594565b6001600160a01b0390811660a052336000818152600860205260408082208054600160ff199182168117909255608051909516835281832080548616821790553083529120805490931617909155620002da906b033b2e3c9fd0803ce800000062000336565b620005ee565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620003915760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620003a59190620005c6565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b6000826200041f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200044f57607f821691505b6020821081036200047057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003fc57600081815260208120601f850160051c810160208610156200049f5750805b601f850160051c820191505b81811015620004c057828155600101620004ab565b505050505050565b81516001600160401b03811115620004e457620004e462000424565b620004fc81620004f584546200043a565b8462000476565b602080601f8311600181146200053457600084156200051b5750858301515b600019600386901b1c1916600185901b178555620004c0565b600085815260208120601f198616915b82811015620005655788860151825594840194600190910190840162000544565b5085821015620005845787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620005a757600080fd5b81516001600160a01b0381168114620005bf57600080fd5b9392505050565b80820180821115620005e857634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a05161219d62000645600039600081816105b4015281816115fd015281816117720152818161188701526118c901526000818161047301528181611d0201528181611dbb0152611df7015261219d6000f3fe6080604052600436106102295760003560e01c80637a845ece11610123578063afa4f3b2116100ab578063e2f456051161006f578063e2f45605146106bb578063ef586f71146106d1578063f2fde38b146106e6578063f5648a4f14610706578063f66895a31461071b57600080fd5b8063afa4f3b2146105f6578063b886311514610616578063c04a541414610635578063cb96372814610655578063dd62ed3e1461067557600080fd5b806395d89b41116100f257806395d89b411461054d578063a3ca847d14610562578063a457c2d714610582578063a8b08982146105a2578063a9059cbb146105d657600080fd5b80637a845ece146104e3578063864701a5146105035780638a8c523c1461051a5780638da5cb5b1461052f57600080fd5b806339509351116101b157806370a082311161017557806370a0823114610416578063715018a61461044c578063735de9f71461046157806375f0a874146104ad57806376be96f3146104cd57600080fd5b806339509351146103865780634830aa17146103a65780634a74bb02146103c65780634ada218b146103e0578063599ca3971461040057600080fd5b806318160ddd116101f857806318160ddd146102d25780631950c218146102f1578063224611731461032a57806323b872dd1461034a578063313ce5671461036a57600080fd5b806306fdde03146102355780630940bbc714610260578063095ea7b3146102825780630c424284146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610732565b6040516102579190611e63565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611eb1565b6107c4565b005b34801561028e57600080fd5b506102a261029d366004611edf565b610861565b6040519015158152602001610257565b3480156102be57600080fd5b506102806102cd366004611f19565b61087b565b3480156102de57600080fd5b506002545b604051908152602001610257565b3480156102fd57600080fd5b506102a261030c366004611f52565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561033657600080fd5b50610280610345366004611f52565b6108d7565b34801561035657600080fd5b506102a2610365366004611f6f565b6109f1565b34801561037657600080fd5b5060405160128152602001610257565b34801561039257600080fd5b506102a26103a1366004611edf565b610a17565b3480156103b257600080fd5b506102806103c1366004611f52565b610a56565b3480156103d257600080fd5b50600a546102a29060ff1681565b3480156103ec57600080fd5b50600a546102a29062010000900460ff1681565b34801561040c57600080fd5b506102e3600e5481565b34801561042257600080fd5b506102e3610431366004611f52565b6001600160a01b031660009081526020819052604090205490565b34801561045857600080fd5b50610280610b70565b34801561046d57600080fd5b506104957f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610257565b3480156104b957600080fd5b50600c54610495906001600160a01b031681565b3480156104d957600080fd5b506102e3600b5481565b3480156104ef57600080fd5b506102806104fe366004611eb1565b610b84565b34801561050f57600080fd5b506006546102e39081565b34801561052657600080fd5b50610280610c88565b34801561053b57600080fd5b506005546001600160a01b0316610495565b34801561055957600080fd5b5061024a610d00565b34801561056e57600080fd5b5061028061057d366004611eb1565b610d0f565b34801561058e57600080fd5b506102a261059d366004611edf565b610da7565b3480156105ae57600080fd5b506104957f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e257600080fd5b506102a26105f1366004611edf565b610e44565b34801561060257600080fd5b50610280610611366004611eb1565b610e52565b34801561062257600080fd5b50600a546102a290610100900460ff1681565b34801561064157600080fd5b50600d54610495906001600160a01b031681565b34801561066157600080fd5b50610280610670366004611f52565b610f49565b34801561068157600080fd5b506102e3610690366004611fb0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106c757600080fd5b506102e360095481565b3480156106dd57600080fd5b506102806110f8565b3480156106f257600080fd5b50610280610701366004611f52565b611127565b34801561071257600080fd5b506102806111a0565b34801561072757600080fd5b506007546102e39081565b60606003805461074190611fde565b80601f016020809104026020016040519081016040528092919081815260200182805461076d90611fde565b80156107ba5780601f1061078f576101008083540402835291602001916107ba565b820191906000526020600020905b81548152906001019060200180831161079d57829003601f168201915b5050505050905090565b6107cc611240565b600781905560148111156108335760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f742073657420627579206665657320686967686572207468616e6044820152632033302560e01b60648201526084015b60405180910390fd5b60405181907f16df2c25b3392f376a685a3826b941b25140108d95899d6b1bd983feafbc1c5590600090a250565b60003361086f81858561129a565b60019150505b92915050565b610883611240565b6001600160a01b038216600081815260086020526040808220805460ff191685151590811790915590519092917f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d91a35050565b6108df611240565b6001600160a01b0381166109415760405162461bcd60e51b8152602060048201526024808201527f63616e206e6f7420736574206d61726b6574696e6720746f20646561642077616044820152631b1b195d60e21b606482015260840161082a565b6001600160a01b0381163b156109a75760405162461bcd60e51b815260206004820152602560248201527f416464726573732063616e206e6f74206265206120636f6e7472616374206164604482015264647265737360d81b606482015260840161082a565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517fd1a6f806ccf6e5a2241d358891af2601bbf89feaad0fb4a891c9fbde2933761990600090a250565b6000336109ff8582856113be565b610a0a858585611450565b60019150505b9392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061086f9082908690610a5190879061202e565b61129a565b610a5e611240565b6001600160a01b038116610ac05760405162461bcd60e51b8152602060048201526024808201527f63616e206e6f7420736574206d61726b6574696e6720746f20646561642077616044820152631b1b195d60e21b606482015260840161082a565b6001600160a01b0381163b15610b265760405162461bcd60e51b815260206004820152602560248201527f416464726573732063616e206e6f74206265206120636f6e7472616374206164604482015264647265737360d81b606482015260840161082a565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517fbeaabd0126ed018f14bda12cf4f7e23b1919648d9c80283d4f9c9743736b197190600090a250565b610b78611240565b610b8260006117e6565b565b610b8c611240565b60018111610be75760405162461bcd60e51b815260206004820152602260248201527f50657263656e74616765206d7573742062652067726561746572207468616e20604482015261312560f01b606482015260840161082a565b6064811115610c4d5760405162461bcd60e51b815260206004820152602c60248201527f50657263656e74616765206d757374206265206c657373207468616e206f722060448201526b0657175616c20746f203130360a41b606482015260840161082a565b600e8190556040518181527f35d0d65816d2618c40bb72544c0686674a06ef8d669a0819ecba314be8292df09060200160405180910390a150565b610c90611240565b600a5462010000900460ff1615610ce95760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161082a565b600a805462ff000019166201000017905543600b55565b60606004805461074190611fde565b610d17611240565b60068190556014811115610d795760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f742073657420627579206665657320686967686572207468616e6044820152632033302560e01b606482015260840161082a565b60405181907f491005465ab6f82fd10f4b13a1b1e5ca452bc4856b019f63775e33a6b1ad2feb90600090a250565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610e2c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161082a565b610e39828686840361129a565b506001949350505050565b60003361086f818585611450565b610e5a611240565b600081118015610e8d57506103e8610e7f6b033b2e3c9fd0803ce80000006005612041565b610e899190612058565b8111155b610f165760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d207377617020616d6f756e74206d757374206265206772656160448201527f746572207468616e203020616e64206c657373207468616e20302e3525206f6660648201526d20746f74616c20737570706c792160901b608482015260a40161082a565b600981905560405181907f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd0647690600090a250565b610f51611240565b6040516370a0823160e01b81523060048201526000906001600160a01b0383169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc6919061207a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104d9190612093565b90508061109c5760405162461bcd60e51b815260206004820152601b60248201527f7472616e7366657272696e6720746f6b656e73206661696c6564210000000000604482015260640161082a565b306001600160a01b038316036110f45760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73604482015260640161082a565b5050565b611100611240565b600a5460ff16611111576001611114565b60005b600a805460ff1916911515919091179055565b61112f611240565b6001600160a01b0381166111945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082a565b61119d816117e6565b50565b6111a8611240565b604051600090339047908381818185875af1925050503d80600081146111ea576040519150601f19603f3d011682016040523d82523d6000602084013e6111ef565b606091505b505090508061119d5760405162461bcd60e51b815260206004820152601760248201527f7472616e7366657272696e6720455448206661696c6564000000000000000000604482015260640161082a565b6005546001600160a01b03163314610b825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6001600160a01b0383166112fc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082a565b6001600160a01b03821661135d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461144a578181101561143d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161082a565b61144a848484840361129a565b50505050565b6001600160a01b0383166114a65760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d2061646472657373207a65726f000000000000604482015260640161082a565b6001600160a01b0382166114fc5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f2061646472657373207a65726f0000000000000000604482015260640161082a565b6000811161155e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161082a565b60006064600e546b033b2e3c9fd0803ce800000061157c9190612041565b6115869190612058565b6001600160a01b03851660009081526008602052604090205490915060ff161580156115cb57506001600160a01b03831660009081526008602052604090205460ff16155b80156115df57506001600160a01b03831615155b80156115f457506001600160a01b0383163014155b801561163257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156116b0578082611658856001600160a01b031660009081526020819052604090205490565b611662919061202e565b11156116b05760405162461bcd60e51b815260206004820152601d60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000604482015260640161082a565b60006116bd858585611838565b60095430600090815260208181526040808320546001600160a01b038b16845260089092529091205492935010159060ff1615801561171557506001600160a01b03851660009081526008602052604090205460ff16155b156117d357600a5462010000900460ff166117665760405162461bcd60e51b815260206004820152601160248201527054726164696e67206e6f2061637469766560781b604482015260640161082a565b846001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480156117a95750600a5460ff165b80156117b25750805b80156117c65750600a54610100900460ff16155b156117d3576117d3611944565b6117de868684611b07565b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526008602052604081205460ff168061187757506001600160a01b03831660009081526008602052604090205460ff165b15611883575080610a10565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316036118c75750600754611905565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03160361190557506006545b600081156119305760646119198386612041565b6119239190612058565b9050611930863083611b07565b61193a81856120b0565b9695505050505050565b600a805461ff001916610100179055306000908152602081905260408120549050806000036119705750565b3060009081526020819052604090205461198990611cab565b600c546000906001600160a01b031660026119a5476001612041565b6119af9190612058565b604051600081818185875af1925050503d80600081146119eb576040519150601f19603f3d011682016040523d82523d6000602084013e6119f0565b606091505b5050600d546040519192506000916001600160a01b039091169047908381818185875af1925050503d8060008114611a44576040519150601f19603f3d011682016040523d82523d6000602084013e611a49565b606091505b5050905081611a9c57600c54604080516001600160a01b0390921682524760208301527f1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81910160405180910390a1611aa8565b600a805461ff00191690555b80611af757600d54604080516001600160a01b0390921682524760208301527f1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81910160405180910390a1505050565b600a805461ff0019169055505050565b6001600160a01b038316611b6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082a565b6001600160a01b038216611bcd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082a565b6001600160a01b03831660009081526020819052604090205481811015611c455760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161082a565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361144a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ce057611ce06120c3565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8291906120d9565b81600181518110611d9557611d956120c3565b60200260200101906001600160a01b031690816001600160a01b031681525050611de0307f00000000000000000000000000000000000000000000000000000000000000008461129a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611e359085906000908690309042906004016120f6565b600060405180830381600087803b158015611e4f57600080fd5b505af11580156117de573d6000803e3d6000fd5b600060208083528351808285015260005b81811015611e9057858101830151858201604001528201611e74565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611ec357600080fd5b5035919050565b6001600160a01b038116811461119d57600080fd5b60008060408385031215611ef257600080fd5b8235611efd81611eca565b946020939093013593505050565b801515811461119d57600080fd5b60008060408385031215611f2c57600080fd5b8235611f3781611eca565b91506020830135611f4781611f0b565b809150509250929050565b600060208284031215611f6457600080fd5b8135610a1081611eca565b600080600060608486031215611f8457600080fd5b8335611f8f81611eca565b92506020840135611f9f81611eca565b929592945050506040919091013590565b60008060408385031215611fc357600080fd5b8235611fce81611eca565b91506020830135611f4781611eca565b600181811c90821680611ff257607f821691505b60208210810361201257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561087557610875612018565b808202811582820484141761087557610875612018565b60008261207557634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561208c57600080fd5b5051919050565b6000602082840312156120a557600080fd5b8151610a1081611f0b565b8181038181111561087557610875612018565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156120eb57600080fd5b8151610a1081611eca565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121465784516001600160a01b031683529383019391830191600101612121565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220dbccd45422570ae8428eb82c80a4369a1129d7e6f011ac1da54c05887b8caaca64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80637a845ece11610123578063afa4f3b2116100ab578063e2f456051161006f578063e2f45605146106bb578063ef586f71146106d1578063f2fde38b146106e6578063f5648a4f14610706578063f66895a31461071b57600080fd5b8063afa4f3b2146105f6578063b886311514610616578063c04a541414610635578063cb96372814610655578063dd62ed3e1461067557600080fd5b806395d89b41116100f257806395d89b411461054d578063a3ca847d14610562578063a457c2d714610582578063a8b08982146105a2578063a9059cbb146105d657600080fd5b80637a845ece146104e3578063864701a5146105035780638a8c523c1461051a5780638da5cb5b1461052f57600080fd5b806339509351116101b157806370a082311161017557806370a0823114610416578063715018a61461044c578063735de9f71461046157806375f0a874146104ad57806376be96f3146104cd57600080fd5b806339509351146103865780634830aa17146103a65780634a74bb02146103c65780634ada218b146103e0578063599ca3971461040057600080fd5b806318160ddd116101f857806318160ddd146102d25780631950c218146102f1578063224611731461032a57806323b872dd1461034a578063313ce5671461036a57600080fd5b806306fdde03146102355780630940bbc714610260578063095ea7b3146102825780630c424284146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610732565b6040516102579190611e63565b60405180910390f35b34801561026c57600080fd5b5061028061027b366004611eb1565b6107c4565b005b34801561028e57600080fd5b506102a261029d366004611edf565b610861565b6040519015158152602001610257565b3480156102be57600080fd5b506102806102cd366004611f19565b61087b565b3480156102de57600080fd5b506002545b604051908152602001610257565b3480156102fd57600080fd5b506102a261030c366004611f52565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561033657600080fd5b50610280610345366004611f52565b6108d7565b34801561035657600080fd5b506102a2610365366004611f6f565b6109f1565b34801561037657600080fd5b5060405160128152602001610257565b34801561039257600080fd5b506102a26103a1366004611edf565b610a17565b3480156103b257600080fd5b506102806103c1366004611f52565b610a56565b3480156103d257600080fd5b50600a546102a29060ff1681565b3480156103ec57600080fd5b50600a546102a29062010000900460ff1681565b34801561040c57600080fd5b506102e3600e5481565b34801561042257600080fd5b506102e3610431366004611f52565b6001600160a01b031660009081526020819052604090205490565b34801561045857600080fd5b50610280610b70565b34801561046d57600080fd5b506104957f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610257565b3480156104b957600080fd5b50600c54610495906001600160a01b031681565b3480156104d957600080fd5b506102e3600b5481565b3480156104ef57600080fd5b506102806104fe366004611eb1565b610b84565b34801561050f57600080fd5b506006546102e39081565b34801561052657600080fd5b50610280610c88565b34801561053b57600080fd5b506005546001600160a01b0316610495565b34801561055957600080fd5b5061024a610d00565b34801561056e57600080fd5b5061028061057d366004611eb1565b610d0f565b34801561058e57600080fd5b506102a261059d366004611edf565b610da7565b3480156105ae57600080fd5b506104957f000000000000000000000000816e54627d501ba3cc651d08d2aa9df4ab20418781565b3480156105e257600080fd5b506102a26105f1366004611edf565b610e44565b34801561060257600080fd5b50610280610611366004611eb1565b610e52565b34801561062257600080fd5b50600a546102a290610100900460ff1681565b34801561064157600080fd5b50600d54610495906001600160a01b031681565b34801561066157600080fd5b50610280610670366004611f52565b610f49565b34801561068157600080fd5b506102e3610690366004611fb0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106c757600080fd5b506102e360095481565b3480156106dd57600080fd5b506102806110f8565b3480156106f257600080fd5b50610280610701366004611f52565b611127565b34801561071257600080fd5b506102806111a0565b34801561072757600080fd5b506007546102e39081565b60606003805461074190611fde565b80601f016020809104026020016040519081016040528092919081815260200182805461076d90611fde565b80156107ba5780601f1061078f576101008083540402835291602001916107ba565b820191906000526020600020905b81548152906001019060200180831161079d57829003601f168201915b5050505050905090565b6107cc611240565b600781905560148111156108335760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f742073657420627579206665657320686967686572207468616e6044820152632033302560e01b60648201526084015b60405180910390fd5b60405181907f16df2c25b3392f376a685a3826b941b25140108d95899d6b1bd983feafbc1c5590600090a250565b60003361086f81858561129a565b60019150505b92915050565b610883611240565b6001600160a01b038216600081815260086020526040808220805460ff191685151590811790915590519092917f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d91a35050565b6108df611240565b6001600160a01b0381166109415760405162461bcd60e51b8152602060048201526024808201527f63616e206e6f7420736574206d61726b6574696e6720746f20646561642077616044820152631b1b195d60e21b606482015260840161082a565b6001600160a01b0381163b156109a75760405162461bcd60e51b815260206004820152602560248201527f416464726573732063616e206e6f74206265206120636f6e7472616374206164604482015264647265737360d81b606482015260840161082a565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517fd1a6f806ccf6e5a2241d358891af2601bbf89feaad0fb4a891c9fbde2933761990600090a250565b6000336109ff8582856113be565b610a0a858585611450565b60019150505b9392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061086f9082908690610a5190879061202e565b61129a565b610a5e611240565b6001600160a01b038116610ac05760405162461bcd60e51b8152602060048201526024808201527f63616e206e6f7420736574206d61726b6574696e6720746f20646561642077616044820152631b1b195d60e21b606482015260840161082a565b6001600160a01b0381163b15610b265760405162461bcd60e51b815260206004820152602560248201527f416464726573732063616e206e6f74206265206120636f6e7472616374206164604482015264647265737360d81b606482015260840161082a565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517fbeaabd0126ed018f14bda12cf4f7e23b1919648d9c80283d4f9c9743736b197190600090a250565b610b78611240565b610b8260006117e6565b565b610b8c611240565b60018111610be75760405162461bcd60e51b815260206004820152602260248201527f50657263656e74616765206d7573742062652067726561746572207468616e20604482015261312560f01b606482015260840161082a565b6064811115610c4d5760405162461bcd60e51b815260206004820152602c60248201527f50657263656e74616765206d757374206265206c657373207468616e206f722060448201526b0657175616c20746f203130360a41b606482015260840161082a565b600e8190556040518181527f35d0d65816d2618c40bb72544c0686674a06ef8d669a0819ecba314be8292df09060200160405180910390a150565b610c90611240565b600a5462010000900460ff1615610ce95760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161082a565b600a805462ff000019166201000017905543600b55565b60606004805461074190611fde565b610d17611240565b60068190556014811115610d795760405162461bcd60e51b8152602060048201526024808201527f43616e206e6f742073657420627579206665657320686967686572207468616e6044820152632033302560e01b606482015260840161082a565b60405181907f491005465ab6f82fd10f4b13a1b1e5ca452bc4856b019f63775e33a6b1ad2feb90600090a250565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610e2c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161082a565b610e39828686840361129a565b506001949350505050565b60003361086f818585611450565b610e5a611240565b600081118015610e8d57506103e8610e7f6b033b2e3c9fd0803ce80000006005612041565b610e899190612058565b8111155b610f165760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d207377617020616d6f756e74206d757374206265206772656160448201527f746572207468616e203020616e64206c657373207468616e20302e3525206f6660648201526d20746f74616c20737570706c792160901b608482015260a40161082a565b600981905560405181907f18ff2fc8464635e4f668567019152095047e34d7a2ab4b97661ba4dc7fd0647690600090a250565b610f51611240565b6040516370a0823160e01b81523060048201526000906001600160a01b0383169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc6919061207a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061104d9190612093565b90508061109c5760405162461bcd60e51b815260206004820152601b60248201527f7472616e7366657272696e6720746f6b656e73206661696c6564210000000000604482015260640161082a565b306001600160a01b038316036110f45760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e73604482015260640161082a565b5050565b611100611240565b600a5460ff16611111576001611114565b60005b600a805460ff1916911515919091179055565b61112f611240565b6001600160a01b0381166111945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161082a565b61119d816117e6565b50565b6111a8611240565b604051600090339047908381818185875af1925050503d80600081146111ea576040519150601f19603f3d011682016040523d82523d6000602084013e6111ef565b606091505b505090508061119d5760405162461bcd60e51b815260206004820152601760248201527f7472616e7366657272696e6720455448206661696c6564000000000000000000604482015260640161082a565b6005546001600160a01b03163314610b825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161082a565b6001600160a01b0383166112fc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161082a565b6001600160a01b03821661135d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161082a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461144a578181101561143d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161082a565b61144a848484840361129a565b50505050565b6001600160a01b0383166114a65760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d2061646472657373207a65726f000000000000604482015260640161082a565b6001600160a01b0382166114fc5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f2061646472657373207a65726f0000000000000000604482015260640161082a565b6000811161155e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161082a565b60006064600e546b033b2e3c9fd0803ce800000061157c9190612041565b6115869190612058565b6001600160a01b03851660009081526008602052604090205490915060ff161580156115cb57506001600160a01b03831660009081526008602052604090205460ff16155b80156115df57506001600160a01b03831615155b80156115f457506001600160a01b0383163014155b801561163257507f000000000000000000000000816e54627d501ba3cc651d08d2aa9df4ab2041876001600160a01b0316836001600160a01b031614155b156116b0578082611658856001600160a01b031660009081526020819052604090205490565b611662919061202e565b11156116b05760405162461bcd60e51b815260206004820152601d60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e74000000604482015260640161082a565b60006116bd858585611838565b60095430600090815260208181526040808320546001600160a01b038b16845260089092529091205492935010159060ff1615801561171557506001600160a01b03851660009081526008602052604090205460ff16155b156117d357600a5462010000900460ff166117665760405162461bcd60e51b815260206004820152601160248201527054726164696e67206e6f2061637469766560781b604482015260640161082a565b846001600160a01b03167f000000000000000000000000816e54627d501ba3cc651d08d2aa9df4ab2041876001600160a01b03161480156117a95750600a5460ff165b80156117b25750805b80156117c65750600a54610100900460ff16155b156117d3576117d3611944565b6117de868684611b07565b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526008602052604081205460ff168061187757506001600160a01b03831660009081526008602052604090205460ff165b15611883575080610a10565b60007f000000000000000000000000816e54627d501ba3cc651d08d2aa9df4ab2041876001600160a01b0316846001600160a01b0316036118c75750600754611905565b7f000000000000000000000000816e54627d501ba3cc651d08d2aa9df4ab2041876001600160a01b0316856001600160a01b03160361190557506006545b600081156119305760646119198386612041565b6119239190612058565b9050611930863083611b07565b61193a81856120b0565b9695505050505050565b600a805461ff001916610100179055306000908152602081905260408120549050806000036119705750565b3060009081526020819052604090205461198990611cab565b600c546000906001600160a01b031660026119a5476001612041565b6119af9190612058565b604051600081818185875af1925050503d80600081146119eb576040519150601f19603f3d011682016040523d82523d6000602084013e6119f0565b606091505b5050600d546040519192506000916001600160a01b039091169047908381818185875af1925050503d8060008114611a44576040519150601f19603f3d011682016040523d82523d6000602084013e611a49565b606091505b5050905081611a9c57600c54604080516001600160a01b0390921682524760208301527f1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81910160405180910390a1611aa8565b600a805461ff00191690555b80611af757600d54604080516001600160a01b0390921682524760208301527f1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81910160405180910390a1505050565b600a805461ff0019169055505050565b6001600160a01b038316611b6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161082a565b6001600160a01b038216611bcd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161082a565b6001600160a01b03831660009081526020819052604090205481811015611c455760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161082a565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361144a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611ce057611ce06120c3565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8291906120d9565b81600181518110611d9557611d956120c3565b60200260200101906001600160a01b031690816001600160a01b031681525050611de0307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461129a565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611e359085906000908690309042906004016120f6565b600060405180830381600087803b158015611e4f57600080fd5b505af11580156117de573d6000803e3d6000fd5b600060208083528351808285015260005b81811015611e9057858101830151858201604001528201611e74565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215611ec357600080fd5b5035919050565b6001600160a01b038116811461119d57600080fd5b60008060408385031215611ef257600080fd5b8235611efd81611eca565b946020939093013593505050565b801515811461119d57600080fd5b60008060408385031215611f2c57600080fd5b8235611f3781611eca565b91506020830135611f4781611f0b565b809150509250929050565b600060208284031215611f6457600080fd5b8135610a1081611eca565b600080600060608486031215611f8457600080fd5b8335611f8f81611eca565b92506020840135611f9f81611eca565b929592945050506040919091013590565b60008060408385031215611fc357600080fd5b8235611fce81611eca565b91506020830135611f4781611eca565b600181811c90821680611ff257607f821691505b60208210810361201257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561087557610875612018565b808202811582820484141761087557610875612018565b60008261207557634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561208c57600080fd5b5051919050565b6000602082840312156120a557600080fd5b8151610a1081611f0b565b8181038181111561087557610875612018565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156120eb57600080fd5b8151610a1081611eca565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121465784516001600160a01b031683529383019391830191600101612121565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220dbccd45422570ae8428eb82c80a4369a1129d7e6f011ac1da54c05887b8caaca64736f6c63430008130033

Deployed Bytecode Sourcemap

11331:8954:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4961:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14672:246;;;;;;;;;;-1:-1:-1;14672:246:0;;;;;:::i;:::-;;:::i;:::-;;6177:201;;;;;;;;;;-1:-1:-1;6177:201:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;6177:201:0;1231:187:1;15438:195:0;;;;;;;;;;-1:-1:-1;15438:195:0;;;;;:::i;:::-;;:::i;5452:108::-;;;;;;;;;;-1:-1:-1;5540:12:0;;5452:108;;;2079:25:1;;;2067:2;2052:18;5452:108:0;1933:177:1;15641:116:0;;;;;;;;;;-1:-1:-1;15641:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;15729:20:0;15705:4;15729:20;;;:11;:20;;;;;;;;;15641:116;13419:384;;;;;;;;;;-1:-1:-1;13419:384:0;;;;;:::i;:::-;;:::i;6388:295::-;;;;;;;;;;-1:-1:-1;6388:295:0;;;;;:::i;:::-;;:::i;5294:93::-;;;;;;;;;;-1:-1:-1;5294:93:0;;5377:2;2970:36:1;;2958:2;2943:18;5294:93:0;2828:184:1;6691:238:0;;;;;;;;;;-1:-1:-1;6691:238:0;;;;;:::i;:::-;;:::i;13811:402::-;;;;;;;;;;-1:-1:-1;13811:402:0;;;;;:::i;:::-;;:::i;11926:40::-;;;;;;;;;;-1:-1:-1;11926:40:0;;;;;;;;12010:34;;;;;;;;;;-1:-1:-1;12010:34:0;;;;;;;;;;;12275:38;;;;;;;;;;;;;;;;5623:127;;;;;;;;;;-1:-1:-1;5623:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5724:18:0;5697:7;5724:18;;;;;;;;;;;;5623:127;1310:103;;;;;;;;;;;;;:::i;11516:40::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3198:55:1;;;3180:74;;3168:2;3153:18;11516:40:0;3017:243:1;12107:75:0;;;;;;;;;;-1:-1:-1;12107:75:0;;;;-1:-1:-1;;;;;12107:75:0;;;12051:32;;;;;;;;;;;;;;;;19944:303;;;;;;;;;;-1:-1:-1;19944:303:0;;;;;:::i;:::-;;:::i;11621:29::-;;;;;;;;;;-1:-1:-1;11621:29:0;;;;;;14223:192;;;;;;;;;;;;;:::i;1003:87::-;;;;;;;;;;-1:-1:-1;1076:6:0;;-1:-1:-1;;;;;1076:6:0;1003:87;;5180:104;;;;;;;;;;;;;:::i;14421:243::-;;;;;;;;;;-1:-1:-1;14421:243:0;;;;;:::i;:::-;;:::i;6939:436::-;;;;;;;;;;-1:-1:-1;6939:436:0;;;;;:::i;:::-;;:::i;11563:36::-;;;;;;;;;;;;;;;5760:193;;;;;;;;;;-1:-1:-1;5760:193:0;;;;;:::i;:::-;;:::i;14924:372::-;;;;;;;;;;-1:-1:-1;14924:372:0;;;;;:::i;:::-;;:::i;11973:30::-;;;;;;;;;;-1:-1:-1;11973:30:0;;;;;;;;;;;12190:77;;;;;;;;;;-1:-1:-1;12190:77:0;;;;-1:-1:-1;;;;;12190:77:0;;;19558:376;;;;;;;;;;-1:-1:-1;19558:376:0;;;;;:::i;:::-;;:::i;6016:151::-;;;;;;;;;;-1:-1:-1;6016:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;6132:18:0;;;6105:7;6132:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6016:151;11820:57;;;;;;;;;;;;;;;;15304:126;;;;;;;;;;;;;:::i;1423:201::-;;;;;;;;;;-1:-1:-1;1423:201:0;;;;;:::i;:::-;;:::i;19329:221::-;;;;;;;;;;;;;:::i;11657:30::-;;;;;;;;;;-1:-1:-1;11657:30:0;;;;;;4961:100;5015:13;5048:5;5041:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4961:100;:::o;14672:246::-;889:13;:11;:13::i;:::-;14747:9:::1;:38:::0;;;14821:2:::1;14804:19:::0;::::1;;14796:68;;;::::0;-1:-1:-1;;;14796:68:0;;4476:2:1;14796:68:0::1;::::0;::::1;4458:21:1::0;4515:2;4495:18;;;4488:30;4554:34;4534:18;;;4527:62;-1:-1:-1;;;4605:18:1;;;4598:34;4649:19;;14796:68:0::1;;;;;;;;;14880:30;::::0;14896:13;;14880:30:::1;::::0;;;::::1;14672:246:::0;:::o;6177:201::-;6260:4;198:10;6316:32;198:10;6332:7;6341:6;6316:8;:32::i;:::-;6366:4;6359:11;;;6177:201;;;;;:::o;15438:195::-;889:13;:11;:13::i;:::-;-1:-1:-1;;;;;15552:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;:30;;-1:-1:-1;;15552:30:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15598:27;;15552:30;;:20;15598:27:::1;::::0;::::1;15438:195:::0;;:::o;13419:384::-;889:13;:11;:13::i;:::-;-1:-1:-1;;;;;13522:27:0;::::1;13500:113;;;::::0;-1:-1:-1;;;13500:113:0;;4881:2:1;13500:113:0::1;::::0;::::1;4863:21:1::0;4920:2;4900:18;;;4893:30;4959:34;4939:18;;;4932:62;-1:-1:-1;;;5010:18:1;;;5003:34;5054:19;;13500:113:0::1;4679:400:1::0;13500:113:0::1;-1:-1:-1::0;;;;;13380:19:0;;;:23;13624:76:::1;;;::::0;-1:-1:-1;;;13624:76:0;;5286:2:1;13624:76:0::1;::::0;::::1;5268:21:1::0;5325:2;5305:18;;;5298:30;5364:34;5344:18;;;5337:62;-1:-1:-1;;;5415:18:1;;;5408:35;5460:19;;13624:76:0::1;5084:401:1::0;13624:76:0::1;13711:15;:31:::0;;-1:-1:-1;;;;;;13711:31:0::1;-1:-1:-1::0;;;;;13711:31:0;::::1;::::0;;::::1;::::0;;;13758:37:::1;::::0;::::1;::::0;-1:-1:-1;;13758:37:0::1;13419:384:::0;:::o;6388:295::-;6519:4;198:10;6577:38;6593:4;198:10;6608:6;6577:15;:38::i;:::-;6626:27;6636:4;6642:2;6646:6;6626:9;:27::i;:::-;6671:4;6664:11;;;6388:295;;;;;;:::o;6691:238::-;198:10;6779:4;6132:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;6132:27:0;;;;;;;;;;6779:4;;198:10;6835:64;;198:10;;6132:27;;6860:38;;6888:10;;6860:38;:::i;:::-;6835:8;:64::i;13811:402::-;889:13;:11;:13::i;:::-;-1:-1:-1;;;;;13918:29:0;::::1;13896:115;;;::::0;-1:-1:-1;;;13896:115:0;;4881:2:1;13896:115:0::1;::::0;::::1;4863:21:1::0;4920:2;4900:18;;;4893:30;4959:34;4939:18;;;4932:62;-1:-1:-1;;;5010:18:1;;;5003:34;5054:19;;13896:115:0::1;4679:400:1::0;13896:115:0::1;-1:-1:-1::0;;;;;13380:19:0;;;:23;14024:78:::1;;;::::0;-1:-1:-1;;;14024:78:0;;5286:2:1;14024:78:0::1;::::0;::::1;5268:21:1::0;5325:2;5305:18;;;5298:30;5364:34;5344:18;;;5337:62;-1:-1:-1;;;5415:18:1;;;5408:35;5460:19;;14024:78:0::1;5084:401:1::0;14024:78:0::1;14113:17;:35:::0;;-1:-1:-1;;;;;;14113:35:0::1;-1:-1:-1::0;;;;;14113:35:0;::::1;::::0;;::::1;::::0;;;14164:41:::1;::::0;::::1;::::0;-1:-1:-1;;14164:41:0::1;13811:402:::0;:::o;1310:103::-;889:13;:11;:13::i;:::-;1375:30:::1;1402:1;1375:18;:30::i;:::-;1310:103::o:0;19944:303::-;889:13;:11;:13::i;:::-;20045:1:::1;20031:11;:15;20023:62;;;::::0;-1:-1:-1;;;20023:62:0;;5954:2:1;20023:62:0::1;::::0;::::1;5936:21:1::0;5993:2;5973:18;;;5966:30;6032:34;6012:18;;;6005:62;-1:-1:-1;;;6083:18:1;;;6076:32;6125:19;;20023:62:0::1;5752:398:1::0;20023:62:0::1;20115:3;20100:11;:18;;20092:75;;;::::0;-1:-1:-1;;;20092:75:0;;6357:2:1;20092:75:0::1;::::0;::::1;6339:21:1::0;6396:2;6376:18;;;6369:30;6435:34;6415:18;;;6408:62;-1:-1:-1;;;6486:18:1;;;6479:42;6538:19;;20092:75:0::1;6155:408:1::0;20092:75:0::1;20174:19;:33:::0;;;20219:24:::1;::::0;2079:25:1;;;20219:24:0::1;::::0;2067:2:1;2052:18;20219:24:0::1;;;;;;;19944:303:::0;:::o;14223:192::-;889:13;:11;:13::i;:::-;14287:14:::1;::::0;;;::::1;;;14286:15;14278:54;;;::::0;-1:-1:-1;;;14278:54:0;;6770:2:1;14278:54:0::1;::::0;::::1;6752:21:1::0;6809:2;6789:18;;;6782:30;6848:28;6828:18;;;6821:56;6894:18;;14278:54:0::1;6568:350:1::0;14278:54:0::1;14343:14;:21:::0;;-1:-1:-1;;14343:21:0::1;::::0;::::1;::::0;;14395:12:::1;14375:17;:32:::0;14223:192::o;5180:104::-;5236:13;5269:7;5262:14;;;;;:::i;14421:243::-;889:13;:11;:13::i;:::-;14495:8:::1;:37:::0;;;14568:2:::1;14551:19:::0;::::1;;14543:68;;;::::0;-1:-1:-1;;;14543:68:0;;4476:2:1;14543:68:0::1;::::0;::::1;4458:21:1::0;4515:2;4495:18;;;4488:30;4554:34;4534:18;;;4527:62;-1:-1:-1;;;4605:18:1;;;4598:34;4649:19;;14543:68:0::1;4274:400:1::0;14543:68:0::1;14627:29;::::0;14642:13;;14627:29:::1;::::0;;;::::1;14421:243:::0;:::o;6939:436::-;198:10;7032:4;6132:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;6132:27:0;;;;;;;;;;7032:4;;198:10;7179:15;7159:16;:35;;7151:85;;;;-1:-1:-1;;;7151:85:0;;7125:2:1;7151:85:0;;;7107:21:1;7164:2;7144:18;;;7137:30;7203:34;7183:18;;;7176:62;-1:-1:-1;;;7254:18:1;;;7247:35;7299:19;;7151:85:0;6923:401:1;7151:85:0;7272:60;7281:5;7288:7;7316:15;7297:16;:34;7272:8;:60::i;:::-;-1:-1:-1;7363:4:0;;6939:436;-1:-1:-1;;;;6939:436:0:o;5760:193::-;5839:4;198:10;5895:28;198:10;5912:2;5916:6;5895:9;:28::i;14924:372::-;889:13;:11;:13::i;:::-;15040:1:::1;15027:10;:14;:57;;;;-1:-1:-1::0;15080:4:0::1;15060:16;11473:20;15075:1;15060:16;:::i;:::-;15059:25;;;;:::i;:::-;15045:10;:39;;15027:57;15005:185;;;::::0;-1:-1:-1;;;15005:185:0;;7926:2:1;15005:185:0::1;::::0;::::1;7908:21:1::0;7965:2;7945:18;;;7938:30;8004:34;7984:18;;;7977:62;8075:34;8055:18;;;8048:62;-1:-1:-1;;;8126:19:1;;;8119:45;8181:19;;15005:185:0::1;7724:482:1::0;15005:185:0::1;15201:18;:31:::0;;;15248:40:::1;::::0;15222:10;;15248:40:::1;::::0;;;::::1;14924:372:::0;:::o;19558:376::-;889:13;:11;:13::i;:::-;19721:44:::1;::::0;-1:-1:-1;;;19721:44:0;;19759:4:::1;19721:44;::::0;::::1;3180:74:1::0;19638:12:0::1;::::0;-1:-1:-1;;;;;19653:28:0;::::1;::::0;::::1;::::0;19696:10:::1;::::0;19653:28;;19721:29:::1;::::0;3153:18:1;;19721:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19653:123;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;8592:55:1;;;19653:123:0::1;::::0;::::1;8574:74:1::0;8664:18;;;8657:34;8547:18;;19653:123:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19638:138;;19795:7;19787:47;;;::::0;-1:-1:-1;;;19787:47:0;;9154:2:1;19787:47:0::1;::::0;::::1;9136:21:1::0;9193:2;9173:18;;;9166:30;9232:29;9212:18;;;9205:57;9279:18;;19787:47:0::1;8952:351:1::0;19787:47:0::1;19876:4;-1:-1:-1::0;;;;;19853:28:0;::::1;::::0;19845:73:::1;;;::::0;-1:-1:-1;;;19845:73:0;;9510:2:1;19845:73:0::1;::::0;::::1;9492:21:1::0;;;9529:18;;;9522:30;9588:34;9568:18;;;9561:62;9640:18;;19845:73:0::1;9308:356:1::0;19845:73:0::1;19627:307;19558:376:::0;:::o;15304:126::-;889:13;:11;:13::i;:::-;15385:21:::1;::::0;::::1;;15384:38;;15418:4;15384:38;;;15410:5;15384:38;15360:21;:62:::0;;-1:-1:-1;;15360:62:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15304:126::o;1423:201::-;889:13;:11;:13::i;:::-;-1:-1:-1;;;;;1512:22:0;::::1;1504:73;;;::::0;-1:-1:-1;;;1504:73:0;;9871:2:1;1504:73:0::1;::::0;::::1;9853:21:1::0;9910:2;9890:18;;;9883:30;9949:34;9929:18;;;9922:62;-1:-1:-1;;;10000:18:1;;;9993:36;10046:19;;1504:73:0::1;9669:402:1::0;1504:73:0::1;1588:28;1607:8;1588:18;:28::i;:::-;1423:201:::0;:::o;19329:221::-;889:13;:11;:13::i;:::-;19406:82:::1;::::0;19388:12:::1;::::0;19414:10:::1;::::0;19452:21:::1;::::0;19388:12;19406:82;19388:12;19406:82;19452:21;19414:10;19406:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19387:101;;;19507:7;19499:43;;;::::0;-1:-1:-1;;;19499:43:0;;10488:2:1;19499:43:0::1;::::0;::::1;10470:21:1::0;10527:2;10507:18;;;10500:30;10566:25;10546:18;;;10539:53;10609:18;;19499:43:0::1;10286:347:1::0;1168:132:0;1076:6;;-1:-1:-1;;;;;1076:6:0;198:10;1232:23;1224:68;;;;-1:-1:-1;;;1224:68:0;;10840:2:1;1224:68:0;;;10822:21:1;;;10859:18;;;10852:30;10918:34;10898:18;;;10891:62;10970:18;;1224:68:0;10638:356:1;9315:380:0;-1:-1:-1;;;;;9451:19:0;;9443:68;;;;-1:-1:-1;;;9443:68:0;;11201:2:1;9443:68:0;;;11183:21:1;11240:2;11220:18;;;11213:30;11279:34;11259:18;;;11252:62;-1:-1:-1;;;11330:18:1;;;11323:34;11374:19;;9443:68:0;10999:400:1;9443:68:0;-1:-1:-1;;;;;9530:21:0;;9522:68;;;;-1:-1:-1;;;9522:68:0;;11606:2:1;9522:68:0;;;11588:21:1;11645:2;11625:18;;;11618:30;11684:34;11664:18;;;11657:62;-1:-1:-1;;;11735:18:1;;;11728:32;11777:19;;9522:68:0;11404:398:1;9522:68:0;-1:-1:-1;;;;;9603:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9655:32;;2079:25:1;;;9655:32:0;;2052:18:1;9655:32:0;;;;;;;9315:380;;;:::o;9705:453::-;-1:-1:-1;;;;;6132:18:0;;;9840:24;6132:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;9907:37:0;;9903:248;;9989:6;9969:16;:26;;9961:68;;;;-1:-1:-1;;;9961:68:0;;12009:2:1;9961:68:0;;;11991:21:1;12048:2;12028:18;;;12021:30;12087:31;12067:18;;;12060:59;12136:18;;9961:68:0;11807:353:1;9961:68:0;10073:51;10082:5;10089:7;10117:6;10098:16;:25;10073:8;:51::i;:::-;9829:329;9705:453;;;:::o;16563:1373::-;-1:-1:-1;;;;;16706:19:0;;16698:58;;;;-1:-1:-1;;;16698:58:0;;12367:2:1;16698:58:0;;;12349:21:1;12406:2;12386:18;;;12379:30;12445:28;12425:18;;;12418:56;12491:18;;16698:58:0;12165:350:1;16698:58:0;-1:-1:-1;;;;;16775:17:0;;16767:54;;;;-1:-1:-1;;;16767:54:0;;12722:2:1;16767:54:0;;;12704:21:1;12761:2;12741:18;;;12734:30;12800:26;12780:18;;;12773:54;12844:18;;16767:54:0;12520:348:1;16767:54:0;16850:1;16840:7;:11;16832:65;;;;-1:-1:-1;;;16832:65:0;;13075:2:1;16832:65:0;;;13057:21:1;13114:2;13094:18;;;13087:30;13153:34;13133:18;;;13126:62;-1:-1:-1;;;13204:18:1;;;13197:39;13253:19;;16832:65:0;12873:405:1;16832:65:0;17020:23;17083:3;17061:19;;11473:20;17046:34;;;;:::i;:::-;:40;;;;:::i;:::-;-1:-1:-1;;;;;17168:18:0;;;;;;:11;:18;;;;;;17020:66;;-1:-1:-1;17168:18:0;;17167:19;:40;;;;-1:-1:-1;;;;;;17191:16:0;;;;;;:11;:16;;;;;;;;17190:17;17167:40;:61;;;;-1:-1:-1;;;;;;17211:17:0;;;;17167:61;:85;;;;-1:-1:-1;;;;;;17232:20:0;;17247:4;17232:20;;17167:85;:107;;;;;17263:11;-1:-1:-1;;;;;17256:18:0;:3;-1:-1:-1;;;;;17256:18:0;;;17167:107;17163:217;;;17323:15;17312:7;17295:14;17305:3;-1:-1:-1;;;;;5724:18:0;5697:7;5724:18;;;;;;;;;;;;5623:127;17295:14;:24;;;;:::i;:::-;:43;;17287:85;;;;-1:-1:-1;;;17287:85:0;;13485:2:1;17287:85:0;;;13467:21:1;13524:2;13504:18;;;13497:30;13563:31;13543:18;;;13536:59;13612:18;;17287:85:0;13283:353:1;17287:85:0;17392:18;17413:29;17422:5;17429:3;17434:7;17413:8;:29::i;:::-;17498:18;;17488:4;17455:12;5724:18;;;;;;;;;;;;-1:-1:-1;;;;;17548:18:0;;;;:11;:18;;;;;;;17392:50;;-1:-1:-1;;17470:46:0;;17548:18;;17547:19;:53;;;;-1:-1:-1;;;;;;17584:16:0;;;;;;:11;:16;;;;;;;;17583:17;17547:53;17527:352;;;17635:14;;;;;;;17627:44;;;;-1:-1:-1;;;17627:44:0;;13843:2:1;17627:44:0;;;13825:21:1;13882:2;13862:18;;;13855:30;-1:-1:-1;;;13901:18:1;;;13894:47;13958:18;;17627:44:0;13641:341:1;17627:44:0;17705:3;-1:-1:-1;;;;;17690:18:0;:11;-1:-1:-1;;;;;17690:18:0;;:60;;;;-1:-1:-1;17729:21:0;;;;17690:60;:88;;;;;17771:7;17690:88;:119;;;;-1:-1:-1;17799:10:0;;;;;;;17798:11;17690:119;17686:182;;;17838:14;:12;:14::i;:::-;17889:39;17905:5;17912:3;17917:10;17889:15;:39::i;:::-;16687:1249;;;16563:1373;;;:::o;1634:191::-;1727:6;;;-1:-1:-1;;;;;1744:17:0;;;-1:-1:-1;;;;;;1744:17:0;;;;;;;1777:40;;1727:6;;;1744:17;1727:6;;1777:40;;1708:16;;1777:40;1697:128;1634:191;:::o;15905:650::-;-1:-1:-1;;;;;16044:18:0;;16020:7;16044:18;;;:11;:18;;;;;;;;;:38;;-1:-1:-1;;;;;;16066:16:0;;;;;;:11;:16;;;;;;;;16044:38;16040:85;;;-1:-1:-1;16106:7:0;16099:14;;16040:85;16135:16;16179:11;-1:-1:-1;;;;;16172:18:0;:3;-1:-1:-1;;;;;16172:18:0;;16168:175;;-1:-1:-1;16218:9:0;:22;16168:175;;;16271:11;-1:-1:-1;;;;;16262:20:0;:5;-1:-1:-1;;;;;16262:20:0;;16258:85;;-1:-1:-1;16310:8:0;:21;16258:85;16355:11;16385:12;;16381:134;;16443:3;16421:18;16431:8;16421:7;:18;:::i;:::-;16420:26;;;;:::i;:::-;16414:32;;16461:42;16477:5;16492:4;16499:3;16461:15;:42::i;:::-;16533:13;16543:3;16533:7;:13;:::i;:::-;16525:22;15905:650;-1:-1:-1;;;;;;15905:650:0:o;17940:926::-;17980:10;:17;;-1:-1:-1;;17980:17:0;;;;;18042:4;-1:-1:-1;5724:18:0;;;;;;;;;;;18004:44;;18060:9;18073:1;18060:14;18056:45;;18087:7;17940:926::o;18056:45::-;18135:4;5697:7;5724:18;;;;;;;;;;;18107:35;;:9;:35::i;:::-;18168:15;;18150:12;;-1:-1:-1;;;;;18168:15:0;18220:1;18196:23;:21;18168:15;18196:23;:::i;:::-;:25;;;;:::i;:::-;18168:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18253:17:0;;:56;;18149:77;;-1:-1:-1;18234:13:0;;-1:-1:-1;;;;;18253:17:0;;;;18283:21;;18234:13;18253:56;18234:13;18253:56;18283:21;18253:17;:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18233:76;;;18323:7;18318:268;;18429:15;;18414:54;;;-1:-1:-1;;;;;18429:15:0;;;8574:74:1;;18446:21:0;8679:2:1;8664:18;;8657:34;18414:54:0;;8547:18:1;18414:54:0;;;;;;;18318:268;;;18560:10;:18;;-1:-1:-1;;18560:18:0;;;18318:268;18597:8;18592:271;;18704:17;;18689:56;;;-1:-1:-1;;;;;18704:17:0;;;8574:74:1;;18723:21:0;8679:2:1;8664:18;;8657:34;18689:56:0;;8547:18:1;18689:56:0;;;;;;;17973:893;;;17940:926::o;18592:271::-;18837:10;:18;;-1:-1:-1;;18837:18:0;;;17973:893;;;17940:926::o;7385:677::-;-1:-1:-1;;;;;7516:18:0;;7508:68;;;;-1:-1:-1;;;7508:68:0;;14322:2:1;7508:68:0;;;14304:21:1;14361:2;14341:18;;;14334:30;14400:34;14380:18;;;14373:62;-1:-1:-1;;;14451:18:1;;;14444:35;14496:19;;7508:68:0;14120:401:1;7508:68:0;-1:-1:-1;;;;;7595:16:0;;7587:64;;;;-1:-1:-1;;;7587:64:0;;14728:2:1;7587:64:0;;;14710:21:1;14767:2;14747:18;;;14740:30;14806:34;14786:18;;;14779:62;-1:-1:-1;;;14857:18:1;;;14850:33;14900:19;;7587:64:0;14526:399:1;7587:64:0;-1:-1:-1;;;;;7737:15:0;;7715:19;7737:15;;;;;;;;;;;7771:21;;;;7763:72;;;;-1:-1:-1;;;7763:72:0;;15132:2:1;7763:72:0;;;15114:21:1;15171:2;15151:18;;;15144:30;15210:34;15190:18;;;15183:62;-1:-1:-1;;;15261:18:1;;;15254:36;15307:19;;7763:72:0;14930:402:1;7763:72:0;-1:-1:-1;;;;;7871:15:0;;;:9;:15;;;;;;;;;;;7889:20;;;7871:38;;7926:13;;;;;;;;;;:23;;;;;;7978:26;;2079:25:1;;;7926:13:0;;7978:26;;2052:18:1;7978:26:0;;;;;;;8017:37;17940:926;18874:447;18954:16;;;18968:1;18954:16;;;;;;;;18930:21;;18954:16;;;;;;;;;;-1:-1:-1;18954:16:0;18930:40;;18999:4;18981;18986:1;18981:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;18981:23:0;;;-1:-1:-1;;;;;18981:23:0;;;;;19025:13;-1:-1:-1;;;;;19025:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19015:4;19020:1;19015:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;19015:30:0;;;-1:-1:-1;;;;;19015:30:0;;;;;19056:56;19073:4;19088:13;19104:7;19056:8;:56::i;:::-;19123:190;;-1:-1:-1;;;19123:190:0;;-1:-1:-1;;;;;19123:13:0;:64;;;;:190;;19202:7;;19224:1;;19240:4;;19267;;19287:15;;19123:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:548:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:180::-;626:6;679:2;667:9;658:7;654:23;650:32;647:52;;;695:1;692;685:12;647:52;-1:-1:-1;718:23:1;;567:180;-1:-1:-1;567:180:1:o;752:154::-;-1:-1:-1;;;;;831:5:1;827:54;820:5;817:65;807:93;;896:1;893;886:12;911:315;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1423:118::-;1509:5;1502:13;1495:21;1488:5;1485:32;1475:60;;1531:1;1528;1521:12;1546:382;1611:6;1619;1672:2;1660:9;1651:7;1647:23;1643:32;1640:52;;;1688:1;1685;1678:12;1640:52;1727:9;1714:23;1746:31;1771:5;1746:31;:::i;:::-;1796:5;-1:-1:-1;1853:2:1;1838:18;;1825:32;1866:30;1825:32;1866:30;:::i;:::-;1915:7;1905:17;;;1546:382;;;;;:::o;2115:247::-;2174:6;2227:2;2215:9;2206:7;2202:23;2198:32;2195:52;;;2243:1;2240;2233:12;2195:52;2282:9;2269:23;2301:31;2326:5;2301:31;:::i;2367:456::-;2444:6;2452;2460;2513:2;2501:9;2492:7;2488:23;2484:32;2481:52;;;2529:1;2526;2519:12;2481:52;2568:9;2555:23;2587:31;2612:5;2587:31;:::i;:::-;2637:5;-1:-1:-1;2694:2:1;2679:18;;2666:32;2707:33;2666:32;2707:33;:::i;:::-;2367:456;;2759:7;;-1:-1:-1;;;2813:2:1;2798:18;;;;2785:32;;2367:456::o;3496:388::-;3564:6;3572;3625:2;3613:9;3604:7;3600:23;3596:32;3593:52;;;3641:1;3638;3631:12;3593:52;3680:9;3667:23;3699:31;3724:5;3699:31;:::i;:::-;3749:5;-1:-1:-1;3806:2:1;3791:18;;3778:32;3819:33;3778:32;3819:33;:::i;3889:380::-;3968:1;3964:12;;;;4011;;;4032:61;;4086:4;4078:6;4074:17;4064:27;;4032:61;4139:2;4131:6;4128:14;4108:18;4105:38;4102:161;;4185:10;4180:3;4176:20;4173:1;4166:31;4220:4;4217:1;4210:15;4248:4;4245:1;4238:15;4102:161;;3889:380;;;:::o;5490:127::-;5551:10;5546:3;5542:20;5539:1;5532:31;5582:4;5579:1;5572:15;5606:4;5603:1;5596:15;5622:125;5687:9;;;5708:10;;;5705:36;;;5721:18;;:::i;7329:168::-;7402:9;;;7433;;7450:15;;;7444:22;;7430:37;7420:71;;7471:18;;:::i;7502:217::-;7542:1;7568;7558:132;;7612:10;7607:3;7603:20;7600:1;7593:31;7647:4;7644:1;7637:15;7675:4;7672:1;7665:15;7558:132;-1:-1:-1;7704:9:1;;7502:217::o;8211:184::-;8281:6;8334:2;8322:9;8313:7;8309:23;8305:32;8302:52;;;8350:1;8347;8340:12;8302:52;-1:-1:-1;8373:16:1;;8211:184;-1:-1:-1;8211:184:1:o;8702:245::-;8769:6;8822:2;8810:9;8801:7;8797:23;8793:32;8790:52;;;8838:1;8835;8828:12;8790:52;8870:9;8864:16;8889:28;8911:5;8889:28;:::i;13987:128::-;14054:9;;;14075:11;;;14072:37;;;14089:18;;:::i;15469:127::-;15530:10;15525:3;15521:20;15518:1;15511:31;15561:4;15558:1;15551:15;15585:4;15582:1;15575:15;15601:251;15671:6;15724:2;15712:9;15703:7;15699:23;15695:32;15692:52;;;15740:1;15737;15730:12;15692:52;15772:9;15766:16;15791:31;15816:5;15791:31;:::i;15857:1026::-;16119:4;16167:3;16156:9;16152:19;16198:6;16187:9;16180:25;16224:2;16262:6;16257:2;16246:9;16242:18;16235:34;16305:3;16300:2;16289:9;16285:18;16278:31;16329:6;16364;16358:13;16395:6;16387;16380:22;16433:3;16422:9;16418:19;16411:26;;16472:2;16464:6;16460:15;16446:29;;16493:1;16503:218;16517:6;16514:1;16511:13;16503:218;;;16582:13;;-1:-1:-1;;;;;16578:62:1;16566:75;;16696:15;;;;16661:12;;;;16539:1;16532:9;16503:218;;;-1:-1:-1;;;;;;;16777:55:1;;;;16772:2;16757:18;;16750:83;-1:-1:-1;;;16864:3:1;16849:19;16842:35;16738:3;15857:1026;-1:-1:-1;;;15857:1026:1:o

Swarm Source

ipfs://dbccd45422570ae8428eb82c80a4369a1129d7e6f011ac1da54c05887b8caaca

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.