ETH Price: $2,623.64 (+1.33%)

Token

PARTY PARROT (PARTYP)
 

Overview

Max Total Supply

1,000,000 PARTYP

Holders

95

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.973223437949861298 PARTYP

Value
$0.00
0xf2304369721a76e6280c47ceac3352ff088fa052
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
PartyParrot

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// 
// ██████╗░░█████╗░██████╗░████████╗██╗░░░██╗  ██████╗░░█████╗░██████╗░██████╗░░█████╗░████████╗
// ██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝╚██╗░██╔╝  ██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝
// ██████╔╝███████║██████╔╝░░░██║░░░░╚████╔╝░  ██████╔╝███████║██████╔╝██████╔╝██║░░██║░░░██║░░░
// ██╔═══╝░██╔══██║██╔══██╗░░░██║░░░░░╚██╔╝░░  ██╔═══╝░██╔══██║██╔══██╗██╔══██╗██║░░██║░░░██║░░░
// ██║░░░░░██║░░██║██║░░██║░░░██║░░░░░░██║░░░  ██║░░░░░██║░░██║██║░░██║██║░░██║╚█████╔╝░░░██║░░░
// ╚═╝░░░░░╚═╝░░╚═╝╚═╝░░╚═╝░░░╚═╝░░░░░░╚═╝░░░  ╚═╝░░░░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝░╚════╝░░░░╚═╝░░░
//
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣤⣤⣤⣤⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣔⣦⣀⠀⠀⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⠿⠛⠉⠉⠀⠀⠀⠀⠀⠈⠉⠙⠻⢿⣿⣿⣷⣄⠀⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⠟⠉⢠⣤⣤⡀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⢘⣿⣿⣿⣧⠀⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⠟⠁⠀⠀⣿⣿⣿⣿⠀⠀⢀⣴⣿⣿⣿⣿⣷⣦⠀⣾⣿⣿⣿⣿⣧⠀⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⣼⣿⣿⠋⠀⠀⠀⠀⢻⣿⣿⣿⠀⠀⣼⣿⡟⠁⠀⠈⢻⣿⣧⠘⠿⡿⢿⣿⣿⣆⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀  ⢸⣿⣿⡏⠀⠀⠀⠀⠀⠀⠈⠉⠁⠀⢰⣿⣿⠀⠀⠀⠀⠀⣿⣿⡇⠀⠀⠀⢻⣿⣿⡆⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⢸⣿⣧⠀⠀⠀⠀⢿⣿⣿⡀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⠀⠀⠀⠀⠀⢸⣿⡏⠀⠀⠀⠀⢸⣿⣿⡇
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣇⠀⠀⠀⢀⣿⣿⠇⠀⠀⠀⠀⠀⣿⣿⡇
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣆⠀⢀⣾⣿⡟⠀⠀⠀⠀⠀⢸⣿⣿⡇
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣧⣾⣿⠏⠀⠀⠀⠀⠀⠀⣿⣿⣿⠃
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⠟⢿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⠏⠀⠀⠀⠀⠀⠀⣸⣿⣿⡏⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⠋⠀⠈⢿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠏⠀⠀⠀⠀⠀⠀⢰⣿⣿⡿⠀⠀
//⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⠟⠁⠀⠀⠀⠈⠻⣿⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⠁⠀⠀
//⠀⠀⠀⠀⠀⢀⣴⣿⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣶⣤⣤⣀⣀⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⡟⡇⠀⠀⠀
//⠀⠀⠀⢀⣴⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠛⠿⠿⠿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⠀⠀⠀⠀
//⠀⠀⣠⣾⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣟⡆⠀⠀⠀
//⢠⣾⣿⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣇⠀⠀⠀
//⣿⣿⣿⣁⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣻⣿⣿⣄⠀⠀
//⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠆⠀

// TG: https://t.me/PartyParrotERC
// twitter:https://twitter.com/partyparrotETH
// Website: https://partyparrot-eth.club


// SPDX-License-Identifier: MIT

pragma solidity 0.8.18;

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

interface IERC20 {
    
    // EVENT 

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

    // FUNCTION

    function name() external view returns (string memory);
    
    function symbol() external view returns (string memory);
    
    function decimals() external view returns (uint8);
    
    function totalSupply() external view returns (uint256);
    
    function balanceOf(address account) external view returns (uint256);
    
    function transfer(address to, uint256 amount) external returns (bool);
    
    function allowance(address owner, address spender) external view returns (uint256);
    
    function approve(address spender, uint256 amount) external returns (bool);
    
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

interface IPair {

    // FUNCTION

    function token0() external view returns (address);

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

interface IFactory {

    // FUNCTION

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

interface IRouter {

    // FUNCTION

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
    
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable;
    
    function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
}

interface ICommonError {

    // ERROR

    error CannotUseCurrentAddress(address current);

    error CannotUseCurrentValue(uint256 current);

    error CannotUseCurrentState(bool current);

    error InvalidAddress(address invalid);

    error InvalidValue(uint256 invalid);
}

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

abstract contract Ownable {
    
    // DATA

    address private _owner;

    // MODIFIER

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

    // ERROR

    error InvalidOwner(address account);

    error UnauthorizedAccount(address account);

    // CONSTRUCTOR

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

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

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

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

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

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

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

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

contract PartyParrot is Ownable, ICommonError, IERC20 {

    // DATA

    IRouter public router;

    string private constant NAME = "PARTY PARROT";
    string private constant SYMBOL = "PARTYP";

    uint8 private constant DECIMALS = 18;

    uint256 private _totalSupply;
    
    uint256 public constant FEEDENOMINATOR = 10_000;

    uint256 public buyFee = 0;
    uint256 public buyBurnFee = 0;
    uint256 public buyMarketingFee = 0;
    uint256 public sellFee = 700;
    uint256 public sellBurnFee = 100;
    uint256 public sellMarketingFee = 600;
    uint256 public transferFee = 0;
    uint256 public transferBurnFee = 0;
    uint256 public transferMarketingFee = 0;
    uint256 public walletLimit = 1;
    uint256 public walletLimitTime = 20 seconds;
    uint256 public tradeStartTime = 0;
    uint256 public totalFeeCollected = 0;
    uint256 public totalFeeRedeemed = 0;
    uint256 public totalTriggerZeusBuyback = 0;
    uint256 public lastTriggerZeusTimestamp = 0;
    uint256 public minSwap = 1_000 ether;

    bool private constant ISPARTYP = true;

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

    address public immutable PROJECTOWNER;
    address public feeReceiver;

    address public pair;
    
    // MAPPING

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

    // MODIFIER

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

    // ERROR

    error InvalidTradeEnabledState(bool current);

    error InvalidFeeActiveState(bool current);

    error InvalidSwapEnabledState(bool current);

    error PresaleAlreadyFinalized(bool current);

    error ExceedMaxFeeAllowed(uint256 limit);

    error ExceedWalletLimit(uint256 limit);

    error TradeDisabled();

    error CannotUseCurrentFees();

    error FeeUpdateLocked();

    // CONSTRUCTOR

    constructor(
        address feeReceiverAdr,
        address routerAdr
    ) Ownable (msg.sender) {
        if (feeReceiverAdr == address(0)) {
            revert InvalidAddress(feeReceiverAdr);
        }
        if (routerAdr == address(0)) {
            revert InvalidAddress(routerAdr);
        }
        feeReceiver = feeReceiverAdr;
        PROJECTOWNER = msg.sender;
        _mint(msg.sender, 1_000_000 * 10**DECIMALS);

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

        isPairLP[pair] = true;

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

        isExcludeFromWalletLimits[msg.sender] = true;
        isExcludeFromWalletLimits[pair] = true;
    }

    // EVENT

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

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

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

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

    event UpdateFeeReceiver(address oldReceiver, address newReceiver, address caller, uint256 timestamp);

    event UpdateBuyFee(uint256 oldBurnFee, uint256 oldMarketingFee, uint256 newBurnFee, uint256 newMarketingFee, address caller, uint256 timestamp);

    event UpdateSellFee(uint256 oldBurnFee, uint256 oldMarketingFee, uint256 newBurnFee, uint256 newMarketingFee, address caller, uint256 timestamp);

    event UpdateTransferFee(uint256 oldBurnFee, uint256 oldMarketingFee, uint256 newBurnFee, uint256 newMarketingFee, address caller, uint256 timestamp);

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

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

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

    // FUNCTION

    /* General */

    receive() external payable {}

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

    /* Redeem */

    function autoRedeem(uint256 amountToRedeem) public swapping {          
        totalFeeRedeemed += amountToRedeem;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), amountToRedeem);
        
        emit AutoRedeem(amountToRedeem, amountToRedeem, msg.sender, block.timestamp);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToRedeem,
            0,
            path,
            feeReceiver,
            block.timestamp
        );
    }

    /* Check */

    function isPartyParrot() external pure returns (bool) {
        return ISPARTYP;
    }

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

    function checkWalletLimit(uint256 amount, address to) public view {
        uint256 limit = totalSupply() * walletLimit / FEEDENOMINATOR;
        if ((tradeStartTime < 1 || block.timestamp - tradeStartTime < walletLimitTime) && !isExcludeFromWalletLimits[to]) {
            if (balanceOf(to) + amount > limit) {
                revert ExceedWalletLimit(limit);
            }
        }
    }

    function getBuyFee() public view returns (uint256, uint256) {
        uint256 diff = block.timestamp - tradeStartTime;
        if (diff <= 3 minutes) {
            return (100, 2_400);
        }
        if (diff > 3 minutes && diff <= 7 minutes) {
            return (100, 900);
        }
        if (diff > 7 minutes && diff <= 460 seconds) {
            return (0, 0);
        }
        return (buyBurnFee, buyMarketingFee);
    }

    function getSellFee() public view returns (uint256, uint256) {
        uint256 diff = block.timestamp - tradeStartTime;
        if (diff <= 3 minutes) {
            return (100, 3_000);
        }
        if (diff > 3 minutes && diff <= 7 minutes) {
            return (100, 900);
        }
        if (diff > 7 minutes && diff <= 460 seconds) {
            return (100, 9_800);
        }
        return (sellBurnFee, sellMarketingFee);
    }

    function getTransferFee() public view returns (uint256, uint256) {
        uint256 diff = block.timestamp - tradeStartTime;
        if (diff <= 3 minutes) {
            return (0, 0);
        }
        if (diff > 3 minutes && diff <= 7 minutes) {
            return (0, 0);
        }
        if (diff > 7 minutes && diff <= 460 seconds) {
            return (0, 0);
        }
        return (transferBurnFee, transferMarketingFee);
    }

    /* Update */

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

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

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

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

    function updateBuyFee(uint256 newBurnFee, uint256 newMarketingFee) external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        if (newBurnFee == buyBurnFee && newMarketingFee == buyMarketingFee) { revert CannotUseCurrentFees(); }
        if (newBurnFee + newMarketingFee >= 1_000) { revert ExceedMaxFeeAllowed(1_000); }
        uint256 oldBurnFee = buyBurnFee;
        uint256 oldMarketingFee = buyMarketingFee;
        buyBurnFee = newBurnFee;
        buyMarketingFee = newMarketingFee;
        emit UpdateBuyFee(oldBurnFee, oldMarketingFee, newBurnFee, newMarketingFee, msg.sender, block.timestamp);
    }

    function updateSellFee(uint256 newBurnFee, uint256 newMarketingFee) external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        if (newBurnFee == sellBurnFee && newMarketingFee == sellMarketingFee) { revert CannotUseCurrentFees(); }
        if (newBurnFee + newMarketingFee >= 1_000) { revert ExceedMaxFeeAllowed(1_000); }
        uint256 oldBurnFee = sellBurnFee;
        uint256 oldMarketingFee = sellMarketingFee;
        sellBurnFee = newBurnFee;
        sellMarketingFee = newMarketingFee;
        emit UpdateSellFee(oldBurnFee, oldMarketingFee, newBurnFee, newMarketingFee, msg.sender, block.timestamp);
    }

    function updateTransferFee(uint256 newBurnFee, uint256 newMarketingFee) external onlyOwner {
        if (isFeeLocked) { revert FeeUpdateLocked(); }
        if (newBurnFee == transferBurnFee && newMarketingFee == transferMarketingFee) { revert CannotUseCurrentFees(); }
        if (newBurnFee + newMarketingFee >= 1_000) { revert ExceedMaxFeeAllowed(1_000); }
        uint256 oldBurnFee = transferBurnFee;
        uint256 oldMarketingFee = transferMarketingFee;
        transferBurnFee = newBurnFee;
        transferMarketingFee = newMarketingFee;
        emit UpdateTransferFee(oldBurnFee, oldMarketingFee, newBurnFee, newMarketingFee, msg.sender, block.timestamp);
    }

    function updateFeeReceiver(address newReceiver) external onlyOwner {
        if (feeReceiver == newReceiver) { revert CannotUseCurrentAddress(newReceiver); }
        address oldReceiver = feeReceiver;
        feeReceiver = newReceiver;
        emit UpdateFeeReceiver(oldReceiver, newReceiver, msg.sender, block.timestamp);
    }

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

    function setExcludeFromFees(address user, bool newStatus) external onlyOwner {
        if (isExcludeFromFees[user] == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isExcludeFromFees[user];
        isExcludeFromFees[user] = newStatus;
        emit ExcludeFromFees(oldStatus, newStatus, msg.sender, block.timestamp);
    }

    function setExcludeFromWalletLimits(address user, bool newStatus) external onlyOwner {
        if (isExcludeFromWalletLimits[user] == newStatus) { revert CannotUseCurrentState(newStatus); }
        bool oldStatus = isExcludeFromWalletLimits[user];
        isExcludeFromWalletLimits[user] = newStatus;
        emit ExcludeFromWalletLimits(oldStatus, newStatus, msg.sender, block.timestamp);
    }

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

    /* Fee */

    function takeBuyFee(address from, uint256 amount, uint256 burn, uint256 marketing) internal swapping returns (uint256) {
        uint256 burnAmount = amount * burn / FEEDENOMINATOR;
        uint256 marketingAmount = amount * marketing / FEEDENOMINATOR;
        uint256 newAmount = amount - burnAmount - marketingAmount;
        if (burnAmount + marketingAmount > 0) {
            tallyCollection(from, burnAmount, marketingAmount);
        }
        return newAmount;
    }

    function takeSellFee(address from, uint256 amount, uint256 burn, uint256 marketing) internal swapping returns (uint256) {
        uint256 burnAmount = amount * burn / FEEDENOMINATOR;
        uint256 marketingAmount = amount * marketing / FEEDENOMINATOR;
        uint256 newAmount = amount - burnAmount - marketingAmount;
        if (burnAmount + marketingAmount > 0) {
            tallyCollection(from, burnAmount, marketingAmount);
        }
        return newAmount;
    }

    function takeTransferFee(address from, uint256 amount, uint256 burn, uint256 marketing) internal swapping returns (uint256) {
        uint256 burnAmount = amount * burn / FEEDENOMINATOR;
        uint256 marketingAmount = amount * marketing / FEEDENOMINATOR;
        uint256 newAmount = amount - burnAmount - marketingAmount;
        if (burnAmount + marketingAmount > 0) {
            tallyCollection(from, burnAmount, marketingAmount);
        }
        return newAmount;
    }

    function tallyCollection(address from, uint256 collectBurnFee, uint256 collectMarketingFee) internal swapping {
        uint256 totalFee = collectBurnFee + collectMarketingFee;
        totalFeeCollected += totalFee;
        totalFeeRedeemed += collectBurnFee;
        _basicTransfer(from, address(0xdead), collectBurnFee);
        _basicTransfer(from, address(this), collectMarketingFee);
    }

    /* Buyback */

    function triggerZeusBuyback(uint256 amount) external onlyOwner {
        totalTriggerZeusBuyback += amount;
        lastTriggerZeusTimestamp = block.timestamp;
        buyTokens(amount, address(0xdead));
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        if (msg.sender == address(0xdead)) { revert InvalidAddress(address(0xdead)); }
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amount
        } (0, path, to, block.timestamp);
    }

    /* ERC20 Standard */

    function name() external view virtual override returns (string memory) {
        return NAME;
    }
    
    function symbol() external view virtual override returns (string memory) {
        return SYMBOL;
    }
    
    function decimals() external view virtual override returns (uint8) {
        return DECIMALS;
    }
    
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
    
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address to, uint256 amount) external virtual override returns (bool) {
        address provider = msg.sender;
        return _transfer(provider, to, amount);
    }
    
    function allowance(address provider, address spender) public view virtual override returns (uint256) {
        return _allowances[provider][spender];
    }
    
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, amount);
        return true;
    }
    
    function transferFrom(address from, address to, uint256 amount) external virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        return _transfer(from, to, amount);
    }
    
    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        address provider = msg.sender;
        _approve(provider, spender, allowance(provider, spender) + addedValue);
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        address provider = msg.sender;
        uint256 currentAllowance = allowance(provider, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(provider, spender, currentAllowance - subtractedValue);
        }

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

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

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

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

    /* Additional */

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

        emit Transfer(from, to, amount);
        return true;
    }
    
    /* Overrides */
 
    function _transfer(address from, address to, uint256 amount) internal virtual returns (bool) {
        if (from == address(0)) { revert InvalidAddress(from); }
        if (to == address(0)) { revert InvalidAddress(to); }

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

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

        if (from != pair && isSwapEnabled && balanceOf(address(this)) >= minSwap && totalFeeCollected - totalFeeRedeemed >= minSwap) {
            autoRedeem(minSwap);
        }

        uint256 newAmount = amount;

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

        checkWalletLimit(newAmount, to);

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

        emit Transfer(from, to, newAmount);

        return true;
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal swapping virtual returns (uint256) {
        uint256 burn = 0;
        uint256 marketing = 0;
        
        if (isPairLP[from]) {
            (burn, marketing) = getBuyFee();
            if (burn + marketing > 0) {
                return takeBuyFee(from, amount, burn, marketing);
            }
        }
        if (isPairLP[to]) {
            (burn, marketing) = getSellFee();
            if (burn + marketing > 0) {
                return takeSellFee(from, amount, burn, marketing);
            }
        }
        if (!isPairLP[from] && !isPairLP[to]) {
            (burn, marketing) = getTransferFee();
            if (burn + marketing > 0) {
                return takeTransferFee(from, amount, burn, marketing);
            }
        }
        return amount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"feeReceiverAdr","type":"address"},{"internalType":"address","name":"routerAdr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"current","type":"address"}],"name":"CannotUseCurrentAddress","type":"error"},{"inputs":[],"name":"CannotUseCurrentFees","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"CannotUseCurrentState","type":"error"},{"inputs":[{"internalType":"uint256","name":"current","type":"uint256"}],"name":"CannotUseCurrentValue","type":"error"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"ExceedMaxFeeAllowed","type":"error"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"ExceedWalletLimit","type":"error"},{"inputs":[],"name":"FeeUpdateLocked","type":"error"},{"inputs":[{"internalType":"address","name":"invalid","type":"address"}],"name":"InvalidAddress","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidFeeActiveState","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"InvalidOwner","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidSwapEnabledState","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"InvalidTradeEnabledState","type":"error"},{"inputs":[{"internalType":"uint256","name":"invalid","type":"uint256"}],"name":"InvalidValue","type":"error"},{"inputs":[{"internalType":"bool","name":"current","type":"bool"}],"name":"PresaleAlreadyFinalized","type":"error"},{"inputs":[],"name":"TradeDisabled","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"UnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeDistribution","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToRedeem","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"AutoRedeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"EnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromWalletLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldMarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateBuyFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateFeeActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateFeeLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"newReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateFeeReceiver","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMinSwap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMinSwap","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateMinSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldMarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateSellFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"oldStatus","type":"bool"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateSwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldMarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"UpdateTransferFee","type":"event"},{"inputs":[],"name":"FEEDENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROJECTOWNER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"provider","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToRedeem","type":"uint256"}],"name":"autoRedeem","outputs":[],"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":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"checkWalletLimit","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTransferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromWalletLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isFeeLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPairLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPartyParrot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"isSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTriggerZeusTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"setExcludeFromWalletLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpPair","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setPairLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeRedeemed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTriggerZeusBuyback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"triggerZeusBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateFeeActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newReceiver","type":"address"}],"name":"updateFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinSwap","type":"uint256"}],"name":"updateMinSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBurnFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"}],"name":"updateTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"walletLimitTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405260006003819055600481905560058190556102bc60065560646007556102586008556009819055600a819055600b8190556001600c556014600d819055600e829055600f82905560108290556011829055601291909155683635c9adc5dea00000601355805464ffffffffff191690553480156200008157600080fd5b50604051620030d1380380620030d1833981016040819052620000a4916200048c565b33620000b0816200037e565b506001600160a01b038216620000e957604051634726455360e11b81526001600160a01b03831660048201526024015b60405180910390fd5b6001600160a01b0381166200011d57604051634726455360e11b81526001600160a01b0382166004820152602401620000e0565b60148054600160281b600160c81b031916650100000000006001600160a01b0385160217905533608081905262000171906200015c6012600a620005d9565b6200016b90620f4240620005f1565b620003ce565b600180546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f191906200060b565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027a91906200060b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ee91906200060b565b601580546001600160a01b0319166001600160a01b0392831690811782556000908152601a60209081526040808320805460ff199081166001908117909255338086526018855283862080548316841790558254881686528386208054831684179055855260199093528184208054841682179055935490941682529290208054909216179055506200063f9050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0382166200040257604051634726455360e11b81526001600160a01b0383166004820152602401620000e0565b806002600082825462000416919062000629565b90915550506001600160a01b0382166000818152601660209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80516001600160a01b03811681146200048757600080fd5b919050565b60008060408385031215620004a057600080fd5b620004ab836200046f565b9150620004bb602084016200046f565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200051b578160001904821115620004ff57620004ff620004c4565b808516156200050d57918102915b93841c9390800290620004df565b509250929050565b6000826200053457506001620005d3565b816200054357506000620005d3565b81600181146200055c5760028114620005675762000587565b6001915050620005d3565b60ff8411156200057b576200057b620004c4565b50506001821b620005d3565b5060208310610133831016604e8410600b8410161715620005ac575081810a620005d3565b620005b88383620004da565b8060001904821115620005cf57620005cf620004c4565b0290505b92915050565b6000620005ea60ff84168362000523565b9392505050565b8082028115828204841417620005d357620005d3620004c4565b6000602082840312156200061e57600080fd5b620005ea826200046f565b80820180821115620005d357620005d3620004c4565b608051612a766200065b60003960006107390152612a766000f3fe6080604052600436106103c75760003560e01c806392136913116101f2578063beffc7d41161010d578063da4daf71116100a0578063f2a426871161006f578063f2a4268714610b0b578063f2fde38b14610b3b578063f31d5c7a14610b5b578063f887ea4014610b7b57600080fd5b8063da4daf7114610aa0578063dd62ed3e14610ab6578063e43504da14610ad6578063e71dc3f514610af557600080fd5b8063c9ab366b116100dc578063c9ab366b14610a2f578063d621e81314610a45578063d63cad2214610a5f578063d830678614610a7f57600080fd5b8063beffc7d4146109bb578063c520c1fb146109db578063c69bebe4146109ef578063c851cc3214610a0f57600080fd5b8063a9059cbb11610185578063adc7b55611610154578063adc7b5561461092e578063b3f006741461095e578063b908de8c14610985578063b9b2b5cd146109a557600080fd5b8063a9059cbb146108cc578063ab28a04c146108ec578063acb2ad6f14610902578063adb873bd1461091857600080fd5b806397e1b9d3116101c157806397e1b9d3146108615780639a17d8c114610877578063a457c2d71461088c578063a8aa1b31146108ac57600080fd5b806392136913146107e7578063924de9b7146107fd5780639358928b1461081d57806395d89b411461083257600080fd5b806347062402116102e257806371538eed1161027557806385c5b3191161024457806385c5b319146107895780638a8c523c1461079f5780638da5cb5b146107b45780638f818b90146107d257600080fd5b806371538eed146106f157806375fed3c71461070757806378eec331146107275780637bce5a041461077357600080fd5b806363a95492116102b157806363a954921461066657806363fcc9221461068657806370a08231146106a6578063715018a6146106dc57600080fd5b806347062402146105fa57806359cd903114610610578063610e34b914610626578063625dd6051461064657600080fd5b80632b14ca561161035a578063395093511161032957806339509351146105845780633bf31454146105a45780633c8463a1146105c45780633d3359cb146105da57600080fd5b80632b14ca561461051b5780632c735ef814610531578063313ce56714610547578063351a964d1461056357600080fd5b806318160ddd1161039657806318160ddd1461049c5780631c8a6adc146104bb57806323b872dd146104d1578063289af0d8146104f157600080fd5b806301295143146103d357806306fdde03146103f557806308c436501461043c578063095ea7b31461047c57600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103f36103ee36600461265b565b610b9b565b005b34801561040157600080fd5b5060408051808201909152600c81526b1410549516481410549493d560a21b60208201525b6040516104339190612674565b60405180910390f35b34801561044857600080fd5b5061046c6104573660046126d7565b601a6020526000908152604090205460ff1681565b6040519015158152602001610433565b34801561048857600080fd5b5061046c6104973660046126f4565b610d81565b3480156104a857600080fd5b506002545b604051908152602001610433565b3480156104c757600080fd5b506104ad600a5481565b3480156104dd57600080fd5b5061046c6104ec366004612720565b610d9b565b3480156104fd57600080fd5b50610506610dbf565b60408051928352602083019190915201610433565b34801561052757600080fd5b506104ad60065481565b34801561053d57600080fd5b506104ad600e5481565b34801561055357600080fd5b5060405160128152602001610433565b34801561056f57600080fd5b5060145461046c906301000000900460ff1681565b34801561059057600080fd5b5061046c61059f3660046126f4565b610e41565b3480156105b057600080fd5b506103f36105bf366004612776565b610e63565b3480156105d057600080fd5b506104ad600c5481565b3480156105e657600080fd5b506103f36105f5366004612791565b610f32565b34801561060657600080fd5b506104ad60035481565b34801561061c57600080fd5b506104ad60135481565b34801561063257600080fd5b506103f3610641366004612791565b61101d565b34801561065257600080fd5b506103f36106613660046127b3565b6110fa565b34801561067257600080fd5b506103f361068136600461265b565b611290565b34801561069257600080fd5b506103f36106a13660046127e8565b6112c2565b3480156106b257600080fd5b506104ad6106c13660046126d7565b6001600160a01b031660009081526016602052604090205490565b3480156106e857600080fd5b506103f3611383565b3480156106fd57600080fd5b506104ad60105481565b34801561071357600080fd5b506103f361072236600461265b565b611397565b34801561073357600080fd5b5061075b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610433565b34801561077f57600080fd5b506104ad60055481565b34801561079557600080fd5b506104ad600b5481565b3480156107ab57600080fd5b506103f3611412565b3480156107c057600080fd5b506000546001600160a01b031661075b565b3480156107de57600080fd5b506105066114d6565b3480156107f357600080fd5b506104ad60085481565b34801561080957600080fd5b506103f3610818366004612776565b611556565b34801561082957600080fd5b506104ad6115ee565b34801561083e57600080fd5b5060408051808201909152600681526505041525459560d41b6020820152610426565b34801561086d57600080fd5b506104ad60125481565b34801561088357600080fd5b5061050661165e565b34801561089857600080fd5b5061046c6108a73660046126f4565b6116da565b3480156108b857600080fd5b5060155461075b906001600160a01b031681565b3480156108d857600080fd5b5061046c6108e73660046126f4565b611760565b3480156108f857600080fd5b506104ad61271081565b34801561090e57600080fd5b506104ad60095481565b34801561092457600080fd5b506104ad60075481565b34801561093a57600080fd5b5061046c6109493660046126d7565b60196020526000908152604090205460ff1681565b34801561096a57600080fd5b5060145461075b90600160281b90046001600160a01b031681565b34801561099157600080fd5b5060145461046c9062010000900460ff1681565b3480156109b157600080fd5b506104ad600f5481565b3480156109c757600080fd5b506103f36109d6366004612791565b611776565b3480156109e757600080fd5b50600161046c565b3480156109fb57600080fd5b506103f3610a0a3660046126d7565b611853565b348015610a1b57600080fd5b506103f3610a2a3660046126d7565b611915565b348015610a3b57600080fd5b506104ad600d5481565b348015610a5157600080fd5b5060145461046c9060ff1681565b348015610a6b57600080fd5b506103f3610a7a3660046127b3565b611b84565b348015610a8b57600080fd5b5060145461046c90600160201b900460ff1681565b348015610aac57600080fd5b506104ad60115481565b348015610ac257600080fd5b506104ad610ad1366004612818565b611c40565b348015610ae257600080fd5b5060145461046c90610100900460ff1681565b348015610b0157600080fd5b506104ad60045481565b348015610b1757600080fd5b5061046c610b263660046126d7565b60186020526000908152604090205460ff1681565b348015610b4757600080fd5b506103f3610b563660046126d7565b611c6b565b348015610b6757600080fd5b506103f3610b763660046127b3565b611ca6565b348015610b8757600080fd5b5060015461075b906001600160a01b031681565b6014805460ff60201b1916600160201b17905560108054829190600090610bc390849061285c565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110610bfd57610bfd61286f565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7a9190612885565b81600181518110610c8d57610c8d61286f565b6001600160a01b039283166020918202929092010152600154610cb39130911684611d55565b6040805183815260208101849052338183015242606082015290517fb933c1b294702108551eddf782a9c7d1a018b57f68ecf63bc59a1247daa19c309181900360800190a160015460145460405163791ac94760e01b81526001600160a01b039283169263791ac94792610d3e9287926000928892600160281b9091049091169042906004016128e6565b600060405180830381600087803b158015610d5857600080fd5b505af1158015610d6c573d6000803e3d6000fd5b50506014805460ff60201b1916905550505050565b600033610d8f818585611d55565b60019150505b92915050565b600033610da9858285611e1a565b610db4858585611e94565b9150505b9392505050565b6000806000600e5442610dd29190612922565b905060b48111610de95750606492610bb892509050565b60b481118015610dfb57506101a48111155b15610e0d575060649261038492509050565b6101a481118015610e2057506101cc8111155b15610e32575060649261264892509050565b60075460085492509250509091565b600033610d8f818585610e548383611c40565b610e5e919061285c565b611d55565b610e6b612142565b60145462010000900460ff1615610e95576040516334d2d20d60e01b815260040160405180910390fd5b801515601460019054906101000a900460ff16151503610ed05760405162a7e72d60e41b815281151560048201526024015b60405180910390fd5b6014805461ff0019811661010084151581029190911790925560405191900460ff16907ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f90610f26908390859033904290612935565b60405180910390a15050565b610f3a612142565b60145462010000900460ff1615610f64576040516334d2d20d60e01b815260040160405180910390fd5b600a5482148015610f765750600b5481145b15610f945760405163e5cca11f60e01b815260040160405180910390fd5b6103e8610fa1828461285c565b10610fc35760405163bcbac79d60e01b81526103e86004820152602401610ec7565b600a8054600b8054928590558390556040519091907fc136c847ae8a727a6c93d9f84c5401e6a6441d05efd508466161ce23337cff5b9061100f9084908490889088903390429061295b565b60405180910390a150505050565b611025612142565b60145462010000900460ff161561104f576040516334d2d20d60e01b815260040160405180910390fd5b60045482148015611061575060055481145b1561107f5760405163e5cca11f60e01b815260040160405180910390fd5b6103e861108c828461285c565b106110ae5760405163bcbac79d60e01b81526103e86004820152602401610ec7565b6004805460058054928590558390556040519091907ffe2932ef95c6475e661168503e475c702d42a654b8894b63e1cf394485d2821c9061100f9084908490889088903390429061295b565b611102612142565b6001600160a01b0382166000908152601a602052604090205481151560ff9091161515036111465760405162a7e72d60e41b81528115156004820152602401610ec7565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190612885565b6001600160a01b03161415801561123c5750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561120c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112309190612885565b6001600160a01b031614155b1561126557604051634726455360e11b81526001600160a01b0383166004820152602401610ec7565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b611298612142565b80601160008282546112aa919061285c565b9091555050426012556112bf8161dead61217e565b50565b6000612710600c546112d360025490565b6112dd919061298c565b6112e791906129a3565b90506001600e5410806113075750600d54600e546113059042612922565b105b801561132c57506001600160a01b03821660009081526019602052604090205460ff16155b1561137e578083611352846001600160a01b031660009081526016602052604090205490565b61135c919061285c565b111561137e57604051633ad0b44360e11b815260048101829052602401610ec7565b505050565b61138b612142565b6113956000612317565b565b61139f612142565b80601354036113c45760405163657e16cf60e01b815260048101829052602401610ec7565b6013805490829055604080518281526020810184905233918101919091524260608201527f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c590608001610f26565b61141a612142565b60145460ff1615611449576014546040516301bf623960e61b815260ff90911615156004820152602401610ec7565b601454610100900460ff161561148157601454604051630eff900b60e21b815261010090910460ff1615156004820152602401610ec7565b6014546301000000900460ff16156114bd5760145460405163610a8e6760e01b8152630100000090910460ff1615156004820152602401610ec7565b6014805463ff00ffff1916630100010117905542600e55565b6000806000600e54426114e99190612922565b905060b48111611500575060649261096092509050565b60b48111801561151257506101a48111155b15611524575060649261038492509050565b6101a48111801561153757506101cc8111155b1561154757506000928392509050565b60045460055492509250509091565b61155e612142565b801515601460039054906101000a900460ff161515036115945760405162a7e72d60e41b81528115156004820152602401610ec7565b6014805463ff000000198116630100000084151581029190911790925560405191900460ff16907fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a04490610f26908390859033904290612935565b60166020527f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd5461dead60009081527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b575460025491929161164f9190612922565b6116599190612922565b905090565b6000806000600e54426116719190612922565b905060b4811161168657506000928392509050565b60b48111801561169857506101a48111155b156116a857506000928392509050565b6101a4811180156116bb57506101cc8111155b156116cb57506000928392509050565b600a54600b5492509250509091565b600033816116e88286611c40565b9050838110156117485760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ec7565b6117558286868403611d55565b506001949350505050565b60003361176e818585611e94565b949350505050565b61177e612142565b60145462010000900460ff16156117a8576040516334d2d20d60e01b815260040160405180910390fd5b600754821480156117ba575060085481145b156117d85760405163e5cca11f60e01b815260040160405180910390fd5b6103e86117e5828461285c565b106118075760405163bcbac79d60e01b81526103e86004820152602401610ec7565b6007805460088054928590558390556040519091907ffd1d173bff70c08be0edb34ff54ac9f282d66241eb9848cdf123d283a7f354e69061100f9084908490889088903390429061295b565b61185b612142565b6014546001600160a01b03808316600160281b909204160361189b5760405163a936636960e01b81526001600160a01b0382166004820152602401610ec7565b601480546001600160a01b03838116600160281b81810265010000000000600160c81b0319851617909455604080519490930490911680845260208401919091523391830191909152426060830152907f8398165ebfaa5831ed8697905b76704b18bb44c19f6630c76c8fa68f32dc7dfe90608001610f26565b61191d612142565b6001546001600160a01b038083169116036119565760405163a936636960e01b81526001600160a01b0382166004820152602401610ec7565b600180546001600160a01b038381166001600160a01b0319831681178455600081815260186020908152604091829020805460ff19169096179095558051929093168083529382015233918101919091524260608201527fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a519190612885565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad79190612885565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b489190612885565b601580546001600160a01b0319166001600160a01b039290921691821790556000908152601a60205260409020805460ff191660011790555050565b611b8c612142565b6001600160a01b03821660009081526018602052604090205481151560ff909116151503611bd05760405162a7e72d60e41b81528115156004820152602401610ec7565b6001600160a01b03821660009081526018602052604090819020805483151560ff19821617909155905160ff909116907f4c18d53c2d0e765ff1dc3e5d53d8c51002cc0b5c114aa07199d629d54fad593e90611c33908390859033904290612935565b60405180910390a1505050565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b611c73612142565b6001600160a01b038116611c9d5760405163b20f76e360e01b815260006004820152602401610ec7565b6112bf81612317565b611cae612142565b6001600160a01b03821660009081526019602052604090205481151560ff909116151503611cf25760405162a7e72d60e41b81528115156004820152602401610ec7565b6001600160a01b03821660009081526019602052604090819020805483151560ff19821617909155905160ff909116907f887bfffde87b3f64221a6b7de2ee5ef7503d2388b41b153cfb301c26087a7f3c90611c33908390859033904290612935565b6001600160a01b038316611d8757604051634726455360e11b81526001600160a01b0384166004820152602401610ec7565b6001600160a01b038216611db957604051634726455360e11b81526001600160a01b0383166004820152602401610ec7565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611e268484611c40565b90506000198114611e8e5781811015611e815760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ec7565b611e8e8484848403611d55565b50505050565b60006001600160a01b038416611ec857604051634726455360e11b81526001600160a01b0385166004820152602401610ec7565b6001600160a01b038316611efa57604051634726455360e11b81526001600160a01b0384166004820152602401610ec7565b60145460ff16158015611f2657506001600160a01b03841660009081526018602052604090205460ff16155b8015611f4b57506001600160a01b03831660009081526018602052604090205460ff16155b15611f6957604051632b61510560e11b815260040160405180910390fd5b601454600160201b900460ff1680611f9957506001600160a01b03841660009081526018602052604090205460ff165b15611fb057611fa9848484612367565b9050610db8565b6015546001600160a01b03858116911614801590611fd757506014546301000000900460ff165b8015611ff457506013543060009081526016602052604090205410155b80156120115750601354601054600f5461200e9190612922565b10155b1561202157612021601354610b9b565b6014548290610100900460ff16801561205357506001600160a01b03851660009081526018602052604090205460ff16155b801561207857506001600160a01b03841660009081526018602052604090205460ff16155b1561208b57612088858585612400565b90505b61209581856112c2565b6001600160a01b0385166000908152601660205260409020548111156120cd5760405162461bcd60e51b8152600401610ec7906129c5565b6001600160a01b03808616600081815260166020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061212f9085815260200190565b60405180910390a3506001949350505050565b336121556000546001600160a01b031690565b6001600160a01b031614611395576040516332b2baa360e01b8152336004820152602401610ec7565b6014805460ff60201b1916600160201b17905561deac1933016121b857604051634726455360e11b815261dead6004820152602401610ec7565b6040805160028082526060820183526000926020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122469190612885565b816000815181106122595761225961286f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061228d5761228d61286f565b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de959085906122d390600090869088904290600401612a0b565b6000604051808303818588803b1580156122ec57600080fd5b505af1158015612300573d6000803e3d6000fd5b50506014805460ff60201b19169055505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316600090815260166020526040812054828110156123a05760405162461bcd60e51b8152600401610ec7906129c5565b6001600160a01b0380861660008181526016602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061212f9087815260200190565b6014805460ff60201b1916600160201b1790556001600160a01b0383166000908152601a60205260408120548190819060ff161561246c576124406114d6565b90925090506000612451828461285c565b111561246c5761246386858484612544565b92505050612530565b6001600160a01b0385166000908152601a602052604090205460ff16156124b857612495610dbf565b909250905060006124a6828461285c565b11156124b85761246386858484612544565b6001600160a01b0386166000908152601a602052604090205460ff161580156124fa57506001600160a01b0385166000908152601a602052604090205460ff16155b1561252a5761250761165e565b90925090506000612518828461285c565b111561252a5761246386858484612544565b83925050505b6014805460ff60201b191690559392505050565b6014805460ff60201b1916600160201b179055600080612710612567858761298c565b61257191906129a3565b90506000612710612582858861298c565b61258c91906129a3565b905060008161259b8489612922565b6125a59190612922565b905060006125b3838561285c565b11156125c4576125c48884846125dc565b6014805460ff60201b19169055979650505050505050565b6014805460ff60201b1916600160201b17905560006125fb828461285c565b905080600f600082825461260f919061285c565b925050819055508260106000828254612628919061285c565b9091555061263b90508461dead85612367565b50612647843084612367565b50506014805460ff60201b19169055505050565b60006020828403121561266d57600080fd5b5035919050565b600060208083528351808285015260005b818110156126a157858101830151858201604001528201612685565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112bf57600080fd5b6000602082840312156126e957600080fd5b8135610db8816126c2565b6000806040838503121561270757600080fd5b8235612712816126c2565b946020939093013593505050565b60008060006060848603121561273557600080fd5b8335612740816126c2565b92506020840135612750816126c2565b929592945050506040919091013590565b8035801515811461277157600080fd5b919050565b60006020828403121561278857600080fd5b610db882612761565b600080604083850312156127a457600080fd5b50508035926020909101359150565b600080604083850312156127c657600080fd5b82356127d1816126c2565b91506127df60208401612761565b90509250929050565b600080604083850312156127fb57600080fd5b82359150602083013561280d816126c2565b809150509250929050565b6000806040838503121561282b57600080fd5b8235612836816126c2565b9150602083013561280d816126c2565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d9557610d95612846565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561289757600080fd5b8151610db8816126c2565b600081518084526020808501945080840160005b838110156128db5781516001600160a01b0316875295820195908201906001016128b6565b509495945050505050565b85815284602082015260a06040820152600061290560a08301866128a2565b6001600160a01b0394909416606083015250608001529392505050565b81810381811115610d9557610d95612846565b931515845291151560208401526001600160a01b03166040830152606082015260800190565b9586526020860194909452604085019290925260608401526001600160a01b0316608083015260a082015260c00190565b8082028115828204841417610d9557610d95612846565b6000826129c057634e487b7160e01b600052601260045260246000fd5b500490565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b848152608060208201526000612a2460808301866128a2565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220da918ee548f1c878a2d4696d08054bb54e751278d60bb7c852fdff41286e68a064736f6c634300081200330000000000000000000000008cf3144ba596d87a3cb8c12f73814bec6eea3d090000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106103c75760003560e01c806392136913116101f2578063beffc7d41161010d578063da4daf71116100a0578063f2a426871161006f578063f2a4268714610b0b578063f2fde38b14610b3b578063f31d5c7a14610b5b578063f887ea4014610b7b57600080fd5b8063da4daf7114610aa0578063dd62ed3e14610ab6578063e43504da14610ad6578063e71dc3f514610af557600080fd5b8063c9ab366b116100dc578063c9ab366b14610a2f578063d621e81314610a45578063d63cad2214610a5f578063d830678614610a7f57600080fd5b8063beffc7d4146109bb578063c520c1fb146109db578063c69bebe4146109ef578063c851cc3214610a0f57600080fd5b8063a9059cbb11610185578063adc7b55611610154578063adc7b5561461092e578063b3f006741461095e578063b908de8c14610985578063b9b2b5cd146109a557600080fd5b8063a9059cbb146108cc578063ab28a04c146108ec578063acb2ad6f14610902578063adb873bd1461091857600080fd5b806397e1b9d3116101c157806397e1b9d3146108615780639a17d8c114610877578063a457c2d71461088c578063a8aa1b31146108ac57600080fd5b806392136913146107e7578063924de9b7146107fd5780639358928b1461081d57806395d89b411461083257600080fd5b806347062402116102e257806371538eed1161027557806385c5b3191161024457806385c5b319146107895780638a8c523c1461079f5780638da5cb5b146107b45780638f818b90146107d257600080fd5b806371538eed146106f157806375fed3c71461070757806378eec331146107275780637bce5a041461077357600080fd5b806363a95492116102b157806363a954921461066657806363fcc9221461068657806370a08231146106a6578063715018a6146106dc57600080fd5b806347062402146105fa57806359cd903114610610578063610e34b914610626578063625dd6051461064657600080fd5b80632b14ca561161035a578063395093511161032957806339509351146105845780633bf31454146105a45780633c8463a1146105c45780633d3359cb146105da57600080fd5b80632b14ca561461051b5780632c735ef814610531578063313ce56714610547578063351a964d1461056357600080fd5b806318160ddd1161039657806318160ddd1461049c5780631c8a6adc146104bb57806323b872dd146104d1578063289af0d8146104f157600080fd5b806301295143146103d357806306fdde03146103f557806308c436501461043c578063095ea7b31461047c57600080fd5b366103ce57005b600080fd5b3480156103df57600080fd5b506103f36103ee36600461265b565b610b9b565b005b34801561040157600080fd5b5060408051808201909152600c81526b1410549516481410549493d560a21b60208201525b6040516104339190612674565b60405180910390f35b34801561044857600080fd5b5061046c6104573660046126d7565b601a6020526000908152604090205460ff1681565b6040519015158152602001610433565b34801561048857600080fd5b5061046c6104973660046126f4565b610d81565b3480156104a857600080fd5b506002545b604051908152602001610433565b3480156104c757600080fd5b506104ad600a5481565b3480156104dd57600080fd5b5061046c6104ec366004612720565b610d9b565b3480156104fd57600080fd5b50610506610dbf565b60408051928352602083019190915201610433565b34801561052757600080fd5b506104ad60065481565b34801561053d57600080fd5b506104ad600e5481565b34801561055357600080fd5b5060405160128152602001610433565b34801561056f57600080fd5b5060145461046c906301000000900460ff1681565b34801561059057600080fd5b5061046c61059f3660046126f4565b610e41565b3480156105b057600080fd5b506103f36105bf366004612776565b610e63565b3480156105d057600080fd5b506104ad600c5481565b3480156105e657600080fd5b506103f36105f5366004612791565b610f32565b34801561060657600080fd5b506104ad60035481565b34801561061c57600080fd5b506104ad60135481565b34801561063257600080fd5b506103f3610641366004612791565b61101d565b34801561065257600080fd5b506103f36106613660046127b3565b6110fa565b34801561067257600080fd5b506103f361068136600461265b565b611290565b34801561069257600080fd5b506103f36106a13660046127e8565b6112c2565b3480156106b257600080fd5b506104ad6106c13660046126d7565b6001600160a01b031660009081526016602052604090205490565b3480156106e857600080fd5b506103f3611383565b3480156106fd57600080fd5b506104ad60105481565b34801561071357600080fd5b506103f361072236600461265b565b611397565b34801561073357600080fd5b5061075b7f00000000000000000000000073bb81df2262668cf0762978db1104dd538bc20e81565b6040516001600160a01b039091168152602001610433565b34801561077f57600080fd5b506104ad60055481565b34801561079557600080fd5b506104ad600b5481565b3480156107ab57600080fd5b506103f3611412565b3480156107c057600080fd5b506000546001600160a01b031661075b565b3480156107de57600080fd5b506105066114d6565b3480156107f357600080fd5b506104ad60085481565b34801561080957600080fd5b506103f3610818366004612776565b611556565b34801561082957600080fd5b506104ad6115ee565b34801561083e57600080fd5b5060408051808201909152600681526505041525459560d41b6020820152610426565b34801561086d57600080fd5b506104ad60125481565b34801561088357600080fd5b5061050661165e565b34801561089857600080fd5b5061046c6108a73660046126f4565b6116da565b3480156108b857600080fd5b5060155461075b906001600160a01b031681565b3480156108d857600080fd5b5061046c6108e73660046126f4565b611760565b3480156108f857600080fd5b506104ad61271081565b34801561090e57600080fd5b506104ad60095481565b34801561092457600080fd5b506104ad60075481565b34801561093a57600080fd5b5061046c6109493660046126d7565b60196020526000908152604090205460ff1681565b34801561096a57600080fd5b5060145461075b90600160281b90046001600160a01b031681565b34801561099157600080fd5b5060145461046c9062010000900460ff1681565b3480156109b157600080fd5b506104ad600f5481565b3480156109c757600080fd5b506103f36109d6366004612791565b611776565b3480156109e757600080fd5b50600161046c565b3480156109fb57600080fd5b506103f3610a0a3660046126d7565b611853565b348015610a1b57600080fd5b506103f3610a2a3660046126d7565b611915565b348015610a3b57600080fd5b506104ad600d5481565b348015610a5157600080fd5b5060145461046c9060ff1681565b348015610a6b57600080fd5b506103f3610a7a3660046127b3565b611b84565b348015610a8b57600080fd5b5060145461046c90600160201b900460ff1681565b348015610aac57600080fd5b506104ad60115481565b348015610ac257600080fd5b506104ad610ad1366004612818565b611c40565b348015610ae257600080fd5b5060145461046c90610100900460ff1681565b348015610b0157600080fd5b506104ad60045481565b348015610b1757600080fd5b5061046c610b263660046126d7565b60186020526000908152604090205460ff1681565b348015610b4757600080fd5b506103f3610b563660046126d7565b611c6b565b348015610b6757600080fd5b506103f3610b763660046127b3565b611ca6565b348015610b8757600080fd5b5060015461075b906001600160a01b031681565b6014805460ff60201b1916600160201b17905560108054829190600090610bc390849061285c565b90915550506040805160028082526060820183526000926020830190803683370190505090503081600081518110610bfd57610bfd61286f565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610c56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7a9190612885565b81600181518110610c8d57610c8d61286f565b6001600160a01b039283166020918202929092010152600154610cb39130911684611d55565b6040805183815260208101849052338183015242606082015290517fb933c1b294702108551eddf782a9c7d1a018b57f68ecf63bc59a1247daa19c309181900360800190a160015460145460405163791ac94760e01b81526001600160a01b039283169263791ac94792610d3e9287926000928892600160281b9091049091169042906004016128e6565b600060405180830381600087803b158015610d5857600080fd5b505af1158015610d6c573d6000803e3d6000fd5b50506014805460ff60201b1916905550505050565b600033610d8f818585611d55565b60019150505b92915050565b600033610da9858285611e1a565b610db4858585611e94565b9150505b9392505050565b6000806000600e5442610dd29190612922565b905060b48111610de95750606492610bb892509050565b60b481118015610dfb57506101a48111155b15610e0d575060649261038492509050565b6101a481118015610e2057506101cc8111155b15610e32575060649261264892509050565b60075460085492509250509091565b600033610d8f818585610e548383611c40565b610e5e919061285c565b611d55565b610e6b612142565b60145462010000900460ff1615610e95576040516334d2d20d60e01b815260040160405180910390fd5b801515601460019054906101000a900460ff16151503610ed05760405162a7e72d60e41b815281151560048201526024015b60405180910390fd5b6014805461ff0019811661010084151581029190911790925560405191900460ff16907ff99f9d4d81f67d0980beea494b4404ba3b8af1a0a2d493230f1a883efa027f2f90610f26908390859033904290612935565b60405180910390a15050565b610f3a612142565b60145462010000900460ff1615610f64576040516334d2d20d60e01b815260040160405180910390fd5b600a5482148015610f765750600b5481145b15610f945760405163e5cca11f60e01b815260040160405180910390fd5b6103e8610fa1828461285c565b10610fc35760405163bcbac79d60e01b81526103e86004820152602401610ec7565b600a8054600b8054928590558390556040519091907fc136c847ae8a727a6c93d9f84c5401e6a6441d05efd508466161ce23337cff5b9061100f9084908490889088903390429061295b565b60405180910390a150505050565b611025612142565b60145462010000900460ff161561104f576040516334d2d20d60e01b815260040160405180910390fd5b60045482148015611061575060055481145b1561107f5760405163e5cca11f60e01b815260040160405180910390fd5b6103e861108c828461285c565b106110ae5760405163bcbac79d60e01b81526103e86004820152602401610ec7565b6004805460058054928590558390556040519091907ffe2932ef95c6475e661168503e475c702d42a654b8894b63e1cf394485d2821c9061100f9084908490889088903390429061295b565b611102612142565b6001600160a01b0382166000908152601a602052604090205481151560ff9091161515036111465760405162a7e72d60e41b81528115156004820152602401610ec7565b306001600160a01b0316826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190612885565b6001600160a01b03161415801561123c5750306001600160a01b0316826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561120c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112309190612885565b6001600160a01b031614155b1561126557604051634726455360e11b81526001600160a01b0383166004820152602401610ec7565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b611298612142565b80601160008282546112aa919061285c565b9091555050426012556112bf8161dead61217e565b50565b6000612710600c546112d360025490565b6112dd919061298c565b6112e791906129a3565b90506001600e5410806113075750600d54600e546113059042612922565b105b801561132c57506001600160a01b03821660009081526019602052604090205460ff16155b1561137e578083611352846001600160a01b031660009081526016602052604090205490565b61135c919061285c565b111561137e57604051633ad0b44360e11b815260048101829052602401610ec7565b505050565b61138b612142565b6113956000612317565b565b61139f612142565b80601354036113c45760405163657e16cf60e01b815260048101829052602401610ec7565b6013805490829055604080518281526020810184905233918101919091524260608201527f9a9f4704ac409fe039e92a996e415370980275aaff2992936ed5b432886c55c590608001610f26565b61141a612142565b60145460ff1615611449576014546040516301bf623960e61b815260ff90911615156004820152602401610ec7565b601454610100900460ff161561148157601454604051630eff900b60e21b815261010090910460ff1615156004820152602401610ec7565b6014546301000000900460ff16156114bd5760145460405163610a8e6760e01b8152630100000090910460ff1615156004820152602401610ec7565b6014805463ff00ffff1916630100010117905542600e55565b6000806000600e54426114e99190612922565b905060b48111611500575060649261096092509050565b60b48111801561151257506101a48111155b15611524575060649261038492509050565b6101a48111801561153757506101cc8111155b1561154757506000928392509050565b60045460055492509250509091565b61155e612142565b801515601460039054906101000a900460ff161515036115945760405162a7e72d60e41b81528115156004820152602401610ec7565b6014805463ff000000198116630100000084151581029190911790925560405191900460ff16907fa9eb6c000d17475b17651469533695f7b673c93327fdbadf4341ebeb2607a04490610f26908390859033904290612935565b60166020527f0263c2b778d062355049effc2dece97bc6547ff8a88a3258daa512061c2153dd5461dead60009081527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b575460025491929161164f9190612922565b6116599190612922565b905090565b6000806000600e54426116719190612922565b905060b4811161168657506000928392509050565b60b48111801561169857506101a48111155b156116a857506000928392509050565b6101a4811180156116bb57506101cc8111155b156116cb57506000928392509050565b600a54600b5492509250509091565b600033816116e88286611c40565b9050838110156117485760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ec7565b6117558286868403611d55565b506001949350505050565b60003361176e818585611e94565b949350505050565b61177e612142565b60145462010000900460ff16156117a8576040516334d2d20d60e01b815260040160405180910390fd5b600754821480156117ba575060085481145b156117d85760405163e5cca11f60e01b815260040160405180910390fd5b6103e86117e5828461285c565b106118075760405163bcbac79d60e01b81526103e86004820152602401610ec7565b6007805460088054928590558390556040519091907ffd1d173bff70c08be0edb34ff54ac9f282d66241eb9848cdf123d283a7f354e69061100f9084908490889088903390429061295b565b61185b612142565b6014546001600160a01b03808316600160281b909204160361189b5760405163a936636960e01b81526001600160a01b0382166004820152602401610ec7565b601480546001600160a01b03838116600160281b81810265010000000000600160c81b0319851617909455604080519490930490911680845260208401919091523391830191909152426060830152907f8398165ebfaa5831ed8697905b76704b18bb44c19f6630c76c8fa68f32dc7dfe90608001610f26565b61191d612142565b6001546001600160a01b038083169116036119565760405163a936636960e01b81526001600160a01b0382166004820152602401610ec7565b600180546001600160a01b038381166001600160a01b0319831681178455600081815260186020908152604091829020805460ff19169096179095558051929093168083529382015233918101919091524260608201527fe1cb783288eddc7b22c25642a832d886a558be0dd900747310a34156b9fdcbbb9060800160405180910390a1600160009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a519190612885565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad79190612885565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015611b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b489190612885565b601580546001600160a01b0319166001600160a01b039290921691821790556000908152601a60205260409020805460ff191660011790555050565b611b8c612142565b6001600160a01b03821660009081526018602052604090205481151560ff909116151503611bd05760405162a7e72d60e41b81528115156004820152602401610ec7565b6001600160a01b03821660009081526018602052604090819020805483151560ff19821617909155905160ff909116907f4c18d53c2d0e765ff1dc3e5d53d8c51002cc0b5c114aa07199d629d54fad593e90611c33908390859033904290612935565b60405180910390a1505050565b6001600160a01b03918216600090815260176020908152604080832093909416825291909152205490565b611c73612142565b6001600160a01b038116611c9d5760405163b20f76e360e01b815260006004820152602401610ec7565b6112bf81612317565b611cae612142565b6001600160a01b03821660009081526019602052604090205481151560ff909116151503611cf25760405162a7e72d60e41b81528115156004820152602401610ec7565b6001600160a01b03821660009081526019602052604090819020805483151560ff19821617909155905160ff909116907f887bfffde87b3f64221a6b7de2ee5ef7503d2388b41b153cfb301c26087a7f3c90611c33908390859033904290612935565b6001600160a01b038316611d8757604051634726455360e11b81526001600160a01b0384166004820152602401610ec7565b6001600160a01b038216611db957604051634726455360e11b81526001600160a01b0383166004820152602401610ec7565b6001600160a01b0383811660008181526017602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611e268484611c40565b90506000198114611e8e5781811015611e815760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ec7565b611e8e8484848403611d55565b50505050565b60006001600160a01b038416611ec857604051634726455360e11b81526001600160a01b0385166004820152602401610ec7565b6001600160a01b038316611efa57604051634726455360e11b81526001600160a01b0384166004820152602401610ec7565b60145460ff16158015611f2657506001600160a01b03841660009081526018602052604090205460ff16155b8015611f4b57506001600160a01b03831660009081526018602052604090205460ff16155b15611f6957604051632b61510560e11b815260040160405180910390fd5b601454600160201b900460ff1680611f9957506001600160a01b03841660009081526018602052604090205460ff165b15611fb057611fa9848484612367565b9050610db8565b6015546001600160a01b03858116911614801590611fd757506014546301000000900460ff165b8015611ff457506013543060009081526016602052604090205410155b80156120115750601354601054600f5461200e9190612922565b10155b1561202157612021601354610b9b565b6014548290610100900460ff16801561205357506001600160a01b03851660009081526018602052604090205460ff16155b801561207857506001600160a01b03841660009081526018602052604090205460ff16155b1561208b57612088858585612400565b90505b61209581856112c2565b6001600160a01b0385166000908152601660205260409020548111156120cd5760405162461bcd60e51b8152600401610ec7906129c5565b6001600160a01b03808616600081815260166020526040808220805486900390559287168082529083902080548501905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061212f9085815260200190565b60405180910390a3506001949350505050565b336121556000546001600160a01b031690565b6001600160a01b031614611395576040516332b2baa360e01b8152336004820152602401610ec7565b6014805460ff60201b1916600160201b17905561deac1933016121b857604051634726455360e11b815261dead6004820152602401610ec7565b6040805160028082526060820183526000926020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122469190612885565b816000815181106122595761225961286f565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061228d5761228d61286f565b6001600160a01b03928316602091820292909201015260015460405163b6f9de9560e01b815291169063b6f9de959085906122d390600090869088904290600401612a0b565b6000604051808303818588803b1580156122ec57600080fd5b505af1158015612300573d6000803e3d6000fd5b50506014805460ff60201b19169055505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316600090815260166020526040812054828110156123a05760405162461bcd60e51b8152600401610ec7906129c5565b6001600160a01b0380861660008181526016602052604080822087860390559287168082529083902080548701905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061212f9087815260200190565b6014805460ff60201b1916600160201b1790556001600160a01b0383166000908152601a60205260408120548190819060ff161561246c576124406114d6565b90925090506000612451828461285c565b111561246c5761246386858484612544565b92505050612530565b6001600160a01b0385166000908152601a602052604090205460ff16156124b857612495610dbf565b909250905060006124a6828461285c565b11156124b85761246386858484612544565b6001600160a01b0386166000908152601a602052604090205460ff161580156124fa57506001600160a01b0385166000908152601a602052604090205460ff16155b1561252a5761250761165e565b90925090506000612518828461285c565b111561252a5761246386858484612544565b83925050505b6014805460ff60201b191690559392505050565b6014805460ff60201b1916600160201b179055600080612710612567858761298c565b61257191906129a3565b90506000612710612582858861298c565b61258c91906129a3565b905060008161259b8489612922565b6125a59190612922565b905060006125b3838561285c565b11156125c4576125c48884846125dc565b6014805460ff60201b19169055979650505050505050565b6014805460ff60201b1916600160201b17905560006125fb828461285c565b905080600f600082825461260f919061285c565b925050819055508260106000828254612628919061285c565b9091555061263b90508461dead85612367565b50612647843084612367565b50506014805460ff60201b19169055505050565b60006020828403121561266d57600080fd5b5035919050565b600060208083528351808285015260005b818110156126a157858101830151858201604001528201612685565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146112bf57600080fd5b6000602082840312156126e957600080fd5b8135610db8816126c2565b6000806040838503121561270757600080fd5b8235612712816126c2565b946020939093013593505050565b60008060006060848603121561273557600080fd5b8335612740816126c2565b92506020840135612750816126c2565b929592945050506040919091013590565b8035801515811461277157600080fd5b919050565b60006020828403121561278857600080fd5b610db882612761565b600080604083850312156127a457600080fd5b50508035926020909101359150565b600080604083850312156127c657600080fd5b82356127d1816126c2565b91506127df60208401612761565b90509250929050565b600080604083850312156127fb57600080fd5b82359150602083013561280d816126c2565b809150509250929050565b6000806040838503121561282b57600080fd5b8235612836816126c2565b9150602083013561280d816126c2565b634e487b7160e01b600052601160045260246000fd5b80820180821115610d9557610d95612846565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561289757600080fd5b8151610db8816126c2565b600081518084526020808501945080840160005b838110156128db5781516001600160a01b0316875295820195908201906001016128b6565b509495945050505050565b85815284602082015260a06040820152600061290560a08301866128a2565b6001600160a01b0394909416606083015250608001529392505050565b81810381811115610d9557610d95612846565b931515845291151560208401526001600160a01b03166040830152606082015260800190565b9586526020860194909452604085019290925260608401526001600160a01b0316608083015260a082015260c00190565b8082028115828204841417610d9557610d95612846565b6000826129c057634e487b7160e01b600052601260045260246000fd5b500490565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b848152608060208201526000612a2460808301866128a2565b6001600160a01b0394909416604083015250606001529291505056fea2646970667358221220da918ee548f1c878a2d4696d08054bb54e751278d60bb7c852fdff41286e68a064736f6c63430008120033

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

0000000000000000000000008cf3144ba596d87a3cb8c12f73814bec6eea3d090000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : feeReceiverAdr (address): 0x8cf3144bA596d87A3Cb8c12F73814bec6eEA3d09
Arg [1] : routerAdr (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000008cf3144ba596d87a3cb8c12f73814bec6eea3d09
Arg [1] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

9222:21190:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14336:611;;;;;;;;;;-1:-1:-1;14336:611:0;;;;;:::i;:::-;;:::i;:::-;;24577:101;;;;;;;;;;-1:-1:-1;24666:4:0;;;;;;;;;;;;-1:-1:-1;;;24666:4:0;;;;24577:101;;;;;;;:::i;:::-;;;;;;;;10892:40;;;;;;;;;;-1:-1:-1;10892:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1305:14:1;;1298:22;1280:41;;1268:2;1253:18;10892:40:0;1140:187:1;25544:205:0;;;;;;;;;;-1:-1:-1;25544:205:0;;;;;:::i;:::-;;:::i;24920:108::-;;;;;;;;;;-1:-1:-1;25008:12:0;;24920:108;;;1798:25:1;;;1786:2;1771:18;24920:108:0;1652:177:1;9838:34:0;;;;;;;;;;;;;;;;25761:246;;;;;;;;;;-1:-1:-1;25761:246:0;;;;;:::i;:::-;;:::i;16088:453::-;;;;;;;;;;;;;:::i;:::-;;;;2469:25:1;;;2525:2;2510:18;;2503:34;;;;2442:18;16088:453:0;2295:248:1;9683:28:0;;;;;;;;;;;;;;;;10012:33;;;;;;;;;;;;;;;;24807:101;;;;;;;;;;-1:-1:-1;24807:101:0;;9466:2;2690:36:1;;2678:2;2663:18;24807:101:0;2548:184:1;10442:33:0;;;;;;;;;;-1:-1:-1;10442:33:0;;;;;;;;;;;26019:247;;;;;;;;;;-1:-1:-1;26019:247:0;;;;;:::i;:::-;;:::i;17842:363::-;;;;;;;;;;-1:-1:-1;17842:363:0;;;;;:::i;:::-;;:::i;9925:30::-;;;;;;;;;;;;;;;;19517:680;;;;;;;;;;-1:-1:-1;19517:680:0;;;;;:::i;:::-;;:::i;9574:25::-;;;;;;;;;;;;;;;;10236:36;;;;;;;;;;;;;;;;18213:640;;;;;;;;;;-1:-1:-1;18213:640:0;;;;;:::i;:::-;;:::i;21647:326::-;;;;;;;;;;-1:-1:-1;21647:326:0;;;;;:::i;:::-;;:::i;23900:213::-;;;;;;;;;;-1:-1:-1;23900:213:0;;;;;:::i;:::-;;:::i;15231:397::-;;;;;;;;;;-1:-1:-1;15231:397:0;;;;;:::i;:::-;;:::i;25040:127::-;;;;;;;;;;-1:-1:-1;25040:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;25141:18:0;25114:7;25141:18;;;:9;:18;;;;;;;25040:127;8491:103;;;;;;;;;;;;;:::i;10095:35::-;;;;;;;;;;;;;;;;17530:304;;;;;;;;;;-1:-1:-1;17530:304:0;;;;;:::i;:::-;;:::i;10517:37::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4144:32:1;;;4126:51;;4114:2;4099:18;10517:37:0;3980:203:1;9642:34:0;;;;;;;;;;;;;;;;9879:39;;;;;;;;;;;;;;;;13893:415;;;;;;;;;;;;;:::i;8233:87::-;;;;;;;;;;-1:-1:-1;8279:7:0;8306:6;-1:-1:-1;;;;;8306:6:0;8233:87;;15636:444;;;;;;;;;;;;;:::i;9757:37::-;;;;;;;;;;;;;;;;20546:317;;;;;;;;;;-1:-1:-1;20546:317:0;;;;;:::i;:::-;;:::i;15070:153::-;;;;;;;;;;;;;:::i;24690:105::-;;;;;;;;;;-1:-1:-1;24781:6:0;;;;;;;;;;;;-1:-1:-1;;;24781:6:0;;;;24690:105;;10186:43;;;;;;;;;;;;;;;;16549:449;;;;;;;;;;;;;:::i;26278:445::-;;;;;;;;;;-1:-1:-1;26278:445:0;;;;;:::i;:::-;;:::i;10596:19::-;;;;;;;;;;-1:-1:-1;10596:19:0;;;;-1:-1:-1;;;;;10596:19:0;;;25179:184;;;;;;;;;;-1:-1:-1;25179:184:0;;;;;:::i;:::-;;:::i;9518:47::-;;;;;;;;;;;;9559:6;9518:47;;9801:30;;;;;;;;;;;;;;;;9718:32;;;;;;;;;;;;;;;;10828:57;;;;;;;;;;-1:-1:-1;10828:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10561:26;;;;;;;;;;-1:-1:-1;10561:26:0;;;;-1:-1:-1;;;10561:26:0;;-1:-1:-1;;;;;10561:26:0;;;10404:31;;;;;;;;;;-1:-1:-1;10404:31:0;;;;;;;;;;;10052:36;;;;;;;;;;;;;;;;18861:648;;;;;;;;;;-1:-1:-1;18861:648:0;;;;;:::i;:::-;;:::i;14974:88::-;;;;;;;;;;-1:-1:-1;10314:4:0;14974:88;;20205:333;;;;;;;;;;-1:-1:-1;20205:333:0;;;;;:::i;:::-;;:::i;17026:496::-;;;;;;;;;;-1:-1:-1;17026:496:0;;;;;:::i;:::-;;:::i;9962:43::-;;;;;;;;;;;;;;;;10327:32;;;;;;;;;;-1:-1:-1;10327:32:0;;;;;;;;20871:360;;;;;;;;;;-1:-1:-1;20871:360:0;;;;;:::i;:::-;;:::i;10482:26::-;;;;;;;;;;-1:-1:-1;10482:26:0;;;;-1:-1:-1;;;10482:26:0;;;;;;10137:42;;;;;;;;;;;;;;;;25375:157;;;;;;;;;;-1:-1:-1;25375:157:0;;;;;:::i;:::-;;:::i;10366:31::-;;;;;;;;;;-1:-1:-1;10366:31:0;;;;;;;;;;;9606:29;;;;;;;;;;;;;;;;10772:49;;;;;;;;;;-1:-1:-1;10772:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8602:213;;;;;;;;;;-1:-1:-1;8602:213:0;;;;;:::i;:::-;;:::i;21239:400::-;;;;;;;;;;-1:-1:-1;21239:400:0;;;;;:::i;:::-;;:::i;9300:21::-;;;;;;;;;;-1:-1:-1;9300:21:0;;;;-1:-1:-1;;;;;9300:21:0;;;14336:611;10991:6;:13;;-1:-1:-1;;;;10991:13:0;-1:-1:-1;;;10991:13:0;;;14417:16:::1;:34:::0;;14437:14;;14417:16;10991:13;;14417:34:::1;::::0;14437:14;;14417:34:::1;:::i;:::-;::::0;;;-1:-1:-1;;14488:16:0::1;::::0;;14502:1:::1;14488:16:::0;;;;;::::1;::::0;;14464:21:::1;::::0;14488:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14488:16:0::1;14464:40;;14533:4;14515;14520:1;14515:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14515:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14559:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;14559:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;14515:7;;14559:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14549:4;14554:1;14549:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14549:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14617:6:::1;::::0;14585:56:::1;::::0;14602:4:::1;::::0;14617:6:::1;14626:14:::0;14585:8:::1;:56::i;:::-;14667:71;::::0;;5817:25:1;;;5873:2;5858:18;;5851:34;;;14710:10:0::1;5901:18:1::0;;;5894:60;14722:15:0::1;5985:2:1::0;5970:18;;5963:34;14667:71:0;;::::1;::::0;;;;5804:3:1;14667:71:0;;::::1;14751:6;::::0;14887:11:::1;::::0;14751:188:::1;::::0;-1:-1:-1;;;14751:188:0;;-1:-1:-1;;;;;14751:6:0;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14823:14;;14751:6:::1;::::0;14868:4;;-1:-1:-1;;;14887:11:0;;::::1;::::0;;::::1;::::0;14913:15:::1;::::0;14751:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11027:6:0;:14;;-1:-1:-1;;;;11027:14:0;;;-1:-1:-1;;;;14336:611:0:o;25544:205::-;25627:4;25663:10;25684:35;25663:10;25703:7;25712:6;25684:8;:35::i;:::-;25737:4;25730:11;;;25544:205;;;;;:::o;25761:246::-;25860:4;25895:10;25916:38;25932:4;25895:10;25947:6;25916:15;:38::i;:::-;25972:27;25982:4;25988:2;25992:6;25972:9;:27::i;:::-;25965:34;;;25761:246;;;;;;:::o;16088:453::-;16131:7;16140;16160:12;16193:14;;16175:15;:32;;;;:::i;:::-;16160:47;;16230:9;16222:4;:17;16218:69;;-1:-1:-1;16264:3:0;;16269:5;;-1:-1:-1;16088:453:0;-1:-1:-1;16088:453:0:o;16218:69::-;16308:9;16301:4;:16;:37;;;;;16329:9;16321:4;:17;;16301:37;16297:87;;;-1:-1:-1;16363:3:0;;16368;;-1:-1:-1;16088:453:0;-1:-1:-1;16088:453:0:o;16297:87::-;16405:9;16398:4;:16;:39;;;;;16426:11;16418:4;:19;;16398:39;16394:91;;;-1:-1:-1;16462:3:0;;16467:5;;-1:-1:-1;16088:453:0;-1:-1:-1;16088:453:0:o;16394:91::-;16503:11;;16516:16;;16495:38;;;;;16088:453;;:::o;26019:247::-;26109:4;26145:10;26166:70;26145:10;26185:7;26225:10;26194:28;26145:10;26185:7;26194:9;:28::i;:::-;:41;;;;:::i;:::-;26166:8;:70::i;17842:363::-;7831:13;:11;:13::i;:::-;17917:11:::1;::::0;;;::::1;;;17913:46;;;17939:17;;-1:-1:-1::0;;;17939:17:0::1;;;;;;;;;;;17913:46;17988:9;17973:24;;:11;;;;;;;;;;;:24;;::::0;17969:74:::1;;18008:32;::::0;-1:-1:-1;;;18008:32:0;;1305:14:1;;1298:22;18008:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;18008:32:0::1;;;;;;;;17969:74;18070:11;::::0;;-1:-1:-1;;18092:23:0;::::1;18070:11;18092:23:::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;18131:66:::1;::::0;18070:11;;::::1;;;::::0;18131:66:::1;::::0;::::1;::::0;18070:11;;18092:23;;18169:10:::1;::::0;18181:15:::1;::::0;18131:66:::1;:::i;:::-;;;;;;;;17902:303;17842:363:::0;:::o;19517:680::-;7831:13;:11;:13::i;:::-;19623:11:::1;::::0;;;::::1;;;19619:46;;;19645:17;;-1:-1:-1::0;;;19645:17:0::1;;;;;;;;;;;19619:46;19693:15;;19679:10;:29;:72;;;;;19731:20;;19712:15;:39;19679:72;19675:112;;;19762:22;;-1:-1:-1::0;;;19762:22:0::1;;;;;;;;;;;19675:112;19833:5;19801:28;19814:15:::0;19801:10;:28:::1;:::i;:::-;:37;19797:81;;19849:26;::::0;-1:-1:-1;;;19849:26:0;;19869:5:::1;19849:26;::::0;::::1;1798:25:1::0;1771:18;;19849:26:0::1;1652:177:1::0;19797:81:0::1;19909:15;::::0;;19961:20:::1;::::0;;19992:28;;;;20031:38;;;20085:104:::1;::::0;19909:15;;19961:20;20085:104:::1;::::0;::::1;::::0;19909:15;;19961:20;;20010:10;;20054:15;;20161:10:::1;::::0;20173:15:::1;::::0;20085:104:::1;:::i;:::-;;;;;;;;19608:589;;19517:680:::0;;:::o;18213:640::-;7831:13;:11;:13::i;:::-;18314:11:::1;::::0;;;::::1;;;18310:46;;;18336:17;;-1:-1:-1::0;;;18336:17:0::1;;;;;;;;;;;18310:46;18384:10;;18370;:24;:62;;;;;18417:15;;18398;:34;18370:62;18366:102;;;18443:22;;-1:-1:-1::0;;;18443:22:0::1;;;;;;;;;;;18366:102;18514:5;18482:28;18495:15:::0;18482:10;:28:::1;:::i;:::-;:37;18478:81;;18530:26;::::0;-1:-1:-1;;;18530:26:0;;18550:5:::1;18530:26;::::0;::::1;1798:25:1::0;1771:18;;18530:26:0::1;1652:177:1::0;18478:81:0::1;18590:10;::::0;;18637:15:::1;::::0;;18663:23;;;;18697:33;;;18746:99:::1;::::0;18590:10;;18637:15;18746:99:::1;::::0;::::1;::::0;18590:10;;18637:15;;18676:10;;18715:15;;18817:10:::1;::::0;18829:15:::1;::::0;18746:99:::1;:::i;21647:326::-:0;7831:13;:11;:13::i;:::-;-1:-1:-1;;;;;21729:16:0;::::1;;::::0;;;:8:::1;:16;::::0;;;;;:26;::::1;;:16;::::0;;::::1;:26;;::::0;21725:73:::1;;21766:29;::::0;-1:-1:-1;;;21766:29:0;;1305:14:1;;1298:22;21766:29:0::1;::::0;::::1;1280:41:1::0;1253:18;;21766:29:0::1;1140:187:1::0;21725:73:0::1;21846:4;-1:-1:-1::0;;;;;21812:39:0::1;21818:6;-1:-1:-1::0;;;;;21812:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21812:39:0::1;;;:82;;;;;21889:4;-1:-1:-1::0;;;;;21855:39:0::1;21861:6;-1:-1:-1::0;;;;;21855:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21855:39:0::1;;;21812:82;21808:122;;;21905:22;::::0;-1:-1:-1;;;21905:22:0;;-1:-1:-1;;;;;4144:32:1;;21905:22:0::1;::::0;::::1;4126:51:1::0;4099:18;;21905:22:0::1;3980:203:1::0;21808:122:0::1;-1:-1:-1::0;;;;;21940:16:0;;;::::1;;::::0;;;:8:::1;:16;::::0;;;;:25;;-1:-1:-1;;21940:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21647:326::o;23900:213::-;7831:13;:11;:13::i;:::-;24001:6:::1;23974:23;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;24045:15:0::1;24018:24;:42:::0;24071:34:::1;24081:6:::0;24097::::1;24071:9;:34::i;:::-;23900:213:::0;:::o;15231:397::-;15308:13;9559:6;15340:11;;15324:13;25008:12;;;24920:108;15324:13;:27;;;;:::i;:::-;:44;;;;:::i;:::-;15308:60;;15401:1;15384:14;;:18;:72;;;-1:-1:-1;15441:15:0;;15424:14;;15406:32;;:15;:32;:::i;:::-;:50;15384:72;15383:108;;;;-1:-1:-1;;;;;;15462:29:0;;;;;;:25;:29;;;;;;;;15461:30;15383:108;15379:242;;;15537:5;15528:6;15512:13;15522:2;-1:-1:-1;;;;;25141:18:0;25114:7;25141:18;;;:9;:18;;;;;;;25040:127;15512:13;:22;;;;:::i;:::-;:30;15508:102;;;15570:24;;-1:-1:-1;;;15570:24:0;;;;;1798:25:1;;;1771:18;;15570:24:0;1652:177:1;15508:102:0;15297:331;15231:397;;:::o;8491:103::-;7831:13;:11;:13::i;:::-;8556:30:::1;8583:1;8556:18;:30::i;:::-;8491:103::o:0;17530:304::-;7831:13;:11;:13::i;:::-;17618:10:::1;17607:7;;:21:::0;17603:72:::1;;17639:33;::::0;-1:-1:-1;;;17639:33:0;;::::1;::::0;::::1;1798:25:1::0;;;1771:18;;17639:33:0::1;1652:177:1::0;17603:72:0::1;17706:7;::::0;;17724:20;;;;17760:66:::1;::::0;;5817:25:1;;;5873:2;5858:18;;5851:34;;;17798:10:0::1;5901:18:1::0;;;5894:60;;;;17810:15:0::1;5985:2:1::0;5970:18;;5963:34;17760:66:0::1;::::0;5804:3:1;5789:19;17760:66:0::1;5586:417:1::0;13893:415:0;7831:13;:11;:13::i;:::-;13952:12:::1;::::0;::::1;;13948:68;;;14000:12;::::0;13975:38:::1;::::0;-1:-1:-1;;;13975:38:0;;14000:12:::1;::::0;;::::1;1305:14:1::0;1298:22;13975:38:0::1;::::0;::::1;1280:41:1::0;1253:18;;13975:38:0::1;1140:187:1::0;13948:68:0::1;14030:11;::::0;::::1;::::0;::::1;;;14026:63;;;14074:11;::::0;14052:34:::1;::::0;-1:-1:-1;;;14052:34:0;;14074:11:::1;::::0;;::::1;;;1305:14:1::0;1298:22;14052:34:0::1;::::0;::::1;1280:41:1::0;1253:18;;14052:34:0::1;1140:187:1::0;14026:63:0::1;14103:13;::::0;;;::::1;;;14099:69;;;14151:13;::::0;14127:38:::1;::::0;-1:-1:-1;;;14127:38:0;;14151:13;;;::::1;;;1305:14:1::0;1298:22;14127:38:0::1;::::0;::::1;1280:41:1::0;1253:18;;14127:38:0::1;1140:187:1::0;14099:69:0::1;14178:12;:19:::0;;-1:-1:-1;;14237:20:0;;;;;14285:15:::1;14268:14;:32:::0;13893:415::o;15636:444::-;15678:7;15687;15707:12;15740:14;;15722:15;:32;;;;:::i;:::-;15707:47;;15777:9;15769:4;:17;15765:69;;-1:-1:-1;15811:3:0;;15816:5;;-1:-1:-1;15636:444:0;-1:-1:-1;15636:444:0:o;15765:69::-;15855:9;15848:4;:16;:37;;;;;15876:9;15868:4;:17;;15848:37;15844:87;;;-1:-1:-1;15910:3:0;;15915;;-1:-1:-1;15636:444:0;-1:-1:-1;15636:444:0:o;15844:87::-;15952:9;15945:4;:16;:39;;;;;15973:11;15965:4;:19;;15945:39;15941:85;;;-1:-1:-1;16009:1:0;;;;-1:-1:-1;15636:444:0;-1:-1:-1;15636:444:0:o;15941:85::-;16044:10;;16056:15;;16036:36;;;;;15636:444;;:::o;20546:317::-;7831:13;:11;:13::i;:::-;20640:9:::1;20623:26;;:13;;;;;;;;;;;:26;;::::0;20619:76:::1;;20660:32;::::0;-1:-1:-1;;;20660:32:0;;1305:14:1;;1298:22;20660:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;20660:32:0::1;1140:187:1::0;20619:76:0::1;20722:13;::::0;;-1:-1:-1;;20746:25:0;::::1;20722:13:::0;20746:25;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;20787:68:::1;::::0;20722:13;;::::1;;;::::0;20787:68:::1;::::0;::::1;::::0;20722:13;;20746:25;;20827:10:::1;::::0;20839:15:::1;::::0;20787:68:::1;:::i;15070:153::-:0;25141:9;:18;;;;15183:6;15122:7;25141:18;;;;;25008:12;;15122:7;;25141:18;15149:42;;25141:18;15149:42;:::i;:::-;:66;;;;:::i;:::-;15142:73;;15070:153;:::o;16549:449::-;16596:7;16605;16625:12;16658:14;;16640:15;:32;;;;:::i;:::-;16625:47;;16695:9;16687:4;:17;16683:63;;-1:-1:-1;16729:1:0;;;;-1:-1:-1;16549:449:0;-1:-1:-1;16549:449:0:o;16683:63::-;16767:9;16760:4;:16;:37;;;;;16788:9;16780:4;:17;;16760:37;16756:83;;;-1:-1:-1;16822:1:0;;;;-1:-1:-1;16549:449:0;-1:-1:-1;16549:449:0:o;16756:83::-;16860:9;16853:4;:16;:39;;;;;16881:11;16873:4;:19;;16853:39;16849:85;;;-1:-1:-1;16917:1:0;;;;-1:-1:-1;16549:449:0;-1:-1:-1;16549:449:0:o;16849:85::-;16952:15;;16969:20;;16944:46;;;;;16549:449;;:::o;26278:445::-;26373:4;26409:10;26373:4;26457:28;26409:10;26477:7;26457:9;:28::i;:::-;26430:55;;26524:15;26504:16;:35;;26496:85;;;;-1:-1:-1;;;26496:85:0;;8992:2:1;26496:85:0;;;8974:21:1;9031:2;9011:18;;;9004:30;9070:34;9050:18;;;9043:62;-1:-1:-1;;;9121:18:1;;;9114:35;9166:19;;26496:85:0;8790:401:1;26496:85:0;26617:63;26626:8;26636:7;26664:15;26645:16;:34;26617:8;:63::i;:::-;-1:-1:-1;26711:4:0;;26278:445;-1:-1:-1;;;;26278:445:0:o;25179:184::-;25260:4;25296:10;25324:31;25296:10;25344:2;25348:6;25324:9;:31::i;:::-;25317:38;25179:184;-1:-1:-1;;;;25179:184:0:o;18861:648::-;7831:13;:11;:13::i;:::-;18963:11:::1;::::0;;;::::1;;;18959:46;;;18985:17;;-1:-1:-1::0;;;18985:17:0::1;;;;;;;;;;;18959:46;19033:11;;19019:10;:25;:64;;;;;19067:16;;19048:15;:35;19019:64;19015:104;;;19094:22;;-1:-1:-1::0;;;19094:22:0::1;;;;;;;;;;;19015:104;19165:5;19133:28;19146:15:::0;19133:10;:28:::1;:::i;:::-;:37;19129:81;;19181:26;::::0;-1:-1:-1;;;19181:26:0;;19201:5:::1;19181:26;::::0;::::1;1798:25:1::0;1771:18;;19181:26:0::1;1652:177:1::0;19129:81:0::1;19241:11;::::0;;19289:16:::1;::::0;;19316:24;;;;19351:34;;;19401:100:::1;::::0;19241:11;;19289:16;19401:100:::1;::::0;::::1;::::0;19241:11;;19289:16;;19330:10;;19370:15;;19473:10:::1;::::0;19485:15:::1;::::0;19401:100:::1;:::i;20205:333::-:0;7831:13;:11;:13::i;:::-;20287:11:::1;::::0;-1:-1:-1;;;;;20287:26:0;;::::1;-1:-1:-1::0;;;20287:11:0;;::::1;;:26:::0;20283:80:::1;;20324:36;::::0;-1:-1:-1;;;20324:36:0;;-1:-1:-1;;;;;4144:32:1;;20324:36:0::1;::::0;::::1;4126:51:1::0;4099:18;;20324:36:0::1;3980:203:1::0;20283:80:0::1;20395:11;::::0;;-1:-1:-1;;;;;20417:25:0;;::::1;-1:-1:-1::0;;;20417:25:0;;::::1;-1:-1:-1::0;;;;;;20417:25:0;::::1;;::::0;;;20458:72:::1;::::0;;20395:11;;;::::1;::::0;;::::1;9465:34:1::0;;;9530:2;9515:18;;9508:43;;;;20502:10:0::1;9567:18:1::0;;;9560:43;;;;20514:15:0::1;9634:2:1::0;9619:18;;9612:34;20395:11:0;20458:72:::1;::::0;9414:3:1;9399:19;20458:72:0::1;9196:456:1::0;17026:496:0;7831:13;:11;:13::i;:::-;17109:6:::1;::::0;-1:-1:-1;;;;;17101:28:0;;::::1;17109:6:::0;::::1;17101:28:::0;17097:80:::1;;17140:34;::::0;-1:-1:-1;;;17140:34:0;;-1:-1:-1;;;;;4144:32:1;;17140:34:0::1;::::0;::::1;4126:51:1::0;4099:18;;17140:34:0::1;3980:203:1::0;17097:80:0::1;17215:6;::::0;;-1:-1:-1;;;;;17233:27:0;;::::1;-1:-1:-1::0;;;;;;17233:27:0;::::1;::::0;::::1;::::0;;-1:-1:-1;17281:28:0;;;:17:::1;:28;::::0;;;;;;;;:35;;-1:-1:-1;;17281:35:0::1;::::0;;::::1;::::0;;;17334:63;;17215:6;;;::::1;9465:34:1::0;;;9515:18;;;9508:43;17369:10:0::1;9567:18:1::0;;;9560:43;;;;17381:15:0::1;9634:2:1::0;9619:18;;9612:34;17334:63:0::1;::::0;9414:3:1;9399:19;17334:63:0::1;;;;;;;17424:6;;;;;;;;;-1:-1:-1::0;;;;;17424:6:0::1;-1:-1:-1::0;;;;;17424:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17415:37:0::1;;17461:4;17468:6;;;;;;;;;-1:-1:-1::0;;;;;17468:6:0::1;-1:-1:-1::0;;;;;17468:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17415:67;::::0;-1:-1:-1;;;;;;17415:67:0::1;::::0;;;;;;-1:-1:-1;;;;;9887:15:1;;;17415:67:0::1;::::0;::::1;9869:34:1::0;9939:15;;9919:18;;;9912:43;9804:18;;17415:67:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17408:4;:74:::0;;-1:-1:-1;;;;;;17408:74:0::1;-1:-1:-1::0;;;;;17408:74:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;17493:14:0;;;:8:::1;:14;::::0;;;;:21;;-1:-1:-1;;17493:21:0::1;-1:-1:-1::0;17493:21:0::1;::::0;;-1:-1:-1;;17026:496:0:o;20871:360::-;7831:13;:11;:13::i;:::-;-1:-1:-1;;;;;20963:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;:36;::::1;;:23;::::0;;::::1;:36;;::::0;20959:86:::1;;21010:32;::::0;-1:-1:-1;;;21010:32:0;;1305:14:1;;1298:22;21010:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;21010:32:0::1;1140:187:1::0;20959:86:0::1;-1:-1:-1::0;;;;;21072:23:0;::::1;21055:14;21072:23:::0;;;:17:::1;:23;::::0;;;;;;;;21106:35;::::1;;-1:-1:-1::0;;21106:35:0;::::1;;::::0;;;21157:66;;21072:23:::1;::::0;;::::1;::::0;21157:66:::1;::::0;::::1;::::0;21072:23;;21132:9;;21195:10:::1;::::0;21207:15:::1;::::0;21157:66:::1;:::i;:::-;;;;;;;;20948:283;20871:360:::0;;:::o;25375:157::-;-1:-1:-1;;;;;25494:21:0;;;25467:7;25494:21;;;:11;:21;;;;;;;;:30;;;;;;;;;;;;;25375:157::o;8602:213::-;7831:13;:11;:13::i;:::-;-1:-1:-1;;;;;8687:22:0;::::1;8683:86;;8733:24;::::0;-1:-1:-1;;;8733:24:0;;8754:1:::1;8733:24;::::0;::::1;4126:51:1::0;4099:18;;8733:24:0::1;3980:203:1::0;8683:86:0::1;8779:28;8798:8;8779:18;:28::i;21239:400::-:0;7831:13;:11;:13::i;:::-;-1:-1:-1;;;;;21339:31:0;::::1;;::::0;;;:25:::1;:31;::::0;;;;;:44;::::1;;:31;::::0;;::::1;:44;;::::0;21335:94:::1;;21394:32;::::0;-1:-1:-1;;;21394:32:0;;1305:14:1;;1298:22;21394:32:0::1;::::0;::::1;1280:41:1::0;1253:18;;21394:32:0::1;1140:187:1::0;21335:94:0::1;-1:-1:-1::0;;;;;21456:31:0;::::1;21439:14;21456:31:::0;;;:25:::1;:31;::::0;;;;;;;;21498:43;::::1;;-1:-1:-1::0;;21498:43:0;::::1;;::::0;;;21557:74;;21456:31:::1;::::0;;::::1;::::0;21557:74:::1;::::0;::::1;::::0;21456:31;;21532:9;;21603:10:::1;::::0;21615:15:::1;::::0;21557:74:::1;:::i;27051:343::-:0;-1:-1:-1;;;;;27152:22:0;;27148:64;;27185:24;;-1:-1:-1;;;27185:24:0;;-1:-1:-1;;;;;4144:32:1;;27185:24:0;;;4126:51:1;4099:18;;27185:24:0;3980:203:1;27148:64:0;-1:-1:-1;;;;;27226:21:0;;27222:62;;27258:23;;-1:-1:-1;;;27258:23:0;;-1:-1:-1;;;;;4144:32:1;;27258:23:0;;;4126:51:1;4099:18;;27258:23:0;3980:203:1;27222:62:0;-1:-1:-1;;;;;27296:21:0;;;;;;;:11;:21;;;;;;;;:30;;;;;;;;;;;;;:39;;;27351:35;;1798:25:1;;;27351:35:0;;1771:18:1;27351:35:0;;;;;;;27051:343;;;:::o;27406:428::-;27510:24;27537:28;27547:8;27557:7;27537:9;:28::i;:::-;27510:55;;-1:-1:-1;;27580:16:0;:37;27576:251;;27662:6;27642:16;:26;;27634:68;;;;-1:-1:-1;;;27634:68:0;;10168:2:1;27634:68:0;;;10150:21:1;10207:2;10187:18;;;10180:30;10246:31;10226:18;;;10219:59;10295:18;;27634:68:0;9966:353:1;27634:68:0;27746:54;27755:8;27765:7;27793:6;27774:16;:25;27746:8;:54::i;:::-;27499:335;27406:428;;;:::o;28321:1202::-;28408:4;-1:-1:-1;;;;;28429:18:0;;28425:56;;28458:20;;-1:-1:-1;;;28458:20:0;;-1:-1:-1;;;;;4144:32:1;;28458:20:0;;;4126:51:1;4099:18;;28458:20:0;3980:203:1;28425:56:0;-1:-1:-1;;;;;28495:16:0;;28491:52;;28522:18;;-1:-1:-1;;;28522:18:0;;-1:-1:-1;;;;;4144:32:1;;28522:18:0;;;4126:51:1;4099:18;;28522::0;3980:203:1;28491:52:0;28560:12;;;;28559:13;:41;;;;-1:-1:-1;;;;;;28577:23:0;;;;;;:17;:23;;;;;;;;28576:24;28559:41;:67;;;;-1:-1:-1;;;;;;28605:21:0;;;;;;:17;:21;;;;;;;;28604:22;28559:67;28555:122;;;28650:15;;-1:-1:-1;;;28650:15:0;;;;;;;;;;;28555:122;28693:6;;-1:-1:-1;;;28693:6:0;;;;;:33;;-1:-1:-1;;;;;;28703:23:0;;;;;;:17;:23;;;;;;;;28693:33;28689:105;;;28750:32;28765:4;28771:2;28775:6;28750:14;:32::i;:::-;28743:39;;;;28689:105;28818:4;;-1:-1:-1;;;;;28810:12:0;;;28818:4;;28810:12;;;;:29;;-1:-1:-1;28826:13:0;;;;;;;28810:29;:68;;;;-1:-1:-1;28871:7:0;;28861:4;25114:7;25141:18;;;:9;:18;;;;;;28843:35;;28810:68;:119;;;;;28922:7;;28902:16;;28882:17;;:36;;;;:::i;:::-;:47;;28810:119;28806:171;;;28946:19;28957:7;;28946:10;:19::i;:::-;29032:11;;29009:6;;29032:11;;;;;:39;;;;-1:-1:-1;;;;;;29048:23:0;;;;;;:17;:23;;;;;;;;29047:24;29032:39;:65;;;;-1:-1:-1;;;;;;29076:21:0;;;;;;:17;:21;;;;;;;;29075:22;29032:65;29028:148;;;29126:38;29147:4;29153:2;29157:6;29126:20;:38::i;:::-;29114:50;;29028:148;29188:31;29205:9;29216:2;29188:16;:31::i;:::-;-1:-1:-1;;;;;29240:15:0;;;;;;:9;:15;;;;;;:28;-1:-1:-1;29240:28:0;29232:79;;;;-1:-1:-1;;;29232:79:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29365:15:0;;;;;;;:9;:15;;;;;;;;:27;;;29347:45;;29407:13;;;;;;;;;;:26;;;;;;29462:29;;;;;;29383:9;1798:25:1;;1786:2;1771:18;;1652:177;29462:29:0;;;;;;;;-1:-1:-1;29511:4:0;;28321:1202;-1:-1:-1;;;;28321:1202:0:o;8328:155::-;8399:10;8388:7;8279;8306:6;-1:-1:-1;;;;;8306:6:0;;8233:87;8388:7;-1:-1:-1;;;;;8388:21:0;;8384:92;;8433:31;;-1:-1:-1;;;8433:31:0;;8453:10;8433:31;;;4126:51:1;4099:18;;8433:31:0;3980:203:1;24121:420:0;10991:6;:13;;-1:-1:-1;;;;10991:13:0;-1:-1:-1;;;10991:13:0;;;-1:-1:-1;;24201:10:0::1;:29:::0;24197:78:::1;;24241:31;::::0;-1:-1:-1;;;24241:31:0;;24264:6:::1;24241:31;::::0;::::1;4126:51:1::0;4099:18;;24241:31:0::1;3980:203:1::0;24197:78:0::1;24309:16;::::0;;24323:1:::1;24309:16:::0;;;;;::::1;::::0;;24285:21:::1;::::0;24309:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;24346:6:0::1;::::0;:13:::1;::::0;;-1:-1:-1;;;24346:13:0;;;;24285:40;;-1:-1:-1;;;;;;24346:6:0;;::::1;::::0;:11:::1;::::0;-1:-1:-1;24346:13:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24336:4;24341:1;24336:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;24336:23:0::1;;;-1:-1:-1::0;;;;;24336:23:0::1;;;::::0;::::1;24388:4;24370;24375:1;24370:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24370:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24406:6:::1;::::0;:127:::1;::::0;-1:-1:-1;;;24406:127:0;;:6;::::1;::::0;:57:::1;::::0;24485:6;;24406:127:::1;::::0;:6:::1;::::0;24507:4;;24513:2;;24517:15:::1;::::0;24406:127:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11027:6:0;:14;;-1:-1:-1;;;;11027:14:0;;;-1:-1:-1;;;;;;24121:420:0:o;8823:191::-;8897:16;8916:6;;-1:-1:-1;;;;;8933:17:0;;;-1:-1:-1;;;;;;8933:17:0;;;;;;8966:40;;8916:6;;;;;;;8966:40;;8897:16;8966:40;8886:128;8823:191;:::o;27866:419::-;-1:-1:-1;;;;;27990:15:0;;27951:4;27990:15;;;:9;:15;;;;;;28024:21;;;;28016:72;;;;-1:-1:-1;;;28016:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28124:15:0;;;;;;;:9;:15;;;;;;28142:20;;;28124:38;;28177:13;;;;;;;;;;:23;;;;;;28229:26;;;;;;28156:6;1798:25:1;;1786:2;1771:18;;1652:177;29531:878:0;10991:6;:13;;-1:-1:-1;;;;10991:13:0;-1:-1:-1;;;10991:13:0;;;-1:-1:-1;;;;;29731:14:0;::::1;29638:7:::0;29731:14;;;:8:::1;:14;::::0;;;;;29638:7;;;;10991:13;29731:14:::1;29727:201;;;29782:11;:9;:11::i;:::-;29762:31:::0;;-1:-1:-1;29762:31:0;-1:-1:-1;29831:1:0::1;29812:16;29762:31:::0;;29812:16:::1;:::i;:::-;:20;29808:109;;;29860:41;29871:4;29877:6;29885:4;29891:9;29860:10;:41::i;:::-;29853:48;;;;;;29808:109;-1:-1:-1::0;;;;;29942:12:0;::::1;;::::0;;;:8:::1;:12;::::0;;;;;::::1;;29938:201;;;29991:12;:10;:12::i;:::-;29971:32:::0;;-1:-1:-1;29971:32:0;-1:-1:-1;30041:1:0::1;30022:16;29971:32:::0;;30022:16:::1;:::i;:::-;:20;30018:110;;;30070:42;30082:4;30088:6;30096:4;30102:9;30070:11;:42::i;30018:110::-;-1:-1:-1::0;;;;;30154:14:0;::::1;;::::0;;;:8:::1;:14;::::0;;;;;::::1;;30153:15;:32:::0;::::1;;;-1:-1:-1::0;;;;;;30173:12:0;::::1;;::::0;;;:8:::1;:12;::::0;;;;;::::1;;30172:13;30153:32;30149:229;;;30222:16;:14;:16::i;:::-;30202:36:::0;;-1:-1:-1;30202:36:0;-1:-1:-1;30276:1:0::1;30257:16;30202:36:::0;;30257:16:::1;:::i;:::-;:20;30253:114;;;30305:46;30321:4;30327:6;30335:4;30341:9;30305:15;:46::i;30253:114::-;30395:6;30388:13;;;;11015:1;11027:6:::0;:14;;-1:-1:-1;;;;11027:14:0;;;29531:878;;-1:-1:-1;;;29531:878:0:o;21998:481::-;10991:6;:13;;-1:-1:-1;;;;10991:13:0;-1:-1:-1;;;10991:13:0;;;22108:7;;9559:6:::1;22149:13;22158:4:::0;22149:6;:13:::1;:::i;:::-;:30;;;;:::i;:::-;22128:51:::0;-1:-1:-1;22190:23:0::1;9559:6;22216:18;22225:9:::0;22216:6;:18:::1;:::i;:::-;:35;;;;:::i;:::-;22190:61:::0;-1:-1:-1;22262:17:0::1;22190:61:::0;22282:19:::1;22291:10:::0;22282:6;:19:::1;:::i;:::-;:37;;;;:::i;:::-;22262:57:::0;-1:-1:-1;22365:1:0::1;22334:28;22347:15:::0;22334:10;:28:::1;:::i;:::-;:32;22330:115;;;22383:50;22399:4;22405:10;22417:15;22383;:50::i;:::-;11027:6:::0;:14;;-1:-1:-1;;;;11027:14:0;;;22462:9;21998:481;-1:-1:-1;;;;;;;21998:481:0:o;23471:400::-;10991:6;:13;;-1:-1:-1;;;;10991:13:0;-1:-1:-1;;;10991:13:0;;;;23611:36:::1;23628:19:::0;23611:14;:36:::1;:::i;:::-;23592:55;;23679:8;23658:17;;:29;;;;;;;:::i;:::-;;;;;;;;23718:14;23698:16;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;23743:53:0::1;::::0;-1:-1:-1;23758:4:0;23772:6:::1;23781:14:::0;23743::::1;:53::i;:::-;;23807:56;23822:4;23836;23843:19;23807:14;:56::i;:::-;-1:-1:-1::0;;11027:6:0;:14;;-1:-1:-1;;;;11027:14:0;;;-1:-1:-1;;;23471:400:0:o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:548::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;738:2;731;727:7;722:2;714:6;710:15;706:29;695:9;691:45;687:54;679:62;;;;199:548;;;;:::o;752:131::-;-1:-1:-1;;;;;827:31:1;;817:42;;807:70;;873:1;870;863:12;888:247;947:6;1000:2;988:9;979:7;975:23;971:32;968:52;;;1016:1;1013;1006:12;968:52;1055:9;1042:23;1074:31;1099:5;1074:31;:::i;1332:315::-;1400:6;1408;1461:2;1449:9;1440:7;1436:23;1432:32;1429:52;;;1477:1;1474;1467:12;1429:52;1516:9;1503:23;1535:31;1560:5;1535:31;:::i;:::-;1585:5;1637:2;1622:18;;;;1609:32;;-1:-1:-1;;;1332:315:1:o;1834:456::-;1911:6;1919;1927;1980:2;1968:9;1959:7;1955:23;1951:32;1948:52;;;1996:1;1993;1986:12;1948:52;2035:9;2022:23;2054:31;2079:5;2054:31;:::i;:::-;2104:5;-1:-1:-1;2161:2:1;2146:18;;2133:32;2174:33;2133:32;2174:33;:::i;:::-;1834:456;;2226:7;;-1:-1:-1;;;2280:2:1;2265:18;;;;2252:32;;1834:456::o;2737:160::-;2802:20;;2858:13;;2851:21;2841:32;;2831:60;;2887:1;2884;2877:12;2831:60;2737:160;;;:::o;2902:180::-;2958:6;3011:2;2999:9;2990:7;2986:23;2982:32;2979:52;;;3027:1;3024;3017:12;2979:52;3050:26;3066:9;3050:26;:::i;3087:248::-;3155:6;3163;3216:2;3204:9;3195:7;3191:23;3187:32;3184:52;;;3232:1;3229;3222:12;3184:52;-1:-1:-1;;3255:23:1;;;3325:2;3310:18;;;3297:32;;-1:-1:-1;3087:248:1:o;3340:315::-;3405:6;3413;3466:2;3454:9;3445:7;3441:23;3437:32;3434:52;;;3482:1;3479;3472:12;3434:52;3521:9;3508:23;3540:31;3565:5;3540:31;:::i;:::-;3590:5;-1:-1:-1;3614:35:1;3645:2;3630:18;;3614:35;:::i;:::-;3604:45;;3340:315;;;;;:::o;3660:::-;3728:6;3736;3789:2;3777:9;3768:7;3764:23;3760:32;3757:52;;;3805:1;3802;3795:12;3757:52;3841:9;3828:23;3818:33;;3901:2;3890:9;3886:18;3873:32;3914:31;3939:5;3914:31;:::i;:::-;3964:5;3954:15;;;3660:315;;;;;:::o;4188:388::-;4256:6;4264;4317:2;4305:9;4296:7;4292:23;4288:32;4285:52;;;4333:1;4330;4323:12;4285:52;4372:9;4359:23;4391:31;4416:5;4391:31;:::i;:::-;4441:5;-1:-1:-1;4498:2:1;4483:18;;4470:32;4511:33;4470:32;4511:33;:::i;4804:127::-;4865:10;4860:3;4856:20;4853:1;4846:31;4896:4;4893:1;4886:15;4920:4;4917:1;4910:15;4936:125;5001:9;;;5022:10;;;5019:36;;;5035:18;;:::i;5198:127::-;5259:10;5254:3;5250:20;5247:1;5240:31;5290:4;5287:1;5280:15;5314:4;5311:1;5304:15;5330:251;5400:6;5453:2;5441:9;5432:7;5428:23;5424:32;5421:52;;;5469:1;5466;5459:12;5421:52;5501:9;5495:16;5520:31;5545:5;5520:31;:::i;6008:461::-;6061:3;6099:5;6093:12;6126:6;6121:3;6114:19;6152:4;6181:2;6176:3;6172:12;6165:19;;6218:2;6211:5;6207:14;6239:1;6249:195;6263:6;6260:1;6257:13;6249:195;;;6328:13;;-1:-1:-1;;;;;6324:39:1;6312:52;;6384:12;;;;6419:15;;;;6360:1;6278:9;6249:195;;;-1:-1:-1;6460:3:1;;6008:461;-1:-1:-1;;;;;6008:461:1:o;6474:582::-;6773:6;6762:9;6755:25;6816:6;6811:2;6800:9;6796:18;6789:34;6859:3;6854:2;6843:9;6839:18;6832:31;6736:4;6880:57;6932:3;6921:9;6917:19;6909:6;6880:57;:::i;:::-;-1:-1:-1;;;;;6973:32:1;;;;6968:2;6953:18;;6946:60;-1:-1:-1;7037:3:1;7022:19;7015:35;6872:65;6474:582;-1:-1:-1;;;6474:582:1:o;7061:128::-;7128:9;;;7149:11;;;7146:37;;;7163:18;;:::i;7194:437::-;7438:14;;7431:22;7413:41;;7497:14;;7490:22;7485:2;7470:18;;7463:50;-1:-1:-1;;;;;7549:32:1;7544:2;7529:18;;7522:60;7613:2;7598:18;;7591:34;7400:3;7385:19;;7194:437::o;7829:561::-;8116:25;;;8172:2;8157:18;;8150:34;;;;8215:2;8200:18;;8193:34;;;;8258:2;8243:18;;8236:34;-1:-1:-1;;;;;8307:32:1;8301:3;8286:19;;8279:61;8327:3;8356:19;;8349:35;8103:3;8088:19;;7829:561::o;8395:168::-;8468:9;;;8499;;8516:15;;;8510:22;;8496:37;8486:71;;8537:18;;:::i;8568:217::-;8608:1;8634;8624:132;;8678:10;8673:3;8669:20;8666:1;8659:31;8713:4;8710:1;8703:15;8741:4;8738:1;8731:15;8624:132;-1:-1:-1;8770:9:1;;8568:217::o;10324:402::-;10526:2;10508:21;;;10565:2;10545:18;;;10538:30;10604:34;10599:2;10584:18;;10577:62;-1:-1:-1;;;10670:2:1;10655:18;;10648:36;10716:3;10701:19;;10324:402::o;10731:510::-;11002:6;10991:9;10984:25;11045:3;11040:2;11029:9;11025:18;11018:31;10965:4;11066:57;11118:3;11107:9;11103:19;11095:6;11066:57;:::i;:::-;-1:-1:-1;;;;;11159:32:1;;;;11154:2;11139:18;;11132:60;-1:-1:-1;11223:2:1;11208:18;11201:34;11058:65;10731:510;-1:-1:-1;;10731:510:1:o

Swarm Source

ipfs://da918ee548f1c878a2d4696d08054bb54e751278d60bb7c852fdff41286e68a0
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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