ETH Price: $2,637.70 (+0.98%)

Token

Salvager (SALVA)
 

Overview

Max Total Supply

100,000,000 SALVA

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
324,626.923150919 SALVA

Value
$0.00
0x4a385fc93030218703b38db36b7503b3a824fdeb
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SALVA

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-18
*/

// SPDX-License-Identifier: MIT

/*

Website:  https://www.salvagereth.vip

Twitter:  https://twitter.com/salva_erc

Telegram: https://t.me/salva_erc

**/

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

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

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

    /**
     * @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
    );
}

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

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

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

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

    /**
     * @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 9;
    }

    /**
     * @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];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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

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

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

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

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

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

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

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

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

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

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

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

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

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

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

////// src/IUniswapV2Factory.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

////// src/IUniswapV2Pair.sol
/* pragma solidity 0.8.10; */
/* pragma experimental ABIEncoderV2; */

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(
        address to
    ) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
}

contract SALVA is IERC20, Ownable {
    using SafeMath for uint256;

    using Address for address payable;

    string private constant _name = "Salvager";
    string private constant _symbol = "SALVA";

    uint8 private constant _decimals = 9;

    address private taxWallet = 0x5116C2261B70F33256C3F12B44bEaa0EdE80B9A7;

    uint256 private _totalSupply = 100_000_000 * 10 ** _decimals;
    uint256 private _maxWallet = _totalSupply * 20 / 1000;
    uint256 private _maxBuyAmount = _totalSupply * 20 / 1000;
    uint256 private _maxSellAmount = _totalSupply * 20 / 1000;
    uint256 private _autoSwap = 20_000 * 10 ** _decimals;

    uint256 private _totalBurned;

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isBurn;
    mapping(address => bool) private automatedMarketMakerPairs;

    IUniswapV2Router02 public uniswapV2Router;

    address public uniswapV2Pair;
    address private _owner;

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

    event Burn(address indexed burner, uint256 amount);

    bool private _enableSwap = false;
    bool private _launch = false;
    bool private _swapping = false;

    uint256 private amountBuyRate = 5;
    uint256 private amountSellRate = 5;

    constructor() {
        _owner = msg.sender;

        uint256 tsupply = _totalSupply;

        _mint(msg.sender, tsupply);

        setExcludedFromFee(_owner, true);
        setExcludedFromFee(address(this), true);
        setExcludedFromFee(taxWallet, true);
    }

    function addLiquidityETH() external payable onlyOwner {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        ); // kovan uni

        // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), ~uint256(0));

        _setAutomatedMarketMakerPair(uniswapV2Pair, true);

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

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

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

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

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

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

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

    function totalBurned() public view returns (uint256) {
        return _totalBurned;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function isBurnAcess(address account) public view returns (bool) {
        return _isBurn[account];
    }

    function _mint(address account, uint256 amount) private {
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    function getBuyAndSellRates()
        public
        view
        returns (
            uint256 totalBuyRate,
            uint256 maxWallet,
            uint256 maxBuyAmount,
            uint256 totalSellRate,
            uint256 maxSellAmount
        )
    {
        totalBuyRate = amountBuyRate;
        maxWallet = _maxWallet;
        maxBuyAmount = _maxBuyAmount;

        totalSellRate = amountSellRate;
        maxSellAmount = _maxSellAmount;
    }

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        if (
            recipient != uniswapV2Pair &&
            recipient != owner() &&
            !_isExcludedFromFee[recipient]
        ) {
            require(
                _balances[recipient] + amount <= _maxWallet,
                "recipient wallet balance exceeds the maximum limit"
            );
        }

        _transfer(msg.sender, recipient, amount);

        return true;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "MyToken: approve from the zero address");
        require(spender != address(0), "MyToken: approve to the zero address");

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        require(sender != address(0), "transfer from the zero address");
        require(recipient != address(0), "transfer to the zero address");
        require(amount > 0, "transfer amount must be greater than zero");

        if (
            !automatedMarketMakerPairs[recipient] &&
            recipient != owner() &&
            !_isExcludedFromFee[recipient]
        ) {
            require(
                _balances[recipient] + amount <= _maxWallet,
                "recipient wallet balance exceeds the maximum limit"
            );
        }
        if (!_launch) {
            require(
                _isExcludedFromFee[sender] || _isExcludedFromFee[recipient],
                "we not launch yet"
            );
        }

        if (_swapping || !_launch) {
            _balances[sender] = _balances[sender].sub(amount);
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        } else {
            bool _autoTaxes = true;
            uint256 totalTaxAmount = 0;
            uint256 transferAmount = amount;

            //sell
            if (
                automatedMarketMakerPairs[recipient] &&
                !_isExcludedFromFee[sender] &&
                sender != owner()
            ) {
                require(
                    amount <= _maxSellAmount,
                    "Sell amount exceeds max limit"
                );

                if (_enableSwap && balanceOf(address(this)) > 0) {
                    autoSwap();
                }
            }

            //buy
            if (
                automatedMarketMakerPairs[sender] &&
                !_isExcludedFromFee[recipient] &&
                recipient != owner()
            ) {
                require(
                    amount <= _maxBuyAmount,
                    "Buy amount exceeds max limit"
                );
            }

            if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) {
                _autoTaxes = false;
                if (
                    _isExcludedFromFee[sender] &&
                    !automatedMarketMakerPairs[recipient]
                ) {
                    transferAmount = amount - transferAmount;
                }
            }

            if (_autoTaxes) {
                if (automatedMarketMakerPairs[sender]) {
                    totalTaxAmount = (amount * amountBuyRate) / 100;
                    transferAmount = amount - totalTaxAmount;
                } else if (automatedMarketMakerPairs[recipient]) {
                    totalTaxAmount = (amount * amountSellRate) / 100;
                    transferAmount = amount - totalTaxAmount;
                }

                if (totalTaxAmount > 0) {
                    _balances[address(this)] = _balances[address(this)].add(
                        totalTaxAmount
                    );
                }
                _balances[sender] = _balances[sender].sub(amount);
                _balances[recipient] = _balances[recipient].add(transferAmount);

                emit Transfer(sender, recipient, transferAmount);
                emit Transfer(sender, address(this), totalTaxAmount);
            } else {
                _balances[sender] = _balances[sender].sub(transferAmount);
                _balances[recipient] = _balances[recipient].add(amount);

                emit Transfer(sender, recipient, amount);
            }
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // Set up the contract address and the token to be swapped
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        // Approve the transfer of tokens to the contract address
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function autoSwap() private {
        _swapping = true;
        uint256 caBalance = balanceOf(address(this));

        uint256 toSwap = caBalance;

        swapTokensForEth(toSwap);

        uint256 receivedBalance = address(this).balance;

        if (receivedBalance > 0) {
            payable(taxWallet).transfer(receivedBalance);
        }
        _swapping = false;
    }

    function openTrading() external onlyOwner {
        _launch = true;
        _enableSwap = true;
    }

    function setExcludedFromFee(address account, bool status) public onlyOwner {
        _isExcludedFromFee[account] = status;
    }

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

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

    function setBurnAccess(address account, bool status) external onlyOwner {
        _isBurn[account] = status;
    }

    function setAutoSwap(uint256 newAutoSwap) external onlyOwner {
        require(
            newAutoSwap <= (totalSupply() * 1) / 100,
            "Invalid value: exceeds 1% of total supply"
        );
        _autoSwap = newAutoSwap * 10 ** _decimals;
    }

    function updateLimits() external onlyOwner {
        amountBuyRate = 1;
        amountSellRate = 1;

        _maxWallet = type(uint).max;
        _maxBuyAmount = type(uint).max;
        _maxSellAmount = type(uint).max;
    }

    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":"address","name":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidityETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getBuyAndSellRates","outputs":[{"internalType":"uint256","name":"totalBuyRate","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"maxBuyAmount","type":"uint256"},{"internalType":"uint256","name":"totalSellRate","type":"uint256"},{"internalType":"uint256","name":"maxSellAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBurnAcess","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAutoSwap","type":"uint256"}],"name":"setAutoSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBurnAccess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031916735116c2261b70f33256c3f12b44beaa0ede80b9a7179055620000386009600a620003ad565b62000048906305f5e100620003c5565b6003556103e860035460146200005f9190620003c5565b6200006b9190620003df565b6004556103e86003546014620000829190620003c5565b6200008e9190620003df565b6005556103e86003546014620000a59190620003c5565b620000b19190620003df565b600655620000c26009600a620003ad565b620000d090614e20620003c5565b6007556011805462ffffff1916905560056012819055601355348015620000f657600080fd5b5062000102336200016d565b600e80546001600160a01b0319163390811790915560035490620001279082620001bd565b600e5462000140906001600160a01b031660016200020e565b6200014d3060016200020e565b60025462000166906001600160a01b031660016200020e565b5062000402565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166000818152600f60209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000546001600160a01b031633146200026d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002ef578160001904821115620002d357620002d362000298565b80851615620002e157918102915b93841c9390800290620002b3565b509250929050565b6000826200030857506001620003a7565b816200031757506000620003a7565b81600181146200033057600281146200033b576200035b565b6001915050620003a7565b60ff8411156200034f576200034f62000298565b50506001821b620003a7565b5060208310610133831016604e8410600b841016171562000380575081810a620003a7565b6200038c8383620002ae565b8060001904821115620003a357620003a362000298565b0290505b92915050565b6000620003be60ff841683620002f7565b9392505050565b8082028115828204841417620003a757620003a762000298565b600082620003fd57634e487b7160e01b600052601260045260246000fd5b500490565b611c2a80620004126000396000f3fe6080604052600436106101855760003560e01c8063893d20e8116100d1578063b0b92d771161008a578063d8a0663c11610064578063d8a0663c146104c5578063dd62ed3e146104e5578063ed9953071461052b578063f2fde38b1461053357600080fd5b8063b0b92d7714610457578063c9567bf91461049b578063d89135cd146104b057600080fd5b8063893d20e8146103925780638da5cb5b1461039257806395d89b41146103b05780639a7a23d6146103de5780639f338c11146103fe578063a9059cbb1461043757600080fd5b806323b872dd1161013e5780635342acb4116101185780635342acb4146102ee5780636612e66f1461032757806370a0823114610347578063715018a61461037d57600080fd5b806323b872dd14610292578063313ce567146102b257806349bd5a5e146102ce57600080fd5b8063027c1d481461019157806306fdde03146101b3578063095ea7b3146101f65780630c08e255146102265780631694505e1461023b57806318160ddd1461027357600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b506101b16101ac3660046117b6565b610553565b005b3480156101bf57600080fd5b5060408051808201909152600881526729b0b63b30b3b2b960c11b60208201525b6040516101ed91906117f4565b60405180910390f35b34801561020257600080fd5b50610216610211366004611842565b6105b1565b60405190151581526020016101ed565b34801561023257600080fd5b506101b16105c8565b34801561024757600080fd5b50600c5461025b906001600160a01b031681565b6040516001600160a01b0390911681526020016101ed565b34801561027f57600080fd5b506003545b6040519081526020016101ed565b34801561029e57600080fd5b506102166102ad36600461186e565b61060e565b3480156102be57600080fd5b50604051600981526020016101ed565b3480156102da57600080fd5b50600d5461025b906001600160a01b031681565b3480156102fa57600080fd5b506102166103093660046118af565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561033357600080fd5b506101b16103423660046117b6565b61065d565b34801561035357600080fd5b506102846103623660046118af565b6001600160a01b03166000908152600f602052604090205490565b34801561038957600080fd5b506101b16106b2565b34801561039e57600080fd5b506000546001600160a01b031661025b565b3480156103bc57600080fd5b5060408051808201909152600581526453414c564160d81b60208201526101e0565b3480156103ea57600080fd5b506101b16103f93660046117b6565b6106e8565b34801561040a57600080fd5b506102166104193660046118af565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561044357600080fd5b50610216610452366004611842565b6107a4565b34801561046357600080fd5b50601254600454600554601354600654604080519586526020860194909452928401919091526060830152608082015260a0016101ed565b3480156104a757600080fd5b506101b161084d565b3480156104bc57600080fd5b50600854610284565b3480156104d157600080fd5b506101b16104e03660046118cc565b610888565b3480156104f157600080fd5b506102846105003660046118e5565b6001600160a01b03918216600090815260106020908152604080832093909416825291909152205490565b6101b161094f565b34801561053f57600080fd5b506101b161054e3660046118af565b610c03565b6000546001600160a01b031633146105865760405162461bcd60e51b815260040161057d90611913565b60405180910390fd5b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60006105be338484610c9e565b5060015b92915050565b6000546001600160a01b031633146105f25760405162461bcd60e51b815260040161057d90611913565b6001601281905560135560001960048190556005819055600655565b6001600160a01b038316600090815260106020908152604080832033808552925282205461064891869161064390869061195e565b610c9e565b610653848484610dc7565b5060019392505050565b6000546001600160a01b031633146106875760405162461bcd60e51b815260040161057d90611913565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146106dc5760405162461bcd60e51b815260040161057d90611913565b6106e66000611534565b565b6000546001600160a01b031633146107125760405162461bcd60e51b815260040161057d90611913565b600d546001600160a01b03908116908316036107965760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161057d565b6107a08282611584565b5050565b600d546000906001600160a01b038481169116148015906107d357506000546001600160a01b03848116911614155b80156107f857506001600160a01b03831660009081526009602052604090205460ff16155b15610842576004546001600160a01b0384166000908152600f6020526040902054610824908490611971565b11156108425760405162461bcd60e51b815260040161057d90611984565b6105be338484610dc7565b6000546001600160a01b031633146108775760405162461bcd60e51b815260040161057d90611913565b6011805461ffff1916610101179055565b6000546001600160a01b031633146108b25760405162461bcd60e51b815260040161057d90611913565b60646108bd60035490565b6108c89060016119d6565b6108d291906119ed565b8111156109335760405162461bcd60e51b815260206004820152602960248201527f496e76616c69642076616c75653a2065786365656473203125206f6620746f74604482015268616c20737570706c7960b81b606482015260840161057d565b61093f6009600a611af3565b61094990826119d6565b60075550565b6000546001600160a01b031633146109795760405162461bcd60e51b815260040161057d90611913565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f49190611b02565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a659190611b02565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad69190611b02565b600d80546001600160a01b039283166001600160a01b031991821617909155600c80549284169290911682179055610b12903090600019610c9e565b600d54610b29906001600160a01b03166001611584565b600c546001600160a01b031663f305d7193430610b5b816001600160a01b03166000908152600f602052604090205490565b600080610b706000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610bd8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bfd9190611b1f565b50505050565b6000546001600160a01b03163314610c2d5760405162461bcd60e51b815260040161057d90611913565b6001600160a01b038116610c925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057d565b610c9b81611534565b50565b6001600160a01b038316610d035760405162461bcd60e51b815260206004820152602660248201527f4d79546f6b656e3a20617070726f76652066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161057d565b6001600160a01b038216610d655760405162461bcd60e51b8152602060048201526024808201527f4d79546f6b656e3a20617070726f766520746f20746865207a65726f206164646044820152637265737360e01b606482015260840161057d565b6001600160a01b0383811660008181526010602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610e1d5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161057d565b6001600160a01b038216610e735760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161057d565b60008111610ed55760405162461bcd60e51b815260206004820152602960248201527f7472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161057d565b6001600160a01b0382166000908152600b602052604090205460ff16158015610f0c57506000546001600160a01b03838116911614155b8015610f3157506001600160a01b03821660009081526009602052604090205460ff16155b15610f7b576004546001600160a01b0383166000908152600f6020526040902054610f5d908390611971565b1115610f7b5760405162461bcd60e51b815260040161057d90611984565b601154610100900460ff16611009576001600160a01b03831660009081526009602052604090205460ff1680610fc957506001600160a01b03821660009081526009602052604090205460ff165b6110095760405162461bcd60e51b81526020600482015260116024820152701dd9481b9bdd081b185d5b98da081e595d607a1b604482015260640161057d565b60115462010000900460ff16806110285750601154610100900460ff16155b156110c1576001600160a01b0383166000908152600f602052604090205461105090826115af565b6001600160a01b038085166000908152600f6020526040808220939093559084168152205461107f90826115c2565b6001600160a01b038084166000818152600f60205260409081902093909355915190851690600080516020611bd583398151915290610dba9085815260200190565b6001600160a01b0382166000908152600b602052604081205460019190839060ff16801561110857506001600160a01b03861660009081526009602052604090205460ff16155b801561112257506000546001600160a01b03878116911614155b156111a5576006548411156111795760405162461bcd60e51b815260206004820152601d60248201527f53656c6c20616d6f756e742065786365656473206d6178206c696d6974000000604482015260640161057d565b60115460ff1680156111985750306000908152600f6020526040812054115b156111a5576111a56115ce565b6001600160a01b0386166000908152600b602052604090205460ff1680156111e657506001600160a01b03851660009081526009602052604090205460ff16155b801561120057506000546001600160a01b03868116911614155b15611257576005548411156112575760405162461bcd60e51b815260206004820152601c60248201527f42757920616d6f756e742065786365656473206d6178206c696d697400000000604482015260640161057d565b6001600160a01b03861660009081526009602052604090205460ff168061129657506001600160a01b03851660009081526009602052604090205460ff165b156112f1576001600160a01b03861660009081526009602052604081205490935060ff1680156112df57506001600160a01b0385166000908152600b602052604090205460ff16155b156112f1576112ee818561195e565b90505b821561148f576001600160a01b0386166000908152600b602052604090205460ff16156113455760646012548561132891906119d6565b61133291906119ed565b915061133e828561195e565b905061138f565b6001600160a01b0385166000908152600b602052604090205460ff161561138f5760646013548561137691906119d6565b61138091906119ed565b915061138c828561195e565b90505b81156113c057306000908152600f60205260409020546113af90836115c2565b306000908152600f60205260409020555b6001600160a01b0386166000908152600f60205260409020546113e390856115af565b6001600160a01b038088166000908152600f6020526040808220939093559087168152205461141290826115c2565b6001600160a01b038087166000818152600f60205260409081902093909355915190881690600080516020611bd5833981519152906114549085815260200190565b60405180910390a360405182815230906001600160a01b03881690600080516020611bd58339815191529060200160405180910390a361152c565b6001600160a01b0386166000908152600f60205260409020546114b290826115af565b6001600160a01b038088166000908152600f602052604080822093909355908716815220546114e190856115c2565b6001600160a01b038087166000818152600f60205260409081902093909355915190881690600080516020611bd5833981519152906115239088815260200190565b60405180910390a35b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60006115bb828461195e565b9392505050565b60006115bb8284611971565b6011805462ff0000191662010000179055306000908152600f60205260408120549050806115fb8161164f565b47801561163e576002546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561163c573d6000803e3d6000fd5b505b50506011805462ff00001916905550565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061168457611684611b4d565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117019190611b02565b8160018151811061171457611714611b4d565b6001600160a01b039283166020918202929092010152600c5461173a9130911684610c9e565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611773908590600090869030904290600401611b63565b600060405180830381600087803b15801561178d57600080fd5b505af115801561152c573d6000803e3d6000fd5b6001600160a01b0381168114610c9b57600080fd5b600080604083850312156117c957600080fd5b82356117d4816117a1565b9150602083013580151581146117e957600080fd5b809150509250929050565b600060208083528351808285015260005b8181101561182157858101830151858201604001528201611805565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561185557600080fd5b8235611860816117a1565b946020939093013593505050565b60008060006060848603121561188357600080fd5b833561188e816117a1565b9250602084013561189e816117a1565b929592945050506040919091013590565b6000602082840312156118c157600080fd5b81356115bb816117a1565b6000602082840312156118de57600080fd5b5035919050565b600080604083850312156118f857600080fd5b8235611903816117a1565b915060208301356117e9816117a1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105c2576105c2611948565b808201808211156105c2576105c2611948565b60208082526032908201527f726563697069656e742077616c6c65742062616c616e63652065786365656473604082015271081d1a19481b585e1a5b5d5b481b1a5b5a5d60721b606082015260800190565b80820281158282048414176105c2576105c2611948565b600082611a0a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611a4a578160001904821115611a3057611a30611948565b80851615611a3d57918102915b93841c9390800290611a14565b509250929050565b600082611a61575060016105c2565b81611a6e575060006105c2565b8160018114611a845760028114611a8e57611aaa565b60019150506105c2565b60ff841115611a9f57611a9f611948565b50506001821b6105c2565b5060208310610133831016604e8410600b8410161715611acd575081810a6105c2565b611ad78383611a0f565b8060001904821115611aeb57611aeb611948565b029392505050565b60006115bb60ff841683611a52565b600060208284031215611b1457600080fd5b81516115bb816117a1565b600080600060608486031215611b3457600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bb35784516001600160a01b031683529383019391830191600101611b8e565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208967fcdcf602b3d920f1b439ece36b65495aa77e8b423483fb2f7a75ede4196d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101855760003560e01c8063893d20e8116100d1578063b0b92d771161008a578063d8a0663c11610064578063d8a0663c146104c5578063dd62ed3e146104e5578063ed9953071461052b578063f2fde38b1461053357600080fd5b8063b0b92d7714610457578063c9567bf91461049b578063d89135cd146104b057600080fd5b8063893d20e8146103925780638da5cb5b1461039257806395d89b41146103b05780639a7a23d6146103de5780639f338c11146103fe578063a9059cbb1461043757600080fd5b806323b872dd1161013e5780635342acb4116101185780635342acb4146102ee5780636612e66f1461032757806370a0823114610347578063715018a61461037d57600080fd5b806323b872dd14610292578063313ce567146102b257806349bd5a5e146102ce57600080fd5b8063027c1d481461019157806306fdde03146101b3578063095ea7b3146101f65780630c08e255146102265780631694505e1461023b57806318160ddd1461027357600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b506101b16101ac3660046117b6565b610553565b005b3480156101bf57600080fd5b5060408051808201909152600881526729b0b63b30b3b2b960c11b60208201525b6040516101ed91906117f4565b60405180910390f35b34801561020257600080fd5b50610216610211366004611842565b6105b1565b60405190151581526020016101ed565b34801561023257600080fd5b506101b16105c8565b34801561024757600080fd5b50600c5461025b906001600160a01b031681565b6040516001600160a01b0390911681526020016101ed565b34801561027f57600080fd5b506003545b6040519081526020016101ed565b34801561029e57600080fd5b506102166102ad36600461186e565b61060e565b3480156102be57600080fd5b50604051600981526020016101ed565b3480156102da57600080fd5b50600d5461025b906001600160a01b031681565b3480156102fa57600080fd5b506102166103093660046118af565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561033357600080fd5b506101b16103423660046117b6565b61065d565b34801561035357600080fd5b506102846103623660046118af565b6001600160a01b03166000908152600f602052604090205490565b34801561038957600080fd5b506101b16106b2565b34801561039e57600080fd5b506000546001600160a01b031661025b565b3480156103bc57600080fd5b5060408051808201909152600581526453414c564160d81b60208201526101e0565b3480156103ea57600080fd5b506101b16103f93660046117b6565b6106e8565b34801561040a57600080fd5b506102166104193660046118af565b6001600160a01b03166000908152600a602052604090205460ff1690565b34801561044357600080fd5b50610216610452366004611842565b6107a4565b34801561046357600080fd5b50601254600454600554601354600654604080519586526020860194909452928401919091526060830152608082015260a0016101ed565b3480156104a757600080fd5b506101b161084d565b3480156104bc57600080fd5b50600854610284565b3480156104d157600080fd5b506101b16104e03660046118cc565b610888565b3480156104f157600080fd5b506102846105003660046118e5565b6001600160a01b03918216600090815260106020908152604080832093909416825291909152205490565b6101b161094f565b34801561053f57600080fd5b506101b161054e3660046118af565b610c03565b6000546001600160a01b031633146105865760405162461bcd60e51b815260040161057d90611913565b60405180910390fd5b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60006105be338484610c9e565b5060015b92915050565b6000546001600160a01b031633146105f25760405162461bcd60e51b815260040161057d90611913565b6001601281905560135560001960048190556005819055600655565b6001600160a01b038316600090815260106020908152604080832033808552925282205461064891869161064390869061195e565b610c9e565b610653848484610dc7565b5060019392505050565b6000546001600160a01b031633146106875760405162461bcd60e51b815260040161057d90611913565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146106dc5760405162461bcd60e51b815260040161057d90611913565b6106e66000611534565b565b6000546001600160a01b031633146107125760405162461bcd60e51b815260040161057d90611913565b600d546001600160a01b03908116908316036107965760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161057d565b6107a08282611584565b5050565b600d546000906001600160a01b038481169116148015906107d357506000546001600160a01b03848116911614155b80156107f857506001600160a01b03831660009081526009602052604090205460ff16155b15610842576004546001600160a01b0384166000908152600f6020526040902054610824908490611971565b11156108425760405162461bcd60e51b815260040161057d90611984565b6105be338484610dc7565b6000546001600160a01b031633146108775760405162461bcd60e51b815260040161057d90611913565b6011805461ffff1916610101179055565b6000546001600160a01b031633146108b25760405162461bcd60e51b815260040161057d90611913565b60646108bd60035490565b6108c89060016119d6565b6108d291906119ed565b8111156109335760405162461bcd60e51b815260206004820152602960248201527f496e76616c69642076616c75653a2065786365656473203125206f6620746f74604482015268616c20737570706c7960b81b606482015260840161057d565b61093f6009600a611af3565b61094990826119d6565b60075550565b6000546001600160a01b031633146109795760405162461bcd60e51b815260040161057d90611913565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f49190611b02565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a659190611b02565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad69190611b02565b600d80546001600160a01b039283166001600160a01b031991821617909155600c80549284169290911682179055610b12903090600019610c9e565b600d54610b29906001600160a01b03166001611584565b600c546001600160a01b031663f305d7193430610b5b816001600160a01b03166000908152600f602052604090205490565b600080610b706000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610bd8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bfd9190611b1f565b50505050565b6000546001600160a01b03163314610c2d5760405162461bcd60e51b815260040161057d90611913565b6001600160a01b038116610c925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161057d565b610c9b81611534565b50565b6001600160a01b038316610d035760405162461bcd60e51b815260206004820152602660248201527f4d79546f6b656e3a20617070726f76652066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161057d565b6001600160a01b038216610d655760405162461bcd60e51b8152602060048201526024808201527f4d79546f6b656e3a20617070726f766520746f20746865207a65726f206164646044820152637265737360e01b606482015260840161057d565b6001600160a01b0383811660008181526010602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610e1d5760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f20616464726573730000604482015260640161057d565b6001600160a01b038216610e735760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161057d565b60008111610ed55760405162461bcd60e51b815260206004820152602960248201527f7472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161057d565b6001600160a01b0382166000908152600b602052604090205460ff16158015610f0c57506000546001600160a01b03838116911614155b8015610f3157506001600160a01b03821660009081526009602052604090205460ff16155b15610f7b576004546001600160a01b0383166000908152600f6020526040902054610f5d908390611971565b1115610f7b5760405162461bcd60e51b815260040161057d90611984565b601154610100900460ff16611009576001600160a01b03831660009081526009602052604090205460ff1680610fc957506001600160a01b03821660009081526009602052604090205460ff165b6110095760405162461bcd60e51b81526020600482015260116024820152701dd9481b9bdd081b185d5b98da081e595d607a1b604482015260640161057d565b60115462010000900460ff16806110285750601154610100900460ff16155b156110c1576001600160a01b0383166000908152600f602052604090205461105090826115af565b6001600160a01b038085166000908152600f6020526040808220939093559084168152205461107f90826115c2565b6001600160a01b038084166000818152600f60205260409081902093909355915190851690600080516020611bd583398151915290610dba9085815260200190565b6001600160a01b0382166000908152600b602052604081205460019190839060ff16801561110857506001600160a01b03861660009081526009602052604090205460ff16155b801561112257506000546001600160a01b03878116911614155b156111a5576006548411156111795760405162461bcd60e51b815260206004820152601d60248201527f53656c6c20616d6f756e742065786365656473206d6178206c696d6974000000604482015260640161057d565b60115460ff1680156111985750306000908152600f6020526040812054115b156111a5576111a56115ce565b6001600160a01b0386166000908152600b602052604090205460ff1680156111e657506001600160a01b03851660009081526009602052604090205460ff16155b801561120057506000546001600160a01b03868116911614155b15611257576005548411156112575760405162461bcd60e51b815260206004820152601c60248201527f42757920616d6f756e742065786365656473206d6178206c696d697400000000604482015260640161057d565b6001600160a01b03861660009081526009602052604090205460ff168061129657506001600160a01b03851660009081526009602052604090205460ff165b156112f1576001600160a01b03861660009081526009602052604081205490935060ff1680156112df57506001600160a01b0385166000908152600b602052604090205460ff16155b156112f1576112ee818561195e565b90505b821561148f576001600160a01b0386166000908152600b602052604090205460ff16156113455760646012548561132891906119d6565b61133291906119ed565b915061133e828561195e565b905061138f565b6001600160a01b0385166000908152600b602052604090205460ff161561138f5760646013548561137691906119d6565b61138091906119ed565b915061138c828561195e565b90505b81156113c057306000908152600f60205260409020546113af90836115c2565b306000908152600f60205260409020555b6001600160a01b0386166000908152600f60205260409020546113e390856115af565b6001600160a01b038088166000908152600f6020526040808220939093559087168152205461141290826115c2565b6001600160a01b038087166000818152600f60205260409081902093909355915190881690600080516020611bd5833981519152906114549085815260200190565b60405180910390a360405182815230906001600160a01b03881690600080516020611bd58339815191529060200160405180910390a361152c565b6001600160a01b0386166000908152600f60205260409020546114b290826115af565b6001600160a01b038088166000908152600f602052604080822093909355908716815220546114e190856115c2565b6001600160a01b038087166000818152600f60205260409081902093909355915190881690600080516020611bd5833981519152906115239088815260200190565b60405180910390a35b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60006115bb828461195e565b9392505050565b60006115bb8284611971565b6011805462ff0000191662010000179055306000908152600f60205260408120549050806115fb8161164f565b47801561163e576002546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561163c573d6000803e3d6000fd5b505b50506011805462ff00001916905550565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061168457611684611b4d565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117019190611b02565b8160018151811061171457611714611b4d565b6001600160a01b039283166020918202929092010152600c5461173a9130911684610c9e565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611773908590600090869030904290600401611b63565b600060405180830381600087803b15801561178d57600080fd5b505af115801561152c573d6000803e3d6000fd5b6001600160a01b0381168114610c9b57600080fd5b600080604083850312156117c957600080fd5b82356117d4816117a1565b9150602083013580151581146117e957600080fd5b809150509250929050565b600060208083528351808285015260005b8181101561182157858101830151858201604001528201611805565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561185557600080fd5b8235611860816117a1565b946020939093013593505050565b60008060006060848603121561188357600080fd5b833561188e816117a1565b9250602084013561189e816117a1565b929592945050506040919091013590565b6000602082840312156118c157600080fd5b81356115bb816117a1565b6000602082840312156118de57600080fd5b5035919050565b600080604083850312156118f857600080fd5b8235611903816117a1565b915060208301356117e9816117a1565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105c2576105c2611948565b808201808211156105c2576105c2611948565b60208082526032908201527f726563697069656e742077616c6c65742062616c616e63652065786365656473604082015271081d1a19481b585e1a5b5d5b481b1a5b5a5d60721b606082015260800190565b80820281158282048414176105c2576105c2611948565b600082611a0a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611a4a578160001904821115611a3057611a30611948565b80851615611a3d57918102915b93841c9390800290611a14565b509250929050565b600082611a61575060016105c2565b81611a6e575060006105c2565b8160018114611a845760028114611a8e57611aaa565b60019150506105c2565b60ff841115611a9f57611a9f611948565b50506001821b6105c2565b5060208310610133831016604e8410600b8410161715611acd575081810a6105c2565b611ad78383611a0f565b8060001904821115611aeb57611aeb611948565b029392505050565b60006115bb60ff841683611a52565b600060208284031215611b1457600080fd5b81516115bb816117a1565b600080600060608486031215611b3457600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611bb35784516001600160a01b031683529383019391830191600101611b8e565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208967fcdcf602b3d920f1b439ece36b65495aa77e8b423483fb2f7a75ede4196d64736f6c63430008130033

Deployed Bytecode Sourcemap

18859:11709:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29902:116;;;;;;;;;;-1:-1:-1;29902:116:0;;;;;:::i;:::-;;:::i;:::-;;21413:83;;;;;;;;;;-1:-1:-1;21483:5:0;;;;;;;;;;;;-1:-1:-1;;;21483:5:0;;;;21413:83;;;;;;;:::i;:::-;;;;;;;;23623:184;;;;;;;;;;-1:-1:-1;23623:184:0;;;;;:::i;:::-;;:::i;:::-;;;1609:14:1;;1602:22;1584:41;;1572:2;1557:18;23623:184:0;1444:187:1;30297:231:0;;;;;;;;;;;;;:::i;19724:41::-;;;;;;;;;;-1:-1:-1;19724:41:0;;;;-1:-1:-1;;;;;19724:41:0;;;;;;-1:-1:-1;;;;;1827:32:1;;;1809:51;;1797:2;1782:18;19724:41:0;1636:230:1;21690:100:0;;;;;;;;;;-1:-1:-1;21770:12:0;;21690:100;;;2017:25:1;;;2005:2;1990:18;21690:100:0;1871:177:1;23815:296:0;;;;;;;;;;-1:-1:-1;23815:296:0;;;;;:::i;:::-;;:::i;21599:83::-;;;;;;;;;;-1:-1:-1;21599:83:0;;19111:1;2656:36:1;;2644:2;2629:18;21599:83:0;2514:184:1;19774:28:0;;;;;;;;;;-1:-1:-1;19774:28:0;;;;-1:-1:-1;;;;;19774:28:0;;;22024:124;;;;;;;;;;-1:-1:-1;22024:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;22113:27:0;22089:4;22113:27;;;:18;:27;;;;;;;;;22024:124;29314:130;;;;;;;;;;-1:-1:-1;29314:130:0;;;;;:::i;:::-;;:::i;21798:119::-;;;;;;;;;;-1:-1:-1;21798:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;21891:18:0;21864:7;21891:18;;;:9;:18;;;;;;;21798:119;1558:103;;;;;;;;;;;;;:::i;21322:83::-;;;;;;;;;;-1:-1:-1;21363:7:0;980:6;-1:-1:-1;;;;;980:6:0;21322:83;;21504:87;;;;;;;;;;-1:-1:-1;21576:7:0;;;;;;;;;;;;-1:-1:-1;;;21576:7:0;;;;21504:87;;29452:304;;;;;;;;;;-1:-1:-1;29452:304:0;;;;;:::i;:::-;;:::i;22156:107::-;;;;;;;;;;-1:-1:-1;22156:107:0;;;;;:::i;:::-;-1:-1:-1;;;;;22239:16:0;22215:4;22239:16;;;:7;:16;;;;;;;;;22156:107;22913:526;;;;;;;;;;-1:-1:-1;22913:526:0;;;;;:::i;:::-;;:::i;22434:471::-;;;;;;;;;;-1:-1:-1;22728:13:0;;22764:10;;22800:13;;22842:14;;22883;;22434:471;;;3422:25:1;;;3478:2;3463:18;;3456:34;;;;3506:18;;;3499:34;;;;3564:2;3549:18;;3542:34;3607:3;3592:19;;3585:35;3409:3;3394:19;22434:471:0;3163:463:1;29202:104:0;;;;;;;;;;;;;:::i;21925:91::-;;;;;;;;;;-1:-1:-1;21996:12:0;;21925:91;;30026:263;;;;;;;;;;-1:-1:-1;30026:263:0;;;;;:::i;:::-;;:::i;23447:168::-;;;;;;;;;;-1:-1:-1;23447:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;23580:18:0;;;23553:7;23580:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;23447:168;20506:808;;;:::i;1816:238::-;;;;;;;;;;-1:-1:-1;1816:238:0;;;;;:::i;:::-;;:::i;29902:116::-;953:7;980:6;-1:-1:-1;;;;;980:6:0;308:10;1127:23;1119:68;;;;-1:-1:-1;;;1119:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;29985:16:0;;;::::1;;::::0;;;:7:::1;:16;::::0;;;;:25;;-1:-1:-1;;29985:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29902:116::o;23623:184::-;23723:4;23740:37;23749:10;23761:7;23770:6;23740:8;:37::i;:::-;-1:-1:-1;23795:4:0;23623:184;;;;;:::o;30297:231::-;953:7;980:6;-1:-1:-1;;;;;980:6:0;308:10;1127:23;1119:68;;;;-1:-1:-1;;;1119:68:0;;;;;;;:::i;:::-;30367:1:::1;30351:13;:17:::0;;;30379:14:::1;:18:::0;-1:-1:-1;;30410:10:0::1;:27:::0;;;30448:13:::1;:30:::0;;;30489:14:::1;:31:::0;30297:231::o;23815:296::-;-1:-1:-1;;;;;23993:19:0;;23947:4;23993:19;;;:11;:19;;;;;;;;23981:10;23993:31;;;;;;;;23964:70;;23973:6;;23993:40;;24027:6;;23993:40;:::i;:::-;23964:8;:70::i;:::-;24045:36;24055:6;24063:9;24074:6;24045:9;:36::i;:::-;-1:-1:-1;24099:4:0;23815:296;;;;;:::o;29314:130::-;953:7;980:6;-1:-1:-1;;;;;980:6:0;308:10;1127:23;1119:68;;;;-1:-1:-1;;;1119:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29400:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:36;;-1:-1:-1;;29400:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29314:130::o;1558:103::-;953:7;980:6;-1:-1:-1;;;;;980:6:0;308:10;1127:23;1119:68;;;;-1:-1:-1;;;1119:68:0;;;;;;;:::i;:::-;1623:30:::1;1650:1;1623:18;:30::i;:::-;1558:103::o:0;29452:304::-;953:7;980:6;-1:-1:-1;;;;;980:6:0;308:10;1127:23;1119:68;;;;-1:-1:-1;;;1119:68:0;;;;;;;:::i;:::-;29598:13:::1;::::0;-1:-1:-1;;;;;29598:13:0;;::::1;29590:21:::0;;::::1;::::0;29568:128:::1;;;::::0;-1:-1:-1;;;29568:128:0;;5037:2:1;29568:128:0::1;::::0;::::1;5019:21:1::0;5076:2;5056:18;;;5049:30;5115:34;5095:18;;;5088:62;5186:27;5166:18;;;5159:55;5231:19;;29568:128:0::1;4835:421:1::0;29568:128:0::1;29707:41;29736:4;29742:5;29707:28;:41::i;:::-;29452:304:::0;;:::o;22913:526::-;23064:13;;23016:4;;-1:-1:-1;;;;;23051:26:0;;;23064:13;;23051:26;;;;:63;;-1:-1:-1;953:7:0;980:6;-1:-1:-1;;;;;23094:20:0;;;980:6;;23094:20;;23051:63;:110;;;;-1:-1:-1;;;;;;23132:29:0;;;;;;:18;:29;;;;;;;;23131:30;23051:110;23033:322;;;23247:10;;-1:-1:-1;;;;;23214:20:0;;;;;;:9;:20;;;;;;:29;;23237:6;;23214:29;:::i;:::-;:43;;23188:155;;;;-1:-1:-1;;;23188:155:0;;;;;;;:::i;:::-;23367:40;23377:10;23389:9;23400:6;23367:9;:40::i;29202:104::-;953:7;980:6;-1:-1:-1;;;;;980:6:0;308:10;1127:23;1119:68;;;;-1:-1:-1;;;1119:68:0;;;;;;;:::i;:::-;29255:7:::1;:14:::0;;-1:-1:-1;;29280:18:0;;;;;29202:104::o;30026:263::-;953:7;980:6;-1:-1:-1;;;;;980:6:0;308:10;1127:23;1119:68;;;;-1:-1:-1;;;1119:68:0;;;;;;;:::i;:::-;30157:3:::1;30136:13;21770:12:::0;;;21690:100;30136:13:::1;:17;::::0;30152:1:::1;30136:17;:::i;:::-;30135:25;;;;:::i;:::-;30120:11;:40;;30098:131;;;::::0;-1:-1:-1;;;30098:131:0;;6407:2:1;30098:131:0::1;::::0;::::1;6389:21:1::0;6446:2;6426:18;;;6419:30;6485:34;6465:18;;;6458:62;-1:-1:-1;;;6536:18:1;;;6529:39;6585:19;;30098:131:0::1;6205:405:1::0;30098:131:0::1;30266:15;19111:1;30266:2;:15;:::i;:::-;30252:29;::::0;:11;:29:::1;:::i;:::-;30240:9;:41:::0;-1:-1:-1;30026:263:0:o;20506:808::-;953:7;980:6;-1:-1:-1;;;;;980:6:0;308:10;1127:23;1119:68;;;;-1:-1:-1;;;1119:68:0;;;;;;;:::i;:::-;20571:35:::1;20642:42;20571:124;;20808:16;-1:-1:-1::0;;;;;20808:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20790:70:0::1;;20869:4;20876:16;-1:-1:-1::0;;;;;20876:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20790:110;::::0;-1:-1:-1;;;;;;20790:110:0::1;::::0;;;;;;-1:-1:-1;;;;;8484:15:1;;;20790:110:0::1;::::0;::::1;8466:34:1::0;8536:15;;8516:18;;;8509:43;8401:18;;20790:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20774:13;:126:::0;;-1:-1:-1;;;;;20774:126:0;;::::1;-1:-1:-1::0;;;;;;20774:126:0;;::::1;;::::0;;;20913:15:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;20958:62:::1;::::0;20975:4:::1;::::0;-1:-1:-1;;20958:8:0::1;:62::i;:::-;21062:13;::::0;21033:49:::1;::::0;-1:-1:-1;;;;;21062:13:0::1;::::0;21033:28:::1;:49::i;:::-;21095:15;::::0;-1:-1:-1;;;;;21095:15:0::1;:31;21134:9;21167:4;21187:24;21167:4:::0;-1:-1:-1;;;;;21891:18:0;21864:7;21891:18;;;:9;:18;;;;;;;21798:119;21187:24:::1;21226:1;21242::::0;21258:7:::1;953::::0;980:6;-1:-1:-1;;;;;980:6:0;;907:87;21258:7:::1;21095:211;::::0;::::1;::::0;;;-1:-1:-1;;;;;;21095:211:0;;;-1:-1:-1;;;;;8922:15:1;;;21095:211:0::1;::::0;::::1;8904:34:1::0;8954:18;;;8947:34;;;;8997:18;;;8990:34;;;;9040:18;;;9033:34;9104:15;;;9083:19;;;9076:44;21280:15:0::1;9136:19:1::0;;;9129:35;8838:19;;21095:211:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20560:754;20506:808::o:0;1816:238::-;953:7;980:6;-1:-1:-1;;;;;980:6:0;308:10;1127:23;1119:68;;;;-1:-1:-1;;;1119:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1919:22:0;::::1;1897:110;;;::::0;-1:-1:-1;;;1897:110:0;;9688:2:1;1897:110:0::1;::::0;::::1;9670:21:1::0;9727:2;9707:18;;;9700:30;9766:34;9746:18;;;9739:62;-1:-1:-1;;;9817:18:1;;;9810:36;9863:19;;1897:110:0::1;9486:402:1::0;1897:110:0::1;2018:28;2037:8;2018:18;:28::i;:::-;1816:238:::0;:::o;24119:341::-;-1:-1:-1;;;;;24212:19:0;;24204:70;;;;-1:-1:-1;;;24204:70:0;;10095:2:1;24204:70:0;;;10077:21:1;10134:2;10114:18;;;10107:30;10173:34;10153:18;;;10146:62;-1:-1:-1;;;10224:18:1;;;10217:36;10270:19;;24204:70:0;9893:402:1;24204:70:0;-1:-1:-1;;;;;24293:21:0;;24285:70;;;;-1:-1:-1;;;24285:70:0;;10502:2:1;24285:70:0;;;10484:21:1;10541:2;10521:18;;;10514:30;10580:34;10560:18;;;10553:62;-1:-1:-1;;;10631:18:1;;;10624:34;10675:19;;24285:70:0;10300:400:1;24285:70:0;-1:-1:-1;;;;;24368:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24420:32;;2017:25:1;;;24420:32:0;;1990:18:1;24420:32:0;;;;;;;;24119:341;;;:::o;24468:3656::-;-1:-1:-1;;;;;24599:20:0;;24591:63;;;;-1:-1:-1;;;24591:63:0;;10907:2:1;24591:63:0;;;10889:21:1;10946:2;10926:18;;;10919:30;10985:32;10965:18;;;10958:60;11035:18;;24591:63:0;10705:354:1;24591:63:0;-1:-1:-1;;;;;24673:23:0;;24665:64;;;;-1:-1:-1;;;24665:64:0;;11266:2:1;24665:64:0;;;11248:21:1;11305:2;11285:18;;;11278:30;11344;11324:18;;;11317:58;11392:18;;24665:64:0;11064:352:1;24665:64:0;24757:1;24748:6;:10;24740:64;;;;-1:-1:-1;;;24740:64:0;;11623:2:1;24740:64:0;;;11605:21:1;11662:2;11642:18;;;11635:30;11701:34;11681:18;;;11674:62;-1:-1:-1;;;11752:18:1;;;11745:39;11801:19;;24740:64:0;11421:405:1;24740:64:0;-1:-1:-1;;;;;24836:36:0;;;;;;:25;:36;;;;;;;;24835:37;:74;;;;-1:-1:-1;953:7:0;980:6;-1:-1:-1;;;;;24889:20:0;;;980:6;;24889:20;;24835:74;:121;;;;-1:-1:-1;;;;;;24927:29:0;;;;;;:18;:29;;;;;;;;24926:30;24835:121;24817:333;;;25042:10;;-1:-1:-1;;;;;25009:20:0;;;;;;:9;:20;;;;;;:29;;25032:6;;25009:29;:::i;:::-;:43;;24983:155;;;;-1:-1:-1;;;24983:155:0;;;;;;;:::i;:::-;25165:7;;;;;;;25160:179;;-1:-1:-1;;;;;25215:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;25245:29:0;;;;;;:18;:29;;;;;;;;25215:59;25189:138;;;;-1:-1:-1;;;25189:138:0;;12033:2:1;25189:138:0;;;12015:21:1;12072:2;12052:18;;;12045:30;-1:-1:-1;;;12091:18:1;;;12084:47;12148:18;;25189:138:0;11831:341:1;25189:138:0;25355:9;;;;;;;;:21;;-1:-1:-1;25369:7:0;;;;;;;25368:8;25355:21;25351:2766;;;-1:-1:-1;;;;;25413:17:0;;;;;;:9;:17;;;;;;:29;;25435:6;25413:21;:29::i;:::-;-1:-1:-1;;;;;25393:17:0;;;;;;;:9;:17;;;;;;:49;;;;25480:20;;;;;;;:32;;25505:6;25480:24;:32::i;:::-;-1:-1:-1;;;;;25457:20:0;;;;;;;:9;:20;;;;;;;:55;;;;25532:35;;;;;;-1:-1:-1;;;;;;;;;;;25532:35:0;;;25560:6;2017:25:1;;2005:2;1990:18;;1871:177;25351:2766:0;-1:-1:-1;;;;;25768:36:0;;25600:15;25768:36;;;:25;:36;;;;;;25618:4;;25600:15;25703:6;;25768:36;;:84;;;;-1:-1:-1;;;;;;25826:26:0;;;;;;:18;:26;;;;;;;;25825:27;25768:84;:122;;;;-1:-1:-1;953:7:0;980:6;-1:-1:-1;;;;;25873:17:0;;;980:6;;25873:17;;25768:122;25746:444;;;25965:14;;25955:6;:24;;25925:127;;;;-1:-1:-1;;;25925:127:0;;12379:2:1;25925:127:0;;;12361:21:1;12418:2;12398:18;;;12391:30;12457:31;12437:18;;;12430:59;12506:18;;25925:127:0;12177:353:1;25925:127:0;26077:11;;;;:43;;;;-1:-1:-1;26110:4:0;26119:1;21891:18;;;:9;:18;;;;;;26092:28;26077:43;26073:102;;;26145:10;:8;:10::i;:::-;-1:-1:-1;;;;;26247:33:0;;;;;;:25;:33;;;;;;;;:84;;;;-1:-1:-1;;;;;;26302:29:0;;;;;;:18;:29;;;;;;;;26301:30;26247:84;:125;;;;-1:-1:-1;953:7:0;980:6;-1:-1:-1;;;;;26352:20:0;;;980:6;;26352:20;;26247:125;26225:323;;;26447:13;;26437:6;:23;;26407:125;;;;-1:-1:-1;;;26407:125:0;;12737:2:1;26407:125:0;;;12719:21:1;12776:2;12756:18;;;12749:30;12815;12795:18;;;12788:58;12863:18;;26407:125:0;12535:352:1;26407:125:0;-1:-1:-1;;;;;26568:26:0;;;;;;:18;:26;;;;;;;;;:59;;-1:-1:-1;;;;;;26598:29:0;;;;;;:18;:29;;;;;;;;26568:59;26564:353;;;-1:-1:-1;;;;;26711:26:0;;26661:5;26711:26;;;:18;:26;;;;;;26661:5;;-1:-1:-1;26711:26:0;;:88;;;;-1:-1:-1;;;;;;26763:36:0;;;;;;:25;:36;;;;;;;;26762:37;26711:88;26685:217;;;26859:23;26868:14;26859:6;:23;:::i;:::-;26842:40;;26685:217;26937:10;26933:1173;;;-1:-1:-1;;;;;26972:33:0;;;;;;:25;:33;;;;;;;;26968:394;;;27074:3;27057:13;;27048:6;:22;;;;:::i;:::-;27047:30;;;;:::i;:::-;27030:47;-1:-1:-1;27117:23:0;27030:47;27117:6;:23;:::i;:::-;27100:40;;26968:394;;;-1:-1:-1;;;;;27170:36:0;;;;;;:25;:36;;;;;;;;27166:196;;;27276:3;27258:14;;27249:6;:23;;;;:::i;:::-;27248:31;;;;:::i;:::-;27231:48;-1:-1:-1;27319:23:0;27231:48;27319:6;:23;:::i;:::-;27302:40;;27166:196;27386:18;;27382:186;;27474:4;27456:24;;;;:9;:24;;;;;;:92;;27511:14;27456:28;:92::i;:::-;27447:4;27429:24;;;;:9;:24;;;;;:119;27382:186;-1:-1:-1;;;;;27606:17:0;;;;;;:9;:17;;;;;;:29;;27628:6;27606:21;:29::i;:::-;-1:-1:-1;;;;;27586:17:0;;;;;;;:9;:17;;;;;;:49;;;;27677:20;;;;;;;:40;;27702:14;27677:24;:40::i;:::-;-1:-1:-1;;;;;27654:20:0;;;;;;;:9;:20;;;;;;;:63;;;;27743:43;;;;;;-1:-1:-1;;;;;;;;;;;27743:43:0;;;27771:14;2017:25:1;;2005:2;1990:18;;1871:177;27743:43:0;;;;;;;;27810:47;;2017:25:1;;;27835:4:0;;-1:-1:-1;;;;;27810:47:0;;;-1:-1:-1;;;;;;;;;;;27810:47:0;2005:2:1;1990:18;27810:47:0;;;;;;;26933:1173;;;-1:-1:-1;;;;;27918:17:0;;;;;;:9;:17;;;;;;:37;;27940:14;27918:21;:37::i;:::-;-1:-1:-1;;;;;27898:17:0;;;;;;;:9;:17;;;;;;:57;;;;27997:20;;;;;;;:32;;28022:6;27997:24;:32::i;:::-;-1:-1:-1;;;;;27974:20:0;;;;;;;:9;:20;;;;;;;:55;;;;28055:35;;;;;;-1:-1:-1;;;;;;;;;;;28055:35:0;;;28083:6;2017:25:1;;2005:2;1990:18;;1871:177;28055:35:0;;;;;;;;26933:1173;25585:2532;;;24468:3656;;;:::o;2214:191::-;2288:16;2307:6;;-1:-1:-1;;;;;2324:17:0;;;-1:-1:-1;;;;;;2324:17:0;;;;;;2357:40;;2307:6;;;;;;;2357:40;;2288:16;2357:40;2277:128;2214:191;:::o;29764:130::-;-1:-1:-1;;;;;29847:31:0;;;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;29847:39:0;;;;;;;;;;29764:130::o;11971:98::-;12029:7;12056:5;12060:1;12056;:5;:::i;:::-;12049:12;11971:98;-1:-1:-1;;;11971:98:0:o;11865:::-;11923:7;11950:5;11954:1;11950;:5;:::i;28804:390::-;28843:9;:16;;-1:-1:-1;;28843:16:0;;;;;28908:4;-1:-1:-1;21891:18:0;;;:9;:18;;;;;;28870:44;-1:-1:-1;28870:44:0;28966:24;28870:44;28966:16;:24::i;:::-;29029:21;29067:19;;29063:96;;29111:9;;29103:44;;-1:-1:-1;;;;;29111:9:0;;;;29103:44;;;;;29131:15;;29111:9;29103:44;29111:9;29103:44;29131:15;29111:9;29103:44;;;;;;;;;;;;;;;;;;;;;29063:96;-1:-1:-1;;29169:9:0;:17;;-1:-1:-1;;29169:17:0;;;-1:-1:-1;28804:390:0:o;28132:664::-;28290:16;;;28304:1;28290:16;;;;;;;;28266:21;;28290:16;;;;;;;;;;-1:-1:-1;28290:16:0;28266:40;;28335:4;28317;28322:1;28317:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28317:23:0;;;:7;;;;;;;;;;:23;;;;28361:15;;:22;;;-1:-1:-1;;;28361:22:0;;;;:15;;;;;:20;;:22;;;;;28317:7;;28361:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28351:4;28356:1;28351:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28351:32:0;;;:7;;;;;;;;;:32;28495:15;;28463:62;;28480:4;;28495:15;28513:11;28463:8;:62::i;:::-;28564:15;;:224;;-1:-1:-1;;;28564:224:0;;-1:-1:-1;;;;;28564:15:0;;;;:66;;:224;;28645:11;;28564:15;;28715:4;;28742;;28762:15;;28564:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:416;215:6;223;276:2;264:9;255:7;251:23;247:32;244:52;;;292:1;289;282:12;244:52;331:9;318:23;350:31;375:5;350:31;:::i;:::-;400:5;-1:-1:-1;457:2:1;442:18;;429:32;499:15;;492:23;480:36;;470:64;;530:1;527;520:12;470:64;553:7;543:17;;;150:416;;;;;:::o;571:548::-;683:4;712:2;741;730:9;723:21;773:6;767:13;816:6;811:2;800:9;796:18;789:34;841:1;851:140;865:6;862:1;859:13;851:140;;;960:14;;;956:23;;950:30;926:17;;;945:2;922:26;915:66;880:10;;851:140;;;855:3;1040:1;1035:2;1026:6;1015:9;1011:22;1007:31;1000:42;1110:2;1103;1099:7;1094:2;1086:6;1082:15;1078:29;1067:9;1063:45;1059:54;1051:62;;;;571:548;;;;:::o;1124:315::-;1192:6;1200;1253:2;1241:9;1232:7;1228:23;1224:32;1221:52;;;1269:1;1266;1259:12;1221:52;1308:9;1295:23;1327:31;1352:5;1327:31;:::i;:::-;1377:5;1429:2;1414:18;;;;1401:32;;-1:-1:-1;;;1124:315:1:o;2053:456::-;2130:6;2138;2146;2199:2;2187:9;2178:7;2174:23;2170:32;2167:52;;;2215:1;2212;2205:12;2167:52;2254:9;2241:23;2273:31;2298:5;2273:31;:::i;:::-;2323:5;-1:-1:-1;2380:2:1;2365:18;;2352:32;2393:33;2352:32;2393:33;:::i;:::-;2053:456;;2445:7;;-1:-1:-1;;;2499:2:1;2484:18;;;;2471:32;;2053:456::o;2911:247::-;2970:6;3023:2;3011:9;3002:7;2998:23;2994:32;2991:52;;;3039:1;3036;3029:12;2991:52;3078:9;3065:23;3097:31;3122:5;3097:31;:::i;3631:180::-;3690:6;3743:2;3731:9;3722:7;3718:23;3714:32;3711:52;;;3759:1;3756;3749:12;3711:52;-1:-1:-1;3782:23:1;;3631:180;-1:-1:-1;3631:180:1:o;3816:388::-;3884:6;3892;3945:2;3933:9;3924:7;3920:23;3916:32;3913:52;;;3961:1;3958;3951:12;3913:52;4000:9;3987:23;4019:31;4044:5;4019:31;:::i;:::-;4069:5;-1:-1:-1;4126:2:1;4111:18;;4098:32;4139:33;4098:32;4139:33;:::i;4209:356::-;4411:2;4393:21;;;4430:18;;;4423:30;4489:34;4484:2;4469:18;;4462:62;4556:2;4541:18;;4209:356::o;4570:127::-;4631:10;4626:3;4622:20;4619:1;4612:31;4662:4;4659:1;4652:15;4686:4;4683:1;4676:15;4702:128;4769:9;;;4790:11;;;4787:37;;;4804:18;;:::i;5261:125::-;5326:9;;;5347:10;;;5344:36;;;5360:18;;:::i;5391:414::-;5593:2;5575:21;;;5632:2;5612:18;;;5605:30;5671:34;5666:2;5651:18;;5644:62;-1:-1:-1;;;5737:2:1;5722:18;;5715:48;5795:3;5780:19;;5391:414::o;5810:168::-;5883:9;;;5914;;5931:15;;;5925:22;;5911:37;5901:71;;5952:18;;:::i;5983:217::-;6023:1;6049;6039:132;;6093:10;6088:3;6084:20;6081:1;6074:31;6128:4;6125:1;6118:15;6156:4;6153:1;6146:15;6039:132;-1:-1:-1;6185:9:1;;5983:217::o;6615:422::-;6704:1;6747:5;6704:1;6761:270;6782:7;6772:8;6769:21;6761:270;;;6841:4;6837:1;6833:6;6829:17;6823:4;6820:27;6817:53;;;6850:18;;:::i;:::-;6900:7;6890:8;6886:22;6883:55;;;6920:16;;;;6883:55;6999:22;;;;6959:15;;;;6761:270;;;6765:3;6615:422;;;;;:::o;7042:806::-;7091:5;7121:8;7111:80;;-1:-1:-1;7162:1:1;7176:5;;7111:80;7210:4;7200:76;;-1:-1:-1;7247:1:1;7261:5;;7200:76;7292:4;7310:1;7305:59;;;;7378:1;7373:130;;;;7285:218;;7305:59;7335:1;7326:10;;7349:5;;;7373:130;7410:3;7400:8;7397:17;7394:43;;;7417:18;;:::i;:::-;-1:-1:-1;;7473:1:1;7459:16;;7488:5;;7285:218;;7587:2;7577:8;7574:16;7568:3;7562:4;7559:13;7555:36;7549:2;7539:8;7536:16;7531:2;7525:4;7522:12;7518:35;7515:77;7512:159;;;-1:-1:-1;7624:19:1;;;7656:5;;7512:159;7703:34;7728:8;7722:4;7703:34;:::i;:::-;7773:6;7769:1;7765:6;7761:19;7752:7;7749:32;7746:58;;;7784:18;;:::i;:::-;7822:20;;7042:806;-1:-1:-1;;;7042:806:1:o;7853:140::-;7911:5;7940:47;7981:4;7971:8;7967:19;7961:4;7940:47;:::i;7998:251::-;8068:6;8121:2;8109:9;8100:7;8096:23;8092:32;8089:52;;;8137:1;8134;8127:12;8089:52;8169:9;8163:16;8188:31;8213:5;8188:31;:::i;9175:306::-;9263:6;9271;9279;9332:2;9320:9;9311:7;9307:23;9303:32;9300:52;;;9348:1;9345;9338:12;9300:52;9377:9;9371:16;9361:26;;9427:2;9416:9;9412:18;9406:25;9396:35;;9471:2;9460:9;9456:18;9450:25;9440:35;;9175:306;;;;;:::o;13024:127::-;13085:10;13080:3;13076:20;13073:1;13066:31;13116:4;13113:1;13106:15;13140:4;13137:1;13130:15;13156:980;13418:4;13466:3;13455:9;13451:19;13497:6;13486:9;13479:25;13523:2;13561:6;13556:2;13545:9;13541:18;13534:34;13604:3;13599:2;13588:9;13584:18;13577:31;13628:6;13663;13657:13;13694:6;13686;13679:22;13732:3;13721:9;13717:19;13710:26;;13771:2;13763:6;13759:15;13745:29;;13792:1;13802:195;13816:6;13813:1;13810:13;13802:195;;;13881:13;;-1:-1:-1;;;;;13877:39:1;13865:52;;13972:15;;;;13937:12;;;;13913:1;13831:9;13802:195;;;-1:-1:-1;;;;;;;14053:32:1;;;;14048:2;14033:18;;14026:60;-1:-1:-1;;;14117:3:1;14102:19;14095:35;14014:3;13156:980;-1:-1:-1;;;13156:980:1:o

Swarm Source

ipfs://8967fcdcf602b3d920f1b439ece36b65495aa77e8b423483fb2f7a75ede4196d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.