ETH Price: $2,409.46 (-2.92%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

nsurance (n) (@$0.00)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer211175982024-11-04 23:33:593 hrs ago1730763239IN
nsurance: n Token
0 ETH0.000374655.7554385
Transfer211098882024-11-03 21:45:3528 hrs ago1730670335IN
nsurance: n Token
0 ETH0.000398934.58570393
Approve211008332024-11-02 15:24:472 days ago1730561087IN
nsurance: n Token
0 ETH0.000137785.67427506
Transfer210999832024-11-02 12:33:352 days ago1730550815IN
nsurance: n Token
0 ETH0.000509446.19787431
Approve210936082024-11-01 15:11:113 days ago1730473871IN
nsurance: n Token
0 ETH0.0009316619.98157207
Exclude Account ...210928802024-11-01 12:44:593 days ago1730465099IN
nsurance: n Token
0 ETH0.0005963212.41922823
Exclude Account ...210927332024-11-01 12:15:353 days ago1730463335IN
nsurance: n Token
0 ETH0.000422318.79536074
Transfer210924422024-11-01 11:17:113 days ago1730459831IN
nsurance: n Token
0 ETH0.00037817.341729
Transfer210924382024-11-01 11:16:233 days ago1730459783IN
nsurance: n Token
0 ETH0.000359196.63906772
Approve210867232024-10-31 16:09:354 days ago1730390975IN
nsurance: n Token
0 ETH0.0009574620.53502554
Approve210846232024-10-31 9:09:114 days ago1730365751IN
nsurance: n Token
0 ETH0.000424199.09792479
Transfer210746482024-10-29 23:41:476 days ago1730245307IN
nsurance: n Token
0 ETH0.00152337.13461845
Approve210727302024-10-29 17:17:116 days ago1730222231IN
nsurance: n Token
0 ETH0.0007993227.07188145
Approve210720492024-10-29 15:00:476 days ago1730214047IN
nsurance: n Token
0 ETH0.0006011612.96009931
Approve210720182024-10-29 14:54:356 days ago1730213675IN
nsurance: n Token
0 ETH0.02294489492.10513683
Approve210522752024-10-26 20:46:359 days ago1729975595IN
nsurance: n Token
0 ETH0.000307176.59656786
Approve210363152024-10-24 15:20:2311 days ago1729783223IN
nsurance: n Token
0 ETH0.0005444511.75872392
Transfer210065062024-10-20 11:30:5915 days ago1729423859IN
nsurance: n Token
0 ETH0.000538158.26869786
Transfer210037852024-10-20 2:25:1116 days ago1729391111IN
nsurance: n Token
0 ETH0.000445736.84860485
Approve209932442024-10-18 15:07:4717 days ago1729264067IN
nsurance: n Token
0 ETH0.0013909629.87087792
Approve209931822024-10-18 14:55:2317 days ago1729263323IN
nsurance: n Token
0 ETH0.0015636233.7526889
Approve209931802024-10-18 14:54:5917 days ago1729263299IN
nsurance: n Token
0 ETH0.0013949829.91866162
Approve209927002024-10-18 13:18:4717 days ago1729257527IN
nsurance: n Token
0 ETH0.0008597918.46396648
Transfer209830752024-10-17 5:04:2318 days ago1729141463IN
nsurance: n Token
0 ETH0.000478257.3469834
Transfer209830612024-10-17 5:01:3518 days ago1729141295IN
nsurance: n Token
0 ETH0.001686957.16751611
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
211175762024-11-04 23:29:353 hrs ago1730762975
nsurance: n Token
0.01332611 ETH
211175762024-11-04 23:29:353 hrs ago1730762975
nsurance: n Token
0.01332611 ETH
211106082024-11-04 0:09:5926 hrs ago1730678999
nsurance: n Token
0.01395846 ETH
211106082024-11-04 0:09:5926 hrs ago1730678999
nsurance: n Token
0.01395846 ETH
211020242024-11-02 19:24:112 days ago1730575451
nsurance: n Token
0.01430831 ETH
211020242024-11-02 19:24:112 days ago1730575451
nsurance: n Token
0.01430831 ETH
210966602024-11-02 1:24:473 days ago1730510687
nsurance: n Token
0.01404204 ETH
210966602024-11-02 1:24:473 days ago1730510687
nsurance: n Token
0.01404204 ETH
210944742024-11-01 18:05:113 days ago1730484311
nsurance: n Token
0.01424015 ETH
210944742024-11-01 18:05:113 days ago1730484311
nsurance: n Token
0.01424015 ETH
210929802024-11-01 13:05:113 days ago1730466311
nsurance: n Token
0.01457235 ETH
210929802024-11-01 13:05:113 days ago1730466311
nsurance: n Token
0.01457235 ETH
210907912024-11-01 5:45:353 days ago1730439935
nsurance: n Token
0.01406326 ETH
210907912024-11-01 5:45:353 days ago1730439935
nsurance: n Token
0.01406326 ETH
210880622024-10-31 20:37:594 days ago1730407079
nsurance: n Token
0.01369265 ETH
210880622024-10-31 20:37:594 days ago1730407079
nsurance: n Token
0.01369265 ETH
210869822024-10-31 17:01:354 days ago1730394095
nsurance: n Token
0.01499271 ETH
210869822024-10-31 17:01:354 days ago1730394095
nsurance: n Token
0.01499271 ETH
210835352024-10-31 5:29:474 days ago1730352587
nsurance: n Token
0.01345151 ETH
210835352024-10-31 5:29:474 days ago1730352587
nsurance: n Token
0.01345151 ETH
210828042024-10-31 3:02:234 days ago1730343743
nsurance: n Token
0.01306031 ETH
210828042024-10-31 3:02:234 days ago1730343743
nsurance: n Token
0.01306031 ETH
210819112024-10-31 0:03:235 days ago1730333003
nsurance: n Token
0.01326439 ETH
210819112024-10-31 0:03:235 days ago1730333003
nsurance: n Token
0.01326439 ETH
210815912024-10-30 22:59:115 days ago1730329151
nsurance: n Token
0.01163967 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
N

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 3 : N.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.21;

import "@openzeppelin/contracts/access/Ownable.sol";

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

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

    function decimals() external view returns (uint8);

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

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

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

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

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

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

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

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

interface In {
    //events
    event SwapThresholdChange(uint threshold);
    event OverLiquifiedThresholdChange(uint threshold);
    event OnSetTaxes(
        uint buy,
        uint sell,
        uint transfer_
    );
    event ManualSwapChange(bool status);
    event MaxWalletBalanceUpdated(uint256 percent);
    event MaxTransactionAmountUpdated(uint256 percent);
    event ExcludeAccount(address indexed account, bool indexed exclude);
    event ExcludeFromWalletLimits(
        address indexed account,
        bool indexed exclude
    );
    event ExcludeFromTransactionLimits(
        address indexed account,
        bool indexed exclude
    );
    event OwnerSwap();
    event OnEnableTrading();
    event RecoverETH();
    event NewPairSet(address indexed Pair, bool indexed Add);
    event LimitTo20PercentLP();
    event NewRouterSet(address indexed _newdex);
    event NewFeeWalletSet(
        address indexed taxwallet
    );
    event RecoverTokens(uint256 indexed amount);
    event TokensAirdroped(
        address indexed sender,
        uint256 indexed total,
        uint256 indexed amount
    );
}

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

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

    function factory() external pure returns (address);

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

contract N is IERC20, Ownable, In {
    mapping(address => uint) private _balances;
    mapping(address => mapping(address => uint)) private _allowances;
    mapping(address => bool) private excludedFromWalletLimits;
    mapping(address => bool) private excludedFromTransactionLimits;
    mapping(address => bool) public excludedFromFees;
    mapping(address => bool) public isPair;

    bytes32 public constant MANAGER_ROLE = keccak256("MANAGER_ROLE");
    bytes32 public constant AUTHENTICATOR_ROLE =
        keccak256("AUTHENTICATOR_ROLE");

    //strings
    string private constant _name = "nsurance";
    string private constant _symbol = "n";

    //uints
    uint private constant InitialSupply = 1_000_000_000_000 * 10 ** _decimals;

    //Tax by divisor of MAXTAXDENOMINATOR
    uint public buyTax = 400;
    uint public sellTax = 400;
    uint public transferTax = 400;

    uint constant taxPct = 10000;
    uint constant TAX_DENOMINATOR = 10000;
    uint constant MAXTAXDENOMINATOR = 1000;
    //swapTreshold dynamic by LP pair balance
    uint public swapTreshold = 8;
    uint private LaunchBlock;
    uint8 private constant _decimals = 18;
    uint256 public maxTransactionAmount;
    uint256 public maxWalletBalance;

    IdexRouter private _dexRouter;

    //addresses
    address private dexRouter;
    address private _dexPairAddress;
    address constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address private taxWallet;
    address private deployer;

    //bools
    bool private _isSwappingContractModifier;
    bool public manualSwap;

    //modifiers
    modifier lockTheSwap() {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    constructor(
        address _DexRouter,
        address _taxWallet
    ) {
        deployer = msg.sender;
        taxWallet = _taxWallet;
        dexRouter = _DexRouter;

        _balances[msg.sender] = InitialSupply;
        emit Transfer(address(0), msg.sender, InitialSupply);

        // Setting exclusions
        SetExclusions(
            [
                msg.sender,
                dexRouter,
                address(this)
            ],
            [
                msg.sender,
                deadWallet,
                address(this)
            ],
            [
                msg.sender,
                deadWallet,
                address(this)
            ]
        );
    }
    /**
     * @notice Set Exclusions
     * @dev This function is for set exclusions.
     * @param feeExclusions The array of address to be excluded from fees.
     * @param walletLimitExclusions The array of address to be excluded from wallet limits.
     * @param transactionLimitExclusions The array of address to be excluded from transaction limits.
     */
    function SetExclusions(
        address[3] memory feeExclusions,
        address[3] memory walletLimitExclusions,
        address[3] memory transactionLimitExclusions
    ) internal {
        for (uint256 i = 0; i < feeExclusions.length; ++i) {
            excludedFromFees[feeExclusions[i]] = true;
        }
        for (uint256 i = 0; i < walletLimitExclusions.length; ++i) {
            excludedFromWalletLimits[walletLimitExclusions[i]] = true;
        }
        for (uint256 i = 0; i < transactionLimitExclusions.length; ++i) {
            excludedFromTransactionLimits[transactionLimitExclusions[i]] = true;
        }
    }

    /**
     * @notice Internal function to transfer tokens from one address to another.
     */
    function _transfer(
        address sender,
        address recipient,
        uint amount
    ) internal {
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");

        if (excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        else {
            require(LaunchBlock > 0, "trading not yet enabled");
            _taxedTransfer(sender, recipient, amount);
        }
    }

    /**
     * @notice Transfer amount of tokens with fees.
     * @param sender The address of user to send tokens.
     * @param recipient The address of user to be recieved tokens.
     * @param amount The token amount to transfer.
     */
    function _taxedTransfer(
        address sender,
        address recipient,
        uint amount
    ) internal {
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        bool excludedFromWalletLimitsAccount = excludedFromWalletLimits[
            sender
        ] || excludedFromWalletLimits[recipient];
        bool excludedFromTXNLimitsAccount = excludedFromTransactionLimits[
            sender
        ] || excludedFromTransactionLimits[recipient];
        if (isPair[sender] && !excludedFromWalletLimitsAccount) {
            if (!excludedFromTXNLimitsAccount) {
                require(
                    amount <= maxTransactionAmount,
                    "Transfer amount exceeds the maxTxAmount."
                );
            }
            uint256 contractBalanceRecepient = balanceOf(recipient);
            require(
                contractBalanceRecepient + amount <= maxWalletBalance,
                "Exceeds maximum wallet token amount."
            );
        } else if (isPair[recipient] && !excludedFromTXNLimitsAccount) {
            require(
                amount <= maxTransactionAmount,
                "Sell transfer amount exceeds the maxSellTransactionAmount."
            );
        }

        bool isBuy = isPair[sender];
        bool isSell = isPair[recipient];
        uint tax;

        if (isSell) {
            tax = sellTax;
        } else if (isBuy) {
            tax = buyTax;
        } else if(!isBuy && !isSell) { 
            tax = transferTax; 
        } else {
            uint256 contractBalanceRecepient = balanceOf(recipient);
            if (!excludedFromWalletLimitsAccount) {
                require(
                    contractBalanceRecepient + amount <= maxWalletBalance,
                    "Exceeds maximum wallet token amount."
                );
            }
        }

        if (
            (sender != _dexPairAddress) &&
            (!manualSwap) &&
            (!_isSwappingContractModifier)
        ) _swapContractToken(false);
        uint contractToken = _calculateFee(
            amount,
            tax,
            taxPct
        );
        uint taxedAmount = amount - contractToken;

        _balances[sender] -= amount;
        _balances[address(this)] += contractToken;
        _balances[recipient] += taxedAmount;

        emit Transfer(sender, recipient, taxedAmount);
    }

    /**
     * @notice Calculates fee based of set amounts
     * @param amount The amount to calculate fee on
     * @param tax The tax to calculate fee with
     * @param taxPercent The tax percent to calculate fee with
     */
    function _calculateFee(
        uint amount,
        uint tax,
        uint taxPercent
    ) internal pure returns (uint) {
        return
            (amount * tax * taxPercent) / (TAX_DENOMINATOR * TAX_DENOMINATOR);
    }

    /**
     * @notice Transfer amount of tokens without fees.
     * @dev In feelessTransfer, there isn't limit as well.
     * @param sender The address of user to send tokens.
     * @param recipient The address of user to be recieveid tokens.
     * @param amount The token amount to transfer.
     */
    function _feelessTransfer(
        address sender,
        address recipient,
        uint amount
    ) internal {
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }

    /**
     * @notice Swap tokens for eth.
     * @dev This function is for swap tokens for eth.
     * @param newSwapTresholdPermille Set the swap % of LP pair holdings.
     */
    function setSwapTreshold(
        uint newSwapTresholdPermille
    ) external onlyOwner {
        require(newSwapTresholdPermille <= 10); //MaxTreshold= 1%
        swapTreshold = newSwapTresholdPermille;
        emit SwapThresholdChange(newSwapTresholdPermille);
    }

    /**
     * @notice Set the current taxes.
     * @notice buy must be less than MAXTAXDENOMINATOR.
     * @notice sell must be less than MAXTAXDENOMINATOR.
     * @notice transfer_ must be less than MAXTAXDENOMINATOR.
     * @dev This function is for set the current taxes.
     * @param buy The buy tax.
     * @param sell The sell tax.
     * @param transfer_ The transfer tax.
     */
    function SetTaxes(
        uint buy,
        uint sell,
        uint transfer_
    ) external onlyOwner {
        require(
            buy <= MAXTAXDENOMINATOR &&
                sell <= MAXTAXDENOMINATOR &&
                transfer_ <= MAXTAXDENOMINATOR,
            "Tax exceeds maxTax"
        );

        buyTax = buy;
        sellTax = sell;
        transferTax = transfer_;
        emit OnSetTaxes(buy, sell, transfer_);
    }

    /**
     * @dev Swaps contract tokens based on various parameters.
     * @param ignoreLimits Whether to ignore the token swap limits.
     */
    function _swapContractToken(bool ignoreLimits) internal lockTheSwap {
        uint contractBalance = _balances[address(this)];
        uint totalTax = taxPct;
        uint tokensToSwap = (_balances[_dexPairAddress] * swapTreshold) / 1000;

        if (totalTax == 0) return;

        if (ignoreLimits) {
            tokensToSwap = _balances[address(this)];
        } else if (contractBalance < tokensToSwap) {
            return;
        }

        _swapTokenForETH(tokensToSwap);

        if (tokensToSwap != 0) {
            (bool sent, ) = taxWallet.call{value: address(this).balance}("");
            require(sent, "Failed to send ETH to Insurance wallet");
        }
    }

    /**
     * @notice Swap tokens for eth.
     * @dev This function is for swap tokens for eth.
     * @param amount The token amount to swap.
     */
    function _swapTokenForETH(uint amount) private {
        _approve(address(this), address(_dexRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _dexRouter.WETH();

        try
            _dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
                amount,
                0,
                path,
                address(this),
                block.timestamp
            )
        {} catch {}
    }

    /**
     * @notice Add initial liquidity to dex.
     * @dev This function is for add liquidity to dex.
     */
    function _addInitLiquidity() private {
        uint tokenAmount = balanceOf(address(this));
        _approve(address(this), address(_dexRouter), tokenAmount);
        _dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            tokenAmount,
            0,
            0,
            deployer,
            block.timestamp
        );
    }

    /**
     * @notice Get Burned tokens.
     * @dev This function is for get burned tokens.
     */
    function getBurnedTokens() public view returns (uint) {
        return _balances[address(0xdead)];
    }

    /**
     * @notice Get circulating supply.
     * @dev This function is for get circulating supply.
     */
    function getCirculatingSupply() public view returns (uint) {
        return InitialSupply - _balances[address(0xdead)];
    }

    /**
     * @notice Set the current Pair.
     * @dev This function is for set the current Pair.
     * @param Pair The pair address.
     * @param Add The status of add or remove.
     */
    function SetPair(address Pair, bool Add) internal {
        require(Pair != _dexPairAddress, "can't readd pair");
        require(Pair != address(0), "Address should not be 0");
        isPair[Pair] = Add;
        emit NewPairSet(Pair, Add);
    }

    /**
     * @notice Add a pair.
     * @dev This function is for add a pair.
     * @param Pair The pair address.
     */
    function AddPair(address Pair) external onlyOwner {
        SetPair(Pair, true);
    }

    /**
     * @notice Add a pair.
     * @dev This function is for add a pair.
     * @param Pair The pair address.
     */
    function RemovePair(address Pair) external onlyOwner {
        SetPair(Pair, false);
    }

    /**
     * @notice Set Manual Swap Mode
     * @dev This function is for set manual swap mode.
     * @param manual The status of manual swap mode.
     */
    function SwitchManualSwap(bool manual) external onlyOwner {
        manualSwap = manual;
        emit ManualSwapChange(manual);
    }

    /**
     * @notice Swap contract tokens.
     * @dev This function is for swap contract tokens.
     * @param all The status of swap all tokens in contract.
     */
    function SwapContractToken(bool all) external onlyOwner {
        _swapContractToken(all);
        emit OwnerSwap();
    }

    /**
     * @notice Set a new router address
     * @dev This function is for set a new router address.
     * @param _newdex The new router address.
     */
    function SetNewRouter(address _newdex) external onlyOwner {
        require(_newdex != address(0), "Address should not be 0");
        require(_newdex != dexRouter, "Address is same");
        dexRouter = _newdex;
        emit NewRouterSet(_newdex);
    }

    /**
     * @notice Set new tax receiver wallet.
     * @dev This function is for set new tax receiver wallet.
     * @param NewTaxWallet The new tax wallet address.
     */
    function SetFeeWallets(
        address NewTaxWallet
    ) external onlyOwner {
        require(NewTaxWallet != address(0), "Address should not be 0");

        taxWallet = NewTaxWallet;
        emit NewFeeWalletSet(NewTaxWallet);
    }

    /**
     * @notice Set Wallet Limits
     * @dev This function is for set wallet limits.
     * @param walPct The max wallet balance percent.
     * @param txnPct The max transaction amount percent.
     */
    function SetLimits(
        uint256 walPct,
        uint256 txnPct
    ) external onlyOwner {
        require(walPct >= 10, "min 0.1%");
        require(walPct <= 10000, "max 100%");
        maxWalletBalance = (InitialSupply * walPct) / 10000;
        emit MaxWalletBalanceUpdated(walPct);

        require(txnPct >= 10, "min 0.1%");
        require(txnPct <= 10000, "max 100%");
        maxTransactionAmount = (InitialSupply * txnPct) / 10000;
        emit MaxTransactionAmountUpdated(txnPct);
    }

    /**
     * @notice AirDrop Tokens
     * @dev This function is for airdrop tokens.
     * @param accounts The array of address to be airdroped.
     * @param amounts The array of amount to be airdroped.
     */
    function Airdropper(
        address[] calldata accounts,
        uint256[] calldata amounts
    ) external onlyOwner {
        uint256 length = accounts.length;
        require(length == amounts.length, "array length mismatched");
        uint256 airdropAmount = 0;

        for (uint256 i = 0; i < length; ++i) {
            // updating balance directly instead of calling transfer to save gas
            _balances[accounts[i]] += amounts[i];
            airdropAmount += amounts[i];
            emit Transfer(msg.sender, accounts[i], amounts[i]);
        }
        _balances[msg.sender] -= airdropAmount;

        emit TokensAirdroped(msg.sender, length, airdropAmount);
    }

    /**
     * @notice Set to exclude an address from fees.
     * @dev This function is for set to exclude an address from fees.
     * @param account The address of user to be excluded from fees.
     * @param exclude The status of exclude.
     */
    function ExcludeAccountFromFees(
        address account,
        bool exclude
    ) external onlyOwner {
        require(account != address(this), "can't Include the contract");
        require(account != address(0), "Address should not be 0");
        excludedFromFees[account] = exclude;
        emit ExcludeAccount(account, exclude);
    }

    /**
     * @notice Set to exclude an address from transaction limits.
     * @dev This function is for set to exclude an address from transaction limits.
     * @param account The address of user to be excluded from transaction limits.
     * @param exclude The status of exclude.
     */
    function SetExcludedAccountFromTransactionLimits(
        address account,
        bool exclude
    ) external onlyOwner {
        require(account != address(0), "Address should not be 0");
        excludedFromTransactionLimits[account] = exclude;
        emit ExcludeFromTransactionLimits(account, exclude);
    }

    /**
     * @notice Set to exclude an address from wallet limits.
     * @dev This function is for set to exclude an address from wallet limits.
     * @param account The address of user to be excluded from wallet limits.
     * @param exclude The status of exclude.
     */
    function SetExcludedAccountFromWalletLimits(
        address account,
        bool exclude
    ) external onlyOwner {
        require(account != address(0), "Address should not be 0");
        excludedFromWalletLimits[account] = exclude;
        emit ExcludeFromWalletLimits(account, exclude);
    }

    /**
     * @notice Used to start trading.
     * @dev This function is for used to start trading.
     */
    function SetupEnableTrading() external onlyOwner {
        require(LaunchBlock == 0, "AlreadyLaunched");

        _dexRouter = IdexRouter(dexRouter);
        _dexPairAddress = IdexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        isPair[_dexPairAddress] = true;

        _addInitLiquidity();

        LaunchBlock = block.number;

        maxWalletBalance = (InitialSupply * 12) / 10000; // 0.12%
        maxTransactionAmount = (InitialSupply * 12) / 10000; // 0.12%
        emit OnEnableTrading();
    }

    receive() external payable {}

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

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

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

    function totalSupply() external pure override returns (uint) {
        return InitialSupply;
    }

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

    function isExcludedFromWalletLimits(
        address account
    ) public view returns (bool) {
        return excludedFromWalletLimits[account];
    }

    function isExcludedFromTransferLimits(
        address account
    ) public view returns (bool) {
        return excludedFromTransactionLimits[account];
    }

    function transfer(
        address recipient,
        uint amount
    ) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(
        address _owner,
        address spender
    ) external view override returns (uint) {
        return _allowances[_owner][spender];
    }

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

    function _approve(address _owner, address spender, uint amount) private {
        require(_owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");
        _allowances[_owner][spender] = amount;
        emit Approval(_owner, spender, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint amount
    ) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");
        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

    function increaseAllowance(
        address spender,
        uint addedValue
    ) external returns (bool) {
        _approve(
            msg.sender,
            spender,
            _allowances[msg.sender][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint subtractedValue
    ) external returns (bool) {
        uint currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }

    /**
     * @notice Used to remove excess ETH from contract
     * @dev This function is for used to remove excess ETH from contract.
     * @param amountPercentage The amount percentage to recover.
     */
    function emergencyETHrecovery(
        uint256 amountPercentage
    ) external onlyOwner {
        uint256 amountETH = address(this).balance;
        (bool sent, ) = msg.sender.call{
            value: (amountETH * amountPercentage) / 100
        }("");
        sent = true;
        emit RecoverETH();
    }

    /**
     * @notice Used to remove excess Tokens from contract
     * @dev This function is for used to remove excess Tokens from contract.
     * @param tokenAddress The token address to recover.
     * @param amountPercentage The amount percentage to recover.
     */
    function emergencyTokenrecovery(
        address tokenAddress,
        uint256 amountPercentage
    ) external onlyOwner {
        require(tokenAddress != address(0));
        require(tokenAddress != address(_dexPairAddress));
        IERC20 token = IERC20(tokenAddress);
        uint256 tokenAmount = token.balanceOf(address(this));
        token.transfer(msg.sender, (tokenAmount * amountPercentage) / 100);

        emit RecoverTokens(tokenAmount);
    }
}

File 2 of 3 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
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");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}

File 3 of 3 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_DexRouter","type":"address"},{"internalType":"address","name":"_taxWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeFromTransactionLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeFromWalletLimits","type":"event"},{"anonymous":false,"inputs":[],"name":"LimitTo20PercentLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"ManualSwapChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"percent","type":"uint256"}],"name":"MaxWalletBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"taxwallet","type":"address"}],"name":"NewFeeWalletSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"Pair","type":"address"},{"indexed":true,"internalType":"bool","name":"Add","type":"bool"}],"name":"NewPairSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newdex","type":"address"}],"name":"NewRouterSet","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer_","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"OverLiquifiedThresholdChange","type":"event"},{"anonymous":false,"inputs":[],"name":"OwnerSwap","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":[],"name":"RecoverETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RecoverTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"SwapThresholdChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint256","name":"total","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensAirdroped","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":"AUTHENTICATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"Pair","type":"address"}],"name":"AddPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Airdropper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"Pair","type":"address"}],"name":"RemovePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"SetExcludedAccountFromTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"SetExcludedAccountFromWalletLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"NewTaxWallet","type":"address"}],"name":"SetFeeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"walPct","type":"uint256"},{"internalType":"uint256","name":"txnPct","type":"uint256"}],"name":"SetLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newdex","type":"address"}],"name":"SetNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer_","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SetupEnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"all","type":"bool"}],"name":"SwapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"emergencyETHrecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"emergencyTokenrecovery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromTransferLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromWalletLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526101906007556101906008556101906009556008600a553480156200002857600080fd5b506040516200304d3803806200304d8339810160408190526200004b9162000335565b62000056336200017f565b60128054336001600160a01b03199182161782556011805482166001600160a01b0385811691909117909155600f80549092169085161790556200009c90600a62000482565b620000ad9064e8d4a510006200049a565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620000f06012600a62000482565b620001019064e8d4a510006200049a565b60405190815260200160405180910390a3604080516060808201835233808352600f546001600160a01b0316602080850191909152308486018190528551808501875283815261dead818401819052818801839052875195860188529385529184019290925293820152620001779290620001cf565b5050620004e6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b60038110156200023a57600160056000868460038110620001f757620001f7620004b4565b602090810291909101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556200023281620004ca565b9050620001d2565b5060005b6003811015620002a657600160036000858460038110620002635762000263620004b4565b602090810291909101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556200029e81620004ca565b90506200023e565b5060005b60038110156200031257600160046000848460038110620002cf57620002cf620004b4565b602090810291909101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556200030a81620004ca565b9050620002aa565b50505050565b80516001600160a01b03811681146200033057600080fd5b919050565b600080604083850312156200034957600080fd5b620003548362000318565b9150620003646020840162000318565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003c4578160001904821115620003a857620003a86200036d565b80851615620003b657918102915b93841c939080029062000388565b509250929050565b600082620003dd575060016200047c565b81620003ec575060006200047c565b8160018114620004055760028114620004105762000430565b60019150506200047c565b60ff8411156200042457620004246200036d565b50506001821b6200047c565b5060208310610133831016604e8410600b841016171562000455575081810a6200047c565b62000461838362000383565b80600019048211156200047857620004786200036d565b0290505b92915050565b60006200049360ff841683620003cc565b9392505050565b80820281158282048414176200047c576200047c6200036d565b634e487b7160e01b600052603260045260246000fd5b600060018201620004df57620004df6200036d565b5060010190565b612b5780620004f66000396000f3fe6080604052600436106102765760003560e01c806384f214531161014f578063c3f4f54f116100c1578063dd62ed3e1161007a578063dd62ed3e146107e1578063e0d2f9eb14610827578063e52fb9ec14610847578063e5e31b131461085d578063ec87621c1461088d578063f2fde38b146108c157600080fd5b8063c3f4f54f14610706578063c8c8ebe414610745578063cc1776d31461075b578063cfd1940e14610771578063d10aab4714610791578063dbe66ca0146107b157600080fd5b80639697519e116101135780639697519e1461063c57806397e78f351461065c578063a457c2d71461067c578063a9059cbb1461069c578063b65c5e8d146106bc578063bbde77c1146106f057600080fd5b806384f2145314610571578063868b0141146105915780638912168b146105b15780638da5cb5b146105ea57806395d89b411461061257600080fd5b80634e96d954116101e857806370a08231116101ac57806370a08231146104bb578063715018a6146104f157806378228571146105065780637b9e987a146105265780638124f7ac1461053b57806384168dda1461055157600080fd5b80634e96d9541461040b5780634f7041a51461042b57806351bc3c85146104415780636940213a146104625780636edefa101461049b57600080fd5b806323b872dd1161023a57806323b872dd1461035a5780632b112e491461037a578063313ce5671461038f57806339509351146103ab5780634362e002146103cb57806345a35184146103eb57600080fd5b8063065f4b411461028257806306fdde03146102a4578063095ea7b3146102e757806318160ddd146103175780631b6470271461033a57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506102a261029d366004612578565b6108e1565b005b3480156102b057600080fd5b506040805180820190915260088152676e737572616e636560c01b60208201525b6040516102de9190612591565b60405180910390f35b3480156102f357600080fd5b506103076103023660046125f4565b610979565b60405190151581526020016102de565b34801561032357600080fd5b5061032c610990565b6040519081526020016102de565b34801561034657600080fd5b506102a2610355366004612620565b6109b2565b34801561036657600080fd5b5061030761037536600461264c565b610a77565b34801561038657600080fd5b5061032c610b0e565b34801561039b57600080fd5b50604051601281526020016102de565b3480156103b757600080fd5b506103076103c63660046125f4565b610b62565b3480156103d757600080fd5b506102a26103e636600461269b565b610b99565b3480156103f757600080fd5b506102a261040636600461270b565b610bd6565b34801561041757600080fd5b506102a2610426366004612777565b610dc7565b34801561043757600080fd5b5061032c60075481565b34801561044d57600080fd5b5060125461030790600160a81b900460ff1681565b34801561046e57600080fd5b5061030761047d366004612777565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156104a757600080fd5b506102a26104b6366004612794565b610e3f565b3480156104c757600080fd5b5061032c6104d6366004612777565b6001600160a01b031660009081526001602052604090205490565b3480156104fd57600080fd5b506102a261100f565b34801561051257600080fd5b506102a26105213660046127b6565b611023565b34801561053257600080fd5b506102a26110a5565b34801561054757600080fd5b5061032c60095481565b34801561055d57600080fd5b506102a261056c3660046125f4565b611341565b34801561057d57600080fd5b506102a261058c366004612777565b6114ad565b34801561059d57600080fd5b506102a26105ac36600461269b565b6114c3565b3480156105bd57600080fd5b506103076105cc366004612777565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105f657600080fd5b506000546040516001600160a01b0390911681526020016102de565b34801561061e57600080fd5b506040805180820190915260018152603760f91b60208201526102d1565b34801561064857600080fd5b506102a2610657366004612777565b611523565b34801561066857600080fd5b506102a2610677366004612777565b611536565b34801561068857600080fd5b506103076106973660046125f4565b6115fe565b3480156106a857600080fd5b506103076106b73660046125f4565b61167a565b3480156106c857600080fd5b5061032c7f190acb99f29d9641c9ad47655049f2d7c78fcbc837d62e7981d28c871f72208181565b3480156106fc57600080fd5b5061032c600d5481565b34801561071257600080fd5b5061dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5461032c565b34801561075157600080fd5b5061032c600c5481565b34801561076757600080fd5b5061032c60085481565b34801561077d57600080fd5b506102a261078c366004612578565b611687565b34801561079d57600080fd5b506102a26107ac3660046127b6565b6116d2565b3480156107bd57600080fd5b506103076107cc366004612777565b60056020526000908152604090205460ff1681565b3480156107ed57600080fd5b5061032c6107fc3660046127ef565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561083357600080fd5b506102a26108423660046127b6565b611754565b34801561085357600080fd5b5061032c600a5481565b34801561086957600080fd5b50610307610878366004612777565b60066020526000908152604090205460ff1681565b34801561089957600080fd5b5061032c7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b3480156108cd57600080fd5b506102a26108dc366004612777565b61182e565b6108e96118a4565b4760003360646108f98585612833565b610903919061284a565b604051600081818185875af1925050503d806000811461093f576040519150601f19603f3d011682016040523d82523d6000602084013e610944565b606091505b5050604051600192507fbfeaf8c13ada34fe89b506c8975a67daaf69c220fef97229c731f6cf3b3e741e9150600090a1505050565b60006109863384846118fe565b5060015b92915050565b600061099e6012600a612950565b6109ad9064e8d4a51000612833565b905090565b6109ba6118a4565b6103e883111580156109ce57506103e88211155b80156109dc57506103e88111155b610a225760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b60448201526064015b60405180910390fd5b60078390556008829055600981905560408051848152602081018490529081018290527fa3c3815420e42dfb9d69aa19d4d1f3b3da7dbcffab3d42480f9649e4dc74cb9c9060600160405180910390a1505050565b6000610a848484846119f1565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610aef5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610a19565b610b038533610afe868561295f565b6118fe565b506001949350505050565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610b496012600a612950565b610b589064e8d4a51000612833565b6109ad919061295f565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610986918590610afe908690612972565b610ba16118a4565b610baa81611b36565b6040517f703db25eb5fd328335fc797436bbbbd25d5575588bd991102facd962c4d41b9290600090a150565b610bde6118a4565b82818114610c2e5760405162461bcd60e51b815260206004820152601760248201527f6172726179206c656e677468206d69736d6174636865640000000000000000006044820152606401610a19565b6000805b82811015610d6b57848482818110610c4c57610c4c612985565b9050602002013560016000898985818110610c6957610c69612985565b9050602002016020810190610c7e9190612777565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610cad9190612972565b909155508590508482818110610cc557610cc5612985565b9050602002013582610cd79190612972565b9150868682818110610ceb57610ceb612985565b9050602002016020810190610d009190612777565b6001600160a01b0316337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110610d3d57610d3d612985565b90506020020135604051610d5391815260200190565b60405180910390a3610d648161299b565b9050610c32565b503360009081526001602052604081208054839290610d8b90849061295f565b90915550506040518190839033907f2b644e2cd640daf5b246ed5491ab2dfb5e8d9b4c6fd5398b985b5fbf1a0e25a490600090a4505050505050565b610dcf6118a4565b6001600160a01b038116610df55760405162461bcd60e51b8152600401610a19906129b4565b601180546001600160a01b0319166001600160a01b0383169081179091556040517fb28b93132ba152be3da17bc86fb4682727ebdb25caec74eab13de975e9b99c8d90600090a250565b610e476118a4565b600a821015610e835760405162461bcd60e51b81526020600482015260086024820152676d696e20302e312560c01b6044820152606401610a19565b612710821115610ec05760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610a19565b61271082610ed06012600a612950565b610edf9064e8d4a51000612833565b610ee99190612833565b610ef3919061284a565b600d556040518281527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a999060200160405180910390a1600a811015610f655760405162461bcd60e51b81526020600482015260086024820152676d696e20302e312560c01b6044820152606401610a19565b612710811115610fa25760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610a19565b61271081610fb26012600a612950565b610fc19064e8d4a51000612833565b610fcb9190612833565b610fd5919061284a565b600c556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac9060200160405180910390a15050565b6110176118a4565b6110216000611ca3565b565b61102b6118a4565b6001600160a01b0382166110515760405162461bcd60e51b8152600401610a19906129b4565b6001600160a01b038216600081815260046020526040808220805460ff191685151590811790915590519092917ff97938e9b0678b0c6364c122dba242f377461e90bfc58e36611fafe49de26cf391a35050565b6110ad6118a4565b600b54156110ef5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610a19565b600f54600e80546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f91906129eb565b6001600160a01b031663c9c6539630600e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f591906129eb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611242573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126691906129eb565b601080546001600160a01b0319166001600160a01b039290921691821790556000908152600660205260409020805460ff191660011790556112a6611cf3565b43600b556127106112b96012600a612950565b6112c89064e8d4a51000612833565b6112d390600c612833565b6112dd919061284a565b600d556127106112ef6012600a612950565b6112fe9064e8d4a51000612833565b61130990600c612833565b611313919061284a565b600c556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b6113496118a4565b6001600160a01b03821661135c57600080fd5b6010546001600160a01b039081169083160361137757600080fd5b6040516370a0823160e01b815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156113c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e49190612a08565b90506001600160a01b03821663a9059cbb3360646114028786612833565b61140c919061284a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147b9190612a21565b5060405181907f567295618043fa7c5a9781a71d338407d59e2f8f20079734425da602e2ce9c2290600090a250505050565b6114b56118a4565b6114c0816001611db6565b50565b6114cb6118a4565b60128054821515600160a81b0260ff60a81b199091161790556040517f3db17fb4d29ca5a33dc4750f7205263855fb8b82cc89d6c418a04b60f58b429d9061151890831515815260200190565b60405180910390a150565b61152b6118a4565b6114c0816000611db6565b61153e6118a4565b6001600160a01b0381166115645760405162461bcd60e51b8152600401610a19906129b4565b600f546001600160a01b03908116908216036115b45760405162461bcd60e51b815260206004820152600f60248201526e416464726573732069732073616d6560881b6044820152606401610a19565b600f80546001600160a01b0319166001600160a01b0383169081179091556040517f117661539ed67d391940fa7b78853c234b4e9a40d616d75923ae8db26672833a90600090a250565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156116615760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610a19565b6116703385610afe868561295f565b5060019392505050565b60006109863384846119f1565b61168f6118a4565b600a81111561169d57600080fd5b600a8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001611518565b6116da6118a4565b6001600160a01b0382166117005760405162461bcd60e51b8152600401610a19906129b4565b6001600160a01b038216600081815260036020526040808220805460ff191685151590811790915590519092917f5da21567fb41924febf168d8f55dfcc045e2f686ae380b38a2132493e49713ac91a35050565b61175c6118a4565b306001600160a01b038316036117b45760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610a19565b6001600160a01b0382166117da5760405162461bcd60e51b8152600401610a19906129b4565b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed491a35050565b6118366118a4565b6001600160a01b03811661189b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a19565b6114c081611ca3565b6000546001600160a01b031633146110215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a19565b6001600160a01b0383166119485760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610a19565b6001600160a01b0382166119905760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610a19565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a3c5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610a19565b6001600160a01b038216611a855760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610a19565b6001600160a01b03831660009081526005602052604090205460ff1680611ac457506001600160a01b03821660009081526005602052604090205460ff165b15611ad957611ad4838383611e81565b505050565b6000600b5411611b2b5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610a19565b611ad4838383611f94565b6012805460ff60a01b1916600160a01b1790553060009081526001602052604080822054600a546010546001600160a01b031684529183205490926127109290916103e891611b8491612833565b611b8e919061284a565b905081600003611ba057505050611c93565b8315611bbc575030600090815260016020526040902054611bcc565b80831015611bcc57505050611c93565b611bd5816123f4565b8015611c8f576011546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611c28576040519150601f19603f3d011682016040523d82523d6000602084013e611c2d565b606091505b5050905080611c8d5760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f2073656e642045544820746f20496e737572616e6365206044820152651dd85b1b195d60d21b6064820152608401610a19565b505b5050505b506012805460ff60a01b19169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b30600081815260016020526040902054600e549091611d1b916001600160a01b0316836118fe565b600e5460125460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990479060c40160606040518083038185885af1158015611d8b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611db09190612a3e565b50505050565b6010546001600160a01b0390811690831603611e075760405162461bcd60e51b815260206004820152601060248201526f31b0b713ba103932b0b232103830b4b960811b6044820152606401610a19565b6001600160a01b038216611e2d5760405162461bcd60e51b8152600401610a19906129b4565b6001600160a01b038216600081815260066020526040808220805460ff191685151590811790915590519092917f6765bb5e5ecad4581ce8f9322a9c218e75a54a7c4af6217752833adb834511ac91a35050565b6001600160a01b03831660009081526001602052604090205481811015611ee55760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610a19565b6001600160a01b03841660009081526001602052604081208054849290611f0d90849061295f565b90915550506001600160a01b03831660009081526001602052604081208054849290611f3a908490612972565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f8691815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526001602052604090205481811015611ff85760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610a19565b6001600160a01b03841660009081526003602052604081205460ff168061203757506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b0386166000908152600460205260408120549192509060ff168061207a57506001600160a01b03851660009081526004602052604090205460ff165b6001600160a01b03871660009081526006602052604090205490915060ff1680156120a3575081155b1561215a578061211057600c548411156121105760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a19565b6001600160a01b038516600090815260016020526040902054600d546121368683612972565b11156121545760405162461bcd60e51b8152600401610a1990612a6c565b506121fd565b6001600160a01b03851660009081526006602052604090205460ff168015612180575080155b156121fd57600c548411156121fd5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610a19565b6001600160a01b0380871660009081526006602052604080822054928816825281205460ff928316921690811561223757506008546122ab565b821561224657506007546122ab565b82158015612252575081155b1561226057506009546122ab565b6001600160a01b038816600090815260016020526040902054856122a957600d5461228b8983612972565b11156122a95760405162461bcd60e51b8152600401610a1990612a6c565b505b6010546001600160a01b038a81169116148015906122d35750601254600160a81b900460ff16155b80156122e95750601254600160a01b900460ff16155b156122f8576122f86000611b36565b60006123078883612710612543565b90506000612315828a61295f565b6001600160a01b038c16600090815260016020526040812080549293508b9290919061234290849061295f565b90915550503060009081526001602052604081208054849290612366908490612972565b90915550506001600160a01b038a1660009081526001602052604081208054839290612393908490612972565b92505081905550896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123df91815260200190565b60405180910390a35050505050505050505050565b600e5461240c9030906001600160a01b0316836118fe565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061244157612441612985565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be91906129eb565b816001815181106124d1576124d1612985565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b815291169063791ac94790612517908590600090869030904290600401612ab0565b600060405180830381600087803b15801561253157600080fd5b505af1925050508015611ad457505050565b600061255161271080612833565b8261255c8587612833565b6125669190612833565b612570919061284a565b949350505050565b60006020828403121561258a57600080fd5b5035919050565b600060208083528351808285015260005b818110156125be578581018301518582016040015282016125a2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114c057600080fd5b6000806040838503121561260757600080fd5b8235612612816125df565b946020939093013593505050565b60008060006060848603121561263557600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561266157600080fd5b833561266c816125df565b9250602084013561267c816125df565b929592945050506040919091013590565b80151581146114c057600080fd5b6000602082840312156126ad57600080fd5b81356126b88161268d565b9392505050565b60008083601f8401126126d157600080fd5b50813567ffffffffffffffff8111156126e957600080fd5b6020830191508360208260051b850101111561270457600080fd5b9250929050565b6000806000806040858703121561272157600080fd5b843567ffffffffffffffff8082111561273957600080fd5b612745888389016126bf565b9096509450602087013591508082111561275e57600080fd5b5061276b878288016126bf565b95989497509550505050565b60006020828403121561278957600080fd5b81356126b8816125df565b600080604083850312156127a757600080fd5b50508035926020909101359150565b600080604083850312156127c957600080fd5b82356127d4816125df565b915060208301356127e48161268d565b809150509250929050565b6000806040838503121561280257600080fd5b823561280d816125df565b915060208301356127e4816125df565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761098a5761098a61281d565b60008261286757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156128a757816000190482111561288d5761288d61281d565b8085161561289a57918102915b93841c9390800290612871565b509250929050565b6000826128be5750600161098a565b816128cb5750600061098a565b81600181146128e157600281146128eb57612907565b600191505061098a565b60ff8411156128fc576128fc61281d565b50506001821b61098a565b5060208310610133831016604e8410600b841016171561292a575081810a61098a565b612934838361286c565b80600019048211156129485761294861281d565b029392505050565b60006126b860ff8416836128af565b8181038181111561098a5761098a61281d565b8082018082111561098a5761098a61281d565b634e487b7160e01b600052603260045260246000fd5b6000600182016129ad576129ad61281d565b5060010190565b60208082526017908201527f416464726573732073686f756c64206e6f742062652030000000000000000000604082015260600190565b6000602082840312156129fd57600080fd5b81516126b8816125df565b600060208284031215612a1a57600080fd5b5051919050565b600060208284031215612a3357600080fd5b81516126b88161268d565b600080600060608486031215612a5357600080fd5b8351925060208401519150604084015190509250925092565b60208082526024908201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6040820152633ab73a1760e11b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b005784516001600160a01b031683529383019391830191600101612adb565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220bd9382188f12bf4f4937936481155d70be6fe2c6cfa4af20bb11aa28a204a02a64736f6c634300081500330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000a576463273e4a459b39a518be7fc79ebecf6b7c7

Deployed Bytecode

0x6080604052600436106102765760003560e01c806384f214531161014f578063c3f4f54f116100c1578063dd62ed3e1161007a578063dd62ed3e146107e1578063e0d2f9eb14610827578063e52fb9ec14610847578063e5e31b131461085d578063ec87621c1461088d578063f2fde38b146108c157600080fd5b8063c3f4f54f14610706578063c8c8ebe414610745578063cc1776d31461075b578063cfd1940e14610771578063d10aab4714610791578063dbe66ca0146107b157600080fd5b80639697519e116101135780639697519e1461063c57806397e78f351461065c578063a457c2d71461067c578063a9059cbb1461069c578063b65c5e8d146106bc578063bbde77c1146106f057600080fd5b806384f2145314610571578063868b0141146105915780638912168b146105b15780638da5cb5b146105ea57806395d89b411461061257600080fd5b80634e96d954116101e857806370a08231116101ac57806370a08231146104bb578063715018a6146104f157806378228571146105065780637b9e987a146105265780638124f7ac1461053b57806384168dda1461055157600080fd5b80634e96d9541461040b5780634f7041a51461042b57806351bc3c85146104415780636940213a146104625780636edefa101461049b57600080fd5b806323b872dd1161023a57806323b872dd1461035a5780632b112e491461037a578063313ce5671461038f57806339509351146103ab5780634362e002146103cb57806345a35184146103eb57600080fd5b8063065f4b411461028257806306fdde03146102a4578063095ea7b3146102e757806318160ddd146103175780631b6470271461033a57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506102a261029d366004612578565b6108e1565b005b3480156102b057600080fd5b506040805180820190915260088152676e737572616e636560c01b60208201525b6040516102de9190612591565b60405180910390f35b3480156102f357600080fd5b506103076103023660046125f4565b610979565b60405190151581526020016102de565b34801561032357600080fd5b5061032c610990565b6040519081526020016102de565b34801561034657600080fd5b506102a2610355366004612620565b6109b2565b34801561036657600080fd5b5061030761037536600461264c565b610a77565b34801561038657600080fd5b5061032c610b0e565b34801561039b57600080fd5b50604051601281526020016102de565b3480156103b757600080fd5b506103076103c63660046125f4565b610b62565b3480156103d757600080fd5b506102a26103e636600461269b565b610b99565b3480156103f757600080fd5b506102a261040636600461270b565b610bd6565b34801561041757600080fd5b506102a2610426366004612777565b610dc7565b34801561043757600080fd5b5061032c60075481565b34801561044d57600080fd5b5060125461030790600160a81b900460ff1681565b34801561046e57600080fd5b5061030761047d366004612777565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156104a757600080fd5b506102a26104b6366004612794565b610e3f565b3480156104c757600080fd5b5061032c6104d6366004612777565b6001600160a01b031660009081526001602052604090205490565b3480156104fd57600080fd5b506102a261100f565b34801561051257600080fd5b506102a26105213660046127b6565b611023565b34801561053257600080fd5b506102a26110a5565b34801561054757600080fd5b5061032c60095481565b34801561055d57600080fd5b506102a261056c3660046125f4565b611341565b34801561057d57600080fd5b506102a261058c366004612777565b6114ad565b34801561059d57600080fd5b506102a26105ac36600461269b565b6114c3565b3480156105bd57600080fd5b506103076105cc366004612777565b6001600160a01b031660009081526004602052604090205460ff1690565b3480156105f657600080fd5b506000546040516001600160a01b0390911681526020016102de565b34801561061e57600080fd5b506040805180820190915260018152603760f91b60208201526102d1565b34801561064857600080fd5b506102a2610657366004612777565b611523565b34801561066857600080fd5b506102a2610677366004612777565b611536565b34801561068857600080fd5b506103076106973660046125f4565b6115fe565b3480156106a857600080fd5b506103076106b73660046125f4565b61167a565b3480156106c857600080fd5b5061032c7f190acb99f29d9641c9ad47655049f2d7c78fcbc837d62e7981d28c871f72208181565b3480156106fc57600080fd5b5061032c600d5481565b34801561071257600080fd5b5061dead60005260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5461032c565b34801561075157600080fd5b5061032c600c5481565b34801561076757600080fd5b5061032c60085481565b34801561077d57600080fd5b506102a261078c366004612578565b611687565b34801561079d57600080fd5b506102a26107ac3660046127b6565b6116d2565b3480156107bd57600080fd5b506103076107cc366004612777565b60056020526000908152604090205460ff1681565b3480156107ed57600080fd5b5061032c6107fc3660046127ef565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561083357600080fd5b506102a26108423660046127b6565b611754565b34801561085357600080fd5b5061032c600a5481565b34801561086957600080fd5b50610307610878366004612777565b60066020526000908152604090205460ff1681565b34801561089957600080fd5b5061032c7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b3480156108cd57600080fd5b506102a26108dc366004612777565b61182e565b6108e96118a4565b4760003360646108f98585612833565b610903919061284a565b604051600081818185875af1925050503d806000811461093f576040519150601f19603f3d011682016040523d82523d6000602084013e610944565b606091505b5050604051600192507fbfeaf8c13ada34fe89b506c8975a67daaf69c220fef97229c731f6cf3b3e741e9150600090a1505050565b60006109863384846118fe565b5060015b92915050565b600061099e6012600a612950565b6109ad9064e8d4a51000612833565b905090565b6109ba6118a4565b6103e883111580156109ce57506103e88211155b80156109dc57506103e88111155b610a225760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b60448201526064015b60405180910390fd5b60078390556008829055600981905560408051848152602081018490529081018290527fa3c3815420e42dfb9d69aa19d4d1f3b3da7dbcffab3d42480f9649e4dc74cb9c9060600160405180910390a1505050565b6000610a848484846119f1565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610aef5760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b6044820152606401610a19565b610b038533610afe868561295f565b6118fe565b506001949350505050565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54610b496012600a612950565b610b589064e8d4a51000612833565b6109ad919061295f565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610986918590610afe908690612972565b610ba16118a4565b610baa81611b36565b6040517f703db25eb5fd328335fc797436bbbbd25d5575588bd991102facd962c4d41b9290600090a150565b610bde6118a4565b82818114610c2e5760405162461bcd60e51b815260206004820152601760248201527f6172726179206c656e677468206d69736d6174636865640000000000000000006044820152606401610a19565b6000805b82811015610d6b57848482818110610c4c57610c4c612985565b9050602002013560016000898985818110610c6957610c69612985565b9050602002016020810190610c7e9190612777565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610cad9190612972565b909155508590508482818110610cc557610cc5612985565b9050602002013582610cd79190612972565b9150868682818110610ceb57610ceb612985565b9050602002016020810190610d009190612777565b6001600160a01b0316337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110610d3d57610d3d612985565b90506020020135604051610d5391815260200190565b60405180910390a3610d648161299b565b9050610c32565b503360009081526001602052604081208054839290610d8b90849061295f565b90915550506040518190839033907f2b644e2cd640daf5b246ed5491ab2dfb5e8d9b4c6fd5398b985b5fbf1a0e25a490600090a4505050505050565b610dcf6118a4565b6001600160a01b038116610df55760405162461bcd60e51b8152600401610a19906129b4565b601180546001600160a01b0319166001600160a01b0383169081179091556040517fb28b93132ba152be3da17bc86fb4682727ebdb25caec74eab13de975e9b99c8d90600090a250565b610e476118a4565b600a821015610e835760405162461bcd60e51b81526020600482015260086024820152676d696e20302e312560c01b6044820152606401610a19565b612710821115610ec05760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610a19565b61271082610ed06012600a612950565b610edf9064e8d4a51000612833565b610ee99190612833565b610ef3919061284a565b600d556040518281527f9cbd2e55e2abf49d29273c1b9fb343c2828844b2aec156cfe2aec98ae1b72a999060200160405180910390a1600a811015610f655760405162461bcd60e51b81526020600482015260086024820152676d696e20302e312560c01b6044820152606401610a19565b612710811115610fa25760405162461bcd60e51b81526020600482015260086024820152676d6178203130302560c01b6044820152606401610a19565b61271081610fb26012600a612950565b610fc19064e8d4a51000612833565b610fcb9190612833565b610fd5919061284a565b600c556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac9060200160405180910390a15050565b6110176118a4565b6110216000611ca3565b565b61102b6118a4565b6001600160a01b0382166110515760405162461bcd60e51b8152600401610a19906129b4565b6001600160a01b038216600081815260046020526040808220805460ff191685151590811790915590519092917ff97938e9b0678b0c6364c122dba242f377461e90bfc58e36611fafe49de26cf391a35050565b6110ad6118a4565b600b54156110ef5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e53185d5b98da1959608a1b6044820152606401610a19565b600f54600e80546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561114b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116f91906129eb565b6001600160a01b031663c9c6539630600e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f591906129eb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611242573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126691906129eb565b601080546001600160a01b0319166001600160a01b039290921691821790556000908152600660205260409020805460ff191660011790556112a6611cf3565b43600b556127106112b96012600a612950565b6112c89064e8d4a51000612833565b6112d390600c612833565b6112dd919061284a565b600d556127106112ef6012600a612950565b6112fe9064e8d4a51000612833565b61130990600c612833565b611313919061284a565b600c556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a1565b6113496118a4565b6001600160a01b03821661135c57600080fd5b6010546001600160a01b039081169083160361137757600080fd5b6040516370a0823160e01b815230600482015282906000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156113c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e49190612a08565b90506001600160a01b03821663a9059cbb3360646114028786612833565b61140c919061284a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147b9190612a21565b5060405181907f567295618043fa7c5a9781a71d338407d59e2f8f20079734425da602e2ce9c2290600090a250505050565b6114b56118a4565b6114c0816001611db6565b50565b6114cb6118a4565b60128054821515600160a81b0260ff60a81b199091161790556040517f3db17fb4d29ca5a33dc4750f7205263855fb8b82cc89d6c418a04b60f58b429d9061151890831515815260200190565b60405180910390a150565b61152b6118a4565b6114c0816000611db6565b61153e6118a4565b6001600160a01b0381166115645760405162461bcd60e51b8152600401610a19906129b4565b600f546001600160a01b03908116908216036115b45760405162461bcd60e51b815260206004820152600f60248201526e416464726573732069732073616d6560881b6044820152606401610a19565b600f80546001600160a01b0319166001600160a01b0383169081179091556040517f117661539ed67d391940fa7b78853c234b4e9a40d616d75923ae8db26672833a90600090a250565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156116615760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610a19565b6116703385610afe868561295f565b5060019392505050565b60006109863384846119f1565b61168f6118a4565b600a81111561169d57600080fd5b600a8190556040518181527fc075380b8410207b8cc14f0d254ab8c8a6766469631275e4500db835a1ba02cc90602001611518565b6116da6118a4565b6001600160a01b0382166117005760405162461bcd60e51b8152600401610a19906129b4565b6001600160a01b038216600081815260036020526040808220805460ff191685151590811790915590519092917f5da21567fb41924febf168d8f55dfcc045e2f686ae380b38a2132493e49713ac91a35050565b61175c6118a4565b306001600160a01b038316036117b45760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e74726163740000000000006044820152606401610a19565b6001600160a01b0382166117da5760405162461bcd60e51b8152600401610a19906129b4565b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed491a35050565b6118366118a4565b6001600160a01b03811661189b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a19565b6114c081611ca3565b6000546001600160a01b031633146110215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a19565b6001600160a01b0383166119485760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610a19565b6001600160a01b0382166119905760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610a19565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a3c5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b6044820152606401610a19565b6001600160a01b038216611a855760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b6044820152606401610a19565b6001600160a01b03831660009081526005602052604090205460ff1680611ac457506001600160a01b03821660009081526005602052604090205460ff165b15611ad957611ad4838383611e81565b505050565b6000600b5411611b2b5760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c65640000000000000000006044820152606401610a19565b611ad4838383611f94565b6012805460ff60a01b1916600160a01b1790553060009081526001602052604080822054600a546010546001600160a01b031684529183205490926127109290916103e891611b8491612833565b611b8e919061284a565b905081600003611ba057505050611c93565b8315611bbc575030600090815260016020526040902054611bcc565b80831015611bcc57505050611c93565b611bd5816123f4565b8015611c8f576011546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611c28576040519150601f19603f3d011682016040523d82523d6000602084013e611c2d565b606091505b5050905080611c8d5760405162461bcd60e51b815260206004820152602660248201527f4661696c656420746f2073656e642045544820746f20496e737572616e6365206044820152651dd85b1b195d60d21b6064820152608401610a19565b505b5050505b506012805460ff60a01b19169055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b30600081815260016020526040902054600e549091611d1b916001600160a01b0316836118fe565b600e5460125460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990479060c40160606040518083038185885af1158015611d8b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611db09190612a3e565b50505050565b6010546001600160a01b0390811690831603611e075760405162461bcd60e51b815260206004820152601060248201526f31b0b713ba103932b0b232103830b4b960811b6044820152606401610a19565b6001600160a01b038216611e2d5760405162461bcd60e51b8152600401610a19906129b4565b6001600160a01b038216600081815260066020526040808220805460ff191685151590811790915590519092917f6765bb5e5ecad4581ce8f9322a9c218e75a54a7c4af6217752833adb834511ac91a35050565b6001600160a01b03831660009081526001602052604090205481811015611ee55760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610a19565b6001600160a01b03841660009081526001602052604081208054849290611f0d90849061295f565b90915550506001600160a01b03831660009081526001602052604081208054849290611f3a908490612972565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f8691815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526001602052604090205481811015611ff85760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b6044820152606401610a19565b6001600160a01b03841660009081526003602052604081205460ff168061203757506001600160a01b03841660009081526003602052604090205460ff165b6001600160a01b0386166000908152600460205260408120549192509060ff168061207a57506001600160a01b03851660009081526004602052604090205460ff165b6001600160a01b03871660009081526006602052604090205490915060ff1680156120a3575081155b1561215a578061211057600c548411156121105760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a19565b6001600160a01b038516600090815260016020526040902054600d546121368683612972565b11156121545760405162461bcd60e51b8152600401610a1990612a6c565b506121fd565b6001600160a01b03851660009081526006602052604090205460ff168015612180575080155b156121fd57600c548411156121fd5760405162461bcd60e51b815260206004820152603a60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201527f206d617853656c6c5472616e73616374696f6e416d6f756e742e0000000000006064820152608401610a19565b6001600160a01b0380871660009081526006602052604080822054928816825281205460ff928316921690811561223757506008546122ab565b821561224657506007546122ab565b82158015612252575081155b1561226057506009546122ab565b6001600160a01b038816600090815260016020526040902054856122a957600d5461228b8983612972565b11156122a95760405162461bcd60e51b8152600401610a1990612a6c565b505b6010546001600160a01b038a81169116148015906122d35750601254600160a81b900460ff16155b80156122e95750601254600160a01b900460ff16155b156122f8576122f86000611b36565b60006123078883612710612543565b90506000612315828a61295f565b6001600160a01b038c16600090815260016020526040812080549293508b9290919061234290849061295f565b90915550503060009081526001602052604081208054849290612366908490612972565b90915550506001600160a01b038a1660009081526001602052604081208054839290612393908490612972565b92505081905550896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123df91815260200190565b60405180910390a35050505050505050505050565b600e5461240c9030906001600160a01b0316836118fe565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061244157612441612985565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561249a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124be91906129eb565b816001815181106124d1576124d1612985565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b815291169063791ac94790612517908590600090869030904290600401612ab0565b600060405180830381600087803b15801561253157600080fd5b505af1925050508015611ad457505050565b600061255161271080612833565b8261255c8587612833565b6125669190612833565b612570919061284a565b949350505050565b60006020828403121561258a57600080fd5b5035919050565b600060208083528351808285015260005b818110156125be578581018301518582016040015282016125a2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114c057600080fd5b6000806040838503121561260757600080fd5b8235612612816125df565b946020939093013593505050565b60008060006060848603121561263557600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561266157600080fd5b833561266c816125df565b9250602084013561267c816125df565b929592945050506040919091013590565b80151581146114c057600080fd5b6000602082840312156126ad57600080fd5b81356126b88161268d565b9392505050565b60008083601f8401126126d157600080fd5b50813567ffffffffffffffff8111156126e957600080fd5b6020830191508360208260051b850101111561270457600080fd5b9250929050565b6000806000806040858703121561272157600080fd5b843567ffffffffffffffff8082111561273957600080fd5b612745888389016126bf565b9096509450602087013591508082111561275e57600080fd5b5061276b878288016126bf565b95989497509550505050565b60006020828403121561278957600080fd5b81356126b8816125df565b600080604083850312156127a757600080fd5b50508035926020909101359150565b600080604083850312156127c957600080fd5b82356127d4816125df565b915060208301356127e48161268d565b809150509250929050565b6000806040838503121561280257600080fd5b823561280d816125df565b915060208301356127e4816125df565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761098a5761098a61281d565b60008261286757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156128a757816000190482111561288d5761288d61281d565b8085161561289a57918102915b93841c9390800290612871565b509250929050565b6000826128be5750600161098a565b816128cb5750600061098a565b81600181146128e157600281146128eb57612907565b600191505061098a565b60ff8411156128fc576128fc61281d565b50506001821b61098a565b5060208310610133831016604e8410600b841016171561292a575081810a61098a565b612934838361286c565b80600019048211156129485761294861281d565b029392505050565b60006126b860ff8416836128af565b8181038181111561098a5761098a61281d565b8082018082111561098a5761098a61281d565b634e487b7160e01b600052603260045260246000fd5b6000600182016129ad576129ad61281d565b5060010190565b60208082526017908201527f416464726573732073686f756c64206e6f742062652030000000000000000000604082015260600190565b6000602082840312156129fd57600080fd5b81516126b8816125df565b600060208284031215612a1a57600080fd5b5051919050565b600060208284031215612a3357600080fd5b81516126b88161268d565b600080600060608486031215612a5357600080fd5b8351925060208401519150604084015190509250925092565b60208082526024908201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6040820152633ab73a1760e11b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b005784516001600160a01b031683529383019391830191600101612adb565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220bd9382188f12bf4f4937936481155d70be6fe2c6cfa4af20bb11aa28a204a02a64736f6c63430008150033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000a576463273e4a459b39a518be7fc79ebecf6b7c7

-----Decoded View---------------
Arg [0] : _DexRouter (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _taxWallet (address): 0xA576463273E4A459B39a518be7fc79EbecF6B7c7

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 000000000000000000000000a576463273e4a459b39a518be7fc79ebecf6b7c7


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Discover $n: Aligned with $NFAI's values, reshaping DeFi insurance. Unique protocol for safety via insurance, deflation through token burns, yield staking, and price stability with diverse liquidity. Join our secure, rewarding ecosystem.

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.