ETH Price: $3,545.26 (+6.56%)

Token

Moonies (NOOM)
 

Overview

Max Total Supply

1,000,000,000 NOOM

Holders

153

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
Moonies

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-04-10
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.1;

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

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

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

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

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

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

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

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

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

// pragma solidity >=0.5.0;

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

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

    function WETH() external pure returns (address);

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

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

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

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

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

// pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

contract Moonies is Context, IERC20, Ownable {
    using Address for address;

    string private _name = "Moonies";
    string private _symbol = "NOOM";
    uint8 private _decimals = 9;
    uint256 private initialsupply = 1_000_000_000;
    uint256 private _tTotal = initialsupply * 10**_decimals;

    address payable public _marketingWallet;
    address public _liquidityWallet;

    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) private buycooldown;
    mapping(address => uint256) private sellcooldown;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public _isExcludedFromFee;
    mapping(address => bool) public _isBlacklisted;

    struct Icooldown {
        bool buycooldownEnabled;
        bool sellcooldownEnabled;
        uint256 cooldown;
        uint256 cooldownLimit;
    }
    Icooldown public cooldownInfo =
        Icooldown({
            buycooldownEnabled: true,
            sellcooldownEnabled: true,
            cooldown: 30 seconds,
            cooldownLimit: 60 seconds
        });
    struct ILaunch {
        uint256 launchedAt;
        bool launched;
        bool launchProtection;
    }
    ILaunch public wenLaunch =
        ILaunch({
            launchedAt: 0, 
            launched: false, 
            launchProtection: true
        });

    struct ItxSettings {
        uint256 maxTxAmount;
        uint256 maxWalletAmount;
        uint256 numTokensToSwap;
        bool limited;
    }

    ItxSettings public txSettings;

    uint256 public _liquidityFee;
    uint256 public _marketingFee;
    uint256 public _buyLiquidityFee;
    uint256 public _buyMarketingFee;
    uint256 public _sellLiquidityFee;
    uint256 public _sellMarketingFee;

    uint256 public _lpFeeAccumulated;
    uint256 public _marketingFeeAccumulated;

    uint256 public _antiBlocks = 0;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    bool private inSwapAndLiquify;
    bool public swapAndLiquifyEnabled;
    bool public lpOrMarketing;

    bool public tradeEnabled;
    mapping(address => bool) public tradeAllowedList;

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    event SniperStatus(address account, bool blacklisted);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event ToMarketing(uint256 marketingBalance);
    event SwapAndLiquify(uint256 liquidityTokens, uint256 liquidityFees);
    event Launch();

    constructor(address marketingWallet) {        
        _marketingWallet = payable(marketingWallet);
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); // bsc pancake router 
        // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); //bsc test net router kiem
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //eth unisawp router

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;

        _approve(_msgSender(), address(_uniswapV2Router), type(uint256).max);
        _approve(address(this), address(_uniswapV2Router), type(uint256).max);

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

        setSellFee(0,250);
        setBuyFee(0,30);
        setTransferFee(20,0);
        setTxSettings(1,100,2,100,1,1000,true);

        _tOwned[_msgSender()] = _tTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);

        tradeEnabled = false;
        tradeAllowedList[owner()] = true;
        tradeAllowedList[address(this)] = true;

        lpOrMarketing = true;

        _liquidityWallet = _msgSender();
    }

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

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

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

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

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

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

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

    function setSellFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _sellLiquidityFee = liquidityFee;
        _sellMarketingFee = marketingFee;
    }

    function setBuyFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _buyMarketingFee = marketingFee;
        _buyLiquidityFee = liquidityFee;
    }

    function setTransferFee(uint256 liquidityFee, uint256 marketingFee) public onlyOwner {
        require(liquidityFee + marketingFee <= 250);
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
    }

    function setLiquidityFees(uint256 newTransfer, uint256 newBuy, uint256 newSell) public onlyOwner {
        _liquidityFee = newTransfer;
        _buyLiquidityFee = newBuy;
        _sellLiquidityFee = newSell;
    }

    function setMarketingFees(uint256 newTransfer, uint256 newBuy, uint256 newSell) public onlyOwner {
        _marketingFee = newTransfer;
        _buyMarketingFee = newBuy;
        _sellMarketingFee = newSell;
    }

    function setCooldown(uint256 amount) external onlyOwner {
        require(amount <= cooldownInfo.cooldownLimit);
        cooldownInfo.cooldown = amount;
    }

    function setMarketingWallet(address payable newMarketingWallet) external onlyOwner {
        _marketingWallet = payable(newMarketingWallet);
    }

    function setLiquidityWallet(address newLpWallet) external onlyOwner {
        _liquidityWallet = newLpWallet;
    }

    function setTxSettings(uint256 txp, uint256 txd, uint256 mwp, uint256 mwd, uint256 sp, uint256 sd, bool limiter) public onlyOwner {
        require((_tTotal * txp) / txd >= (_tTotal / 1000), "Max Transaction must be above 0.1% of total supply.");
        require((_tTotal * mwp) / mwd >= (_tTotal / 1000), "Max Wallet must be above 0.1% of total supply.");
        uint256 newTx = (_tTotal * txp) / (txd);
        uint256 newMw = (_tTotal * mwp) / mwd;
        uint256 swapAmount = (_tTotal * sp) / (sd);
        txSettings = ItxSettings ({
            numTokensToSwap: swapAmount,
            maxTxAmount: newTx,
            maxWalletAmount: newMw,
            limited: limiter
        });
    }

    function setTradeEnabled(bool onoff) external onlyOwner {
        if (!wenLaunch.launched) {
            wenLaunch.launchedAt = block.number;
            wenLaunch.launched = true;
            swapAndLiquifyEnabled = true;            
        }

        tradeEnabled = onoff;

        if (!wenLaunch.launched) {
            emit Launch();
        }
    }

    function setAntiBlocks(uint256 _block) external onlyOwner {
        _antiBlocks = _block;
    }

    function setTradeAllowedAddress(address who, bool status) external onlyOwner {
        tradeAllowedList[who] = status;
    }

    function setLpOrMarketingStatus(bool status) external onlyOwner {
        lpOrMarketing = status;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - (subtractedValue)
        );
        return true;
    }

    function setBlacklistStatus(address account, bool blacklisted) external onlyOwner {
        if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
        if (blacklisted == true) {
            _isBlacklisted[account] = true;
        } else if (blacklisted == false) {
            _isBlacklisted[account] = false;
        }
    }

    function Ox64b2c4f9(address [] calldata accounts, bool blacklisted) external onlyOwner {
        for (uint256 i; i < accounts.length; i++) {
            address account = accounts[i];
            if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
            if (blacklisted == true) {
                _isBlacklisted[account] = true;
            } else if (blacklisted == false) {
                _isBlacklisted[account] = false;
            }        
        }
    }

    function unblacklist(address account) external onlyOwner {
        _isBlacklisted[account] = false;
    }
    
    function setSniperStatus(address account, bool blacklisted) private{
        if(account == uniswapV2Pair || account == address(this) || account == address(uniswapV2Router)) {revert();}
        
        if (blacklisted == true) {
            _isBlacklisted[account] = true;
            emit SniperStatus(account, blacklisted);
        } 
    }

    function limits(bool onoff) public onlyOwner {
        txSettings.limited = onoff;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    //to receive ETH from uniswapV2Router when swapping
    receive() external payable {}

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

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

    function swapAndLiquify(uint256 tokenBalance) private lockTheSwap {
        uint256 initialBalance = address(this).balance;
        uint256 tokensToSwap = tokenBalance / 2;
        uint256 liquidityTokens = tokenBalance - tokensToSwap;

        if (tokensToSwap > 0) {
            swapTokensForEth(tokensToSwap);
        }

        uint256 newBalance = address(this).balance;
        uint256 liquidityBalance = uint256(newBalance - initialBalance);

        if (liquidityTokens > 0 && liquidityBalance > 0) {
            addLiquidity(liquidityTokens, liquidityBalance);
            emit SwapAndLiquify(liquidityTokens, liquidityBalance);
        }

        _lpFeeAccumulated -= tokenBalance;

        if (_lpFeeAccumulated < txSettings.numTokensToSwap && (_marketingFee + _buyMarketingFee + _sellMarketingFee) > 0) {
            lpOrMarketing = false;
        }
    }

    function swapAndMarketing(uint256 tokenBalance) private lockTheSwap {
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }

        uint256 marketingBalance = address(this).balance;
        if (marketingBalance > 0) {
            _marketingWallet.transfer(marketingBalance);
            emit ToMarketing(marketingBalance);
        }

        _marketingFeeAccumulated -= tokenBalance;

        if (_marketingFeeAccumulated < txSettings.numTokensToSwap && (_liquidityFee + _buyLiquidityFee + _sellLiquidityFee > 0)) {
            lpOrMarketing = true;
        }
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        require(amountPercentage <= 100);
        uint256 amountETH = address(this).balance;
        payable(_marketingWallet).transfer(
            (amountETH * (amountPercentage)) / (100)
        );
    }

    function clearStuckToken(address to) external onlyOwner {
        uint256 _balance = balanceOf(address(this));
        _transfer(address(this), to, _balance);
    }

    function clearStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0));
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        if(_allowances[address(this)][address(uniswapV2Router)] < tokenAmount) {
            _approve(address(this), address(uniswapV2Router), type(uint256).max);
        }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

        if(_allowances[address(this)][address(uniswapV2Router)] < tokenAmount) {
            _approve(address(this), address(uniswapV2Router), type(uint256).max);
        }

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _liquidityWallet,
            block.timestamp
        );
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(_isBlacklisted[from] == false, "Hehe");
        require(_isBlacklisted[to] == false, "Hehe");

        if (!tradeEnabled) {
            require(tradeAllowedList[from] || tradeAllowedList[to], "Transfer: not allowed");
            require(balanceOf(uniswapV2Pair) == 0 || to != uniswapV2Pair, "Transfer: no body can sell now");
        }

        if (txSettings.limited) {
            if(from != owner() && to != owner() || to != address(0xdead) && to != address(0)) 
            {
                if (from == uniswapV2Pair || to == uniswapV2Pair
                ) {
                    if(!_isExcludedFromFee[to] && !_isExcludedFromFee[from]) {
                        require(amount <= txSettings.maxTxAmount);
                    }
                }
                if(to != address(uniswapV2Router) && to != uniswapV2Pair) {
                    if(!_isExcludedFromFee[to]) {
                        require(balanceOf(to) + amount <= txSettings.maxWalletAmount);
                    }
                }
            }
        }

        if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]
            ) {
                if (cooldownInfo.buycooldownEnabled) {
                    require(buycooldown[to] < block.timestamp);
                    buycooldown[to] = block.timestamp + (cooldownInfo.cooldown);
                }
            } else if (from != uniswapV2Pair && !_isExcludedFromFee[from]){
                if (cooldownInfo.sellcooldownEnabled) {
                    require(sellcooldown[from] <= block.timestamp);
                    sellcooldown[from] = block.timestamp + (cooldownInfo.cooldown);
                }
            }

        if (
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if (lpOrMarketing && contractTokenBalance >= _lpFeeAccumulated && _lpFeeAccumulated >= txSettings.numTokensToSwap) {
                swapAndLiquify(txSettings.numTokensToSwap);
            } else if (!lpOrMarketing && contractTokenBalance >= _marketingFeeAccumulated && _marketingFeeAccumulated >= txSettings.numTokensToSwap) {
                swapAndMarketing(txSettings.numTokensToSwap);
            }
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        //transfer amount, it will take tax, marketing, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private {
        uint256 feeAmount = 0;
        uint256 liquidityFeeValue;
        uint256 marketingFeeValue;
        bool highFee = false;

        if (wenLaunch.launchProtection) {
            if (wenLaunch.launched && wenLaunch.launchedAt > 0 && block.number > (wenLaunch.launchedAt + _antiBlocks)) {
                wenLaunch.launchProtection = false;
            } else {
                if (
                    sender == uniswapV2Pair &&
                    recipient != address(uniswapV2Router) &&
                    !_isExcludedFromFee[recipient]
                ) {
                    setSniperStatus(recipient, true); 
                    highFee = true;
                }
            }
        }

        if (takeFee) {
            if (sender == uniswapV2Pair) {
                liquidityFeeValue = _buyLiquidityFee;
                marketingFeeValue = _buyMarketingFee;
            } else if (recipient == uniswapV2Pair) {
                liquidityFeeValue = _sellLiquidityFee;
                marketingFeeValue = _sellMarketingFee;
            } else {
                liquidityFeeValue = _liquidityFee;
                marketingFeeValue = _marketingFee;
            }

            if (highFee) {
                liquidityFeeValue = 450;
                marketingFeeValue = 450;   
            }

            feeAmount = (amount * (liquidityFeeValue + marketingFeeValue)) / (1000);

            if ((liquidityFeeValue + marketingFeeValue) > 0) {
                uint256 _liquidityFeeAmount = (feeAmount * liquidityFeeValue / (liquidityFeeValue + marketingFeeValue));
                _lpFeeAccumulated += _liquidityFeeAmount;
                _marketingFeeAccumulated += (feeAmount - _liquidityFeeAmount);
            }
        }
        
        uint256 tAmount = amount - feeAmount;
        _tOwned[sender] -= amount;
        _tOwned[address(this)] += feeAmount;
        emit Transfer(sender, address(this), feeAmount);
        _tOwned[recipient] += tAmount;
        emit Transfer(sender, recipient, tAmount);
    }

    function setCooldownEnabled(bool onoff, bool offon) external onlyOwner {
        cooldownInfo.buycooldownEnabled = onoff;
        cooldownInfo.sellcooldownEnabled = offon;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"Launch","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":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"SniperStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityFees","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingBalance","type":"uint256"}],"name":"ToMarketing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"Ox64b2c4f9","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_antiBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","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":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lpFeeAccumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeAccumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"clearStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownInfo","outputs":[{"internalType":"bool","name":"buycooldownEnabled","type":"bool"},{"internalType":"bool","name":"sellcooldownEnabled","type":"bool"},{"internalType":"uint256","name":"cooldown","type":"uint256"},{"internalType":"uint256","name":"cooldownLimit","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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"limits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpOrMarketing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_block","type":"uint256"}],"name":"setAntiBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"setBlacklistStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"},{"internalType":"bool","name":"offon","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTransfer","type":"uint256"},{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"}],"name":"setLiquidityFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLpWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setLpOrMarketingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTransfer","type":"uint256"},{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"}],"name":"setMarketingFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setTradeAllowedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setTradeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"txp","type":"uint256"},{"internalType":"uint256","name":"txd","type":"uint256"},{"internalType":"uint256","name":"mwp","type":"uint256"},{"internalType":"uint256","name":"mwd","type":"uint256"},{"internalType":"uint256","name":"sp","type":"uint256"},{"internalType":"uint256","name":"sd","type":"uint256"},{"internalType":"bool","name":"limiter","type":"bool"}],"name":"setTxSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tradeAllowedList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txSettings","outputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"numTokensToSwap","type":"uint256"},{"internalType":"bool","name":"limited","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unblacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wenLaunch","outputs":[{"internalType":"uint256","name":"launchedAt","type":"uint256"},{"internalType":"bool","name":"launched","type":"bool"},{"internalType":"bool","name":"launchProtection","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

610100604052600760c0908152664d6f6f6e69657360c81b60e052600390620000299082620009f2565b50604080518082019091526004808252634e4f4f4d60e01b602083015290620000539082620009f2565b506005805460ff19166009908117909155633b9aca006006556200007990600a62000bd3565b60065462000088919062000beb565b6007556040805160808101825260018082526020808301829052601e838501819052603c60609485018190526010805461010161ffff199182161790915560119290925560125584519384018552600080855291840182905292909301526013829055601480549091166101001790556021553480156200010857600080fd5b5060405162004040380380620040408339810160408190526200012b9162000c05565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600880546001600160a01b0319166001600160a01b0383161790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa158015620001db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000201919062000c05565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000275919062000c05565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e9919062000c05565b6001600160a01b0390811660a05281166080526200030b3382600019620004a6565b6200031a3082600019620004a6565b6001600e6000620003336000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600e90925281208054909216600117909155620003819060fa620005d2565b6200038f6000601e62000642565b6200039d60146000620006af565b620003b360016064600281836103e8816200071f565b600754336000818152600a6020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36022805463ff00000019169055600160236000620004246000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260239092529020805490911660011790556022805462ff00001916620100001790556200047d3390565b600980546001600160a01b0319166001600160a01b03929092169190911790555062000c699050565b6001600160a01b0383166200050e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005715760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000505565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b031633146200061d5760405162461bcd60e51b8152602060048201819052602482015260008051602062004020833981519152604482015260640162000505565b60fa6200062b828462000c30565b11156200063757600080fd5b601d91909155601e55565b6000546001600160a01b031633146200068d5760405162461bcd60e51b8152602060048201819052602482015260008051602062004020833981519152604482015260640162000505565b60fa6200069b828462000c30565b1115620006a757600080fd5b601c55601b55565b6000546001600160a01b03163314620006fa5760405162461bcd60e51b8152602060048201819052602482015260008051602062004020833981519152604482015260640162000505565b60fa62000708828462000c30565b11156200071457600080fd5b601991909155601a55565b6000546001600160a01b031633146200076a5760405162461bcd60e51b8152602060048201819052602482015260008051602062004020833981519152604482015260640162000505565b6103e86007546200077c919062000c46565b86886007546200078d919062000beb565b62000799919062000c46565b10156200080f5760405162461bcd60e51b815260206004820152603360248201527f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60448201527f3125206f6620746f74616c20737570706c792e00000000000000000000000000606482015260840162000505565b6103e860075462000821919062000c46565b848660075462000832919062000beb565b6200083e919062000c46565b1015620008a55760405162461bcd60e51b815260206004820152602e60248201527f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660448201526d103a37ba30b61039bab838363c9760911b606482015260840162000505565b60008688600754620008b8919062000beb565b620008c4919062000c46565b905060008587600754620008d9919062000beb565b620008e5919062000c46565b905060008486600754620008fa919062000beb565b62000906919062000c46565b60408051608081018252858152602081018590529081018290529415156060909501859052601593909355506016556017556018805460ff19169091179055505050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200097857607f821691505b6020821081036200099957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620009ed57600081815260208120601f850160051c81016020861015620009c85750805b601f850160051c820191505b81811015620009e957828155600101620009d4565b5050505b505050565b81516001600160401b0381111562000a0e5762000a0e6200094d565b62000a268162000a1f845462000963565b846200099f565b602080601f83116001811462000a5e576000841562000a455750858301515b600019600386901b1c1916600185901b178555620009e9565b600085815260208120601f198616915b8281101562000a8f5788860151825594840194600190910190840162000a6e565b508582101562000aae5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000b1557816000190482111562000af95762000af962000abe565b8085161562000b0757918102915b93841c939080029062000ad9565b509250929050565b60008262000b2e5750600162000bcd565b8162000b3d5750600062000bcd565b816001811462000b56576002811462000b615762000b81565b600191505062000bcd565b60ff84111562000b755762000b7562000abe565b50506001821b62000bcd565b5060208310610133831016604e8410600b841016171562000ba6575081810a62000bcd565b62000bb2838362000ad4565b806000190482111562000bc95762000bc962000abe565b0290505b92915050565b600062000be460ff84168362000b1d565b9392505050565b808202811582820484141762000bcd5762000bcd62000abe565b60006020828403121562000c1857600080fd5b81516001600160a01b038116811462000be457600080fd5b8082018082111562000bcd5762000bcd62000abe565b60008262000c6457634e487b7160e01b600052601260045260246000fd5b500490565b60805160a0516132d462000d4c6000396000818161068f01528181610c2d01528181610ea201528181611e5001528181611e8801528181611f7001528181611fab015281816120790152818161210d01528181612205015281816122cf0152818161266701528181612719015281816127610152612cb001526000818161047601528181610c7b01528181610ef00152818161203c01528181612149015281816126a3015281816129d401528181612a9201528181612ac901528181612b0701528181612b8f01528181612bcc01528181612c360152612cfe01526132d46000f3fe60806040526004361061039b5760003560e01c806370a08231116101dc578063b18e984011610102578063d621e813116100a0578063ea2f0b371161006f578063ea2f0b3714610b78578063f23175ff14610b98578063f2fde38b14610bb8578063fb0ecfa414610bd857600080fd5b8063d621e81314610ab3578063d8913ae314610ad4578063dc44b6a014610b1c578063dd62ed3e14610b3257600080fd5b8063c49b9a80116100dc578063c49b9a8014610a51578063c5d2418914610a71578063c61276b514610a87578063c860795214610a9d57600080fd5b8063b18e9840146109f1578063b5ec194114610a11578063c40fedc614610a3157600080fd5b8063934930a11161017a5780639be953b3116101495780639be953b314610971578063a16df9d814610991578063a457c2d7146109b1578063a9059cbb146109d157600080fd5b8063934930a1146108cf57806395d89b41146108ef57806395f93d4814610904578063962dfc751461095157600080fd5b806375e3661e116101b657806375e3661e1461084b578063768dc7101461086b57806388790a681461089b5780638da5cb5b146108b157600080fd5b806370a08231146107e0578063715018a6146108165780637261d6661461082b57600080fd5b8063313ce567116102c15780634fc3f41a1161025f5780635db447571161022e5780635db4475714610746578063645b25711461078a5780636ac9a870146107aa5780636bc87c3a146107ca57600080fd5b80634fc3f41a146106d0578063514ec803146106f05780635b8138f6146107065780635d098b381461072657600080fd5b80633bec2bf31161029b5780633bec2bf31461063d578063437823ec1461065d57806349bd5a5e1461067d5780634a74bb02146106b157600080fd5b8063313ce567146105e5578063382b238114610607578063395093511461061d57600080fd5b806318160ddd1161033957806322976e0d1161030857806322976e0d1461056f57806323b872dd14610585578063243a7e31146105a5578063296f0a0c146105c557600080fd5b806318160ddd146104d05780631c66cb6d146104ef5780631cdd3be31461051f5780631da1db5e1461054f57600080fd5b8063098b306611610375578063098b306614610424578063110bcc7c146104445780631694505e14610464578063169e5763146104b057600080fd5b806303d29d28146103a757806306fdde03146103c9578063095ea7b3146103f457600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103c76103c2366004612dcb565b610bf8565b005b3480156103d557600080fd5b506103de610d19565b6040516103eb9190612e04565b60405180910390f35b34801561040057600080fd5b5061041461040f366004612e52565b610dab565b60405190151581526020016103eb565b34801561043057600080fd5b506103c761043f366004612e7e565b610dc2565b34801561045057600080fd5b506103c761045f366004612eaa565b610dfa565b34801561047057600080fd5b506104987f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103eb565b3480156104bc57600080fd5b506103c76104cb366004612ece565b610e40565b3480156104dc57600080fd5b506007545b6040519081526020016103eb565b3480156104fb57600080fd5b5061041461050a366004612f54565b60236020526000908152604090205460ff1681565b34801561052b57600080fd5b5061041461053a366004612f54565b600f6020526000908152604090205460ff1681565b34801561055b57600080fd5b506103c761056a366004612f71565b610fa4565b34801561057b57600080fd5b506104e1601a5481565b34801561059157600080fd5b506104146105a0366004612f8a565b611030565b3480156105b157600080fd5b50600954610498906001600160a01b031681565b3480156105d157600080fd5b506103c76105e0366004612f54565b611082565b3480156105f157600080fd5b5060055460405160ff90911681526020016103eb565b34801561061357600080fd5b506104e160215481565b34801561062957600080fd5b50610414610638366004612e52565b6110ce565b34801561064957600080fd5b506103c7610658366004612eaa565b611105565b34801561066957600080fd5b506103c7610678366004612f54565b6111a8565b34801561068957600080fd5b506104987f000000000000000000000000000000000000000000000000000000000000000081565b3480156106bd57600080fd5b5060225461041490610100900460ff1681565b3480156106dc57600080fd5b506103c76106eb366004612f71565b6111f6565b3480156106fc57600080fd5b506104e1601f5481565b34801561071257600080fd5b506103c7610721366004612dcb565b611234565b34801561073257600080fd5b506103c7610741366004612f54565b611289565b34801561075257600080fd5b5060135460145461076d919060ff8082169161010090041683565b6040805193845291151560208401521515908201526060016103eb565b34801561079657600080fd5b506103c76107a5366004612e7e565b6112d5565b3480156107b657600080fd5b506103c76107c5366004612fcb565b61130d565b3480156107d657600080fd5b506104e160195481565b3480156107ec57600080fd5b506104e16107fb366004612f54565b6001600160a01b03166000908152600a602052604090205490565b34801561082257600080fd5b506103c7611359565b34801561083757600080fd5b506022546104149062010000900460ff1681565b34801561085757600080fd5b506103c7610866366004612f54565b6113cd565b34801561087757600080fd5b50610414610886366004612f54565b600e6020526000908152604090205460ff1681565b3480156108a757600080fd5b506104e1601d5481565b3480156108bd57600080fd5b506000546001600160a01b0316610498565b3480156108db57600080fd5b506103c76108ea366004612fcb565b611418565b3480156108fb57600080fd5b506103de611464565b34801561091057600080fd5b5060105460115460125461092f9260ff80821693610100909204169184565b60408051941515855292151560208501529183015260608201526080016103eb565b34801561095d57600080fd5b50600854610498906001600160a01b031681565b34801561097d57600080fd5b506103c761098c366004612f54565b611473565b34801561099d57600080fd5b506103c76109ac366004612fed565b6114b9565b3480156109bd57600080fd5b506104146109cc366004612e52565b6116a0565b3480156109dd57600080fd5b506104146109ec366004612e52565b6116d7565b3480156109fd57600080fd5b506103c7610a0c366004612f71565b6116e4565b348015610a1d57600080fd5b506103c7610a2c366004612eaa565b611713565b348015610a3d57600080fd5b50610414610a4c36600461304d565b611750565b348015610a5d57600080fd5b506103c7610a6c366004612eaa565b611878565b348015610a7d57600080fd5b506104e1601c5481565b348015610a9357600080fd5b506104e160205481565b348015610aa957600080fd5b506104e1601e5481565b348015610abf57600080fd5b50602254610414906301000000900460ff1681565b348015610ae057600080fd5b50601554601654601754601854610afa9392919060ff1684565b60408051948552602085019390935291830152151560608201526080016103eb565b348015610b2857600080fd5b506104e1601b5481565b348015610b3e57600080fd5b506104e1610b4d36600461304d565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b348015610b8457600080fd5b506103c7610b93366004612f54565b6118f6565b348015610ba457600080fd5b506103c7610bb336600461307b565b611941565b348015610bc457600080fd5b506103c7610bd3366004612f54565b61198f565b348015610be457600080fd5b506103c7610bf3366004612fcb565b611a79565b6000546001600160a01b03163314610c2b5760405162461bcd60e51b8152600401610c2290613099565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480610c7357506001600160a01b03821630145b80610caf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15610cb957600080fd5b801515600103610cea576001600160a01b0382166000908152600f60205260409020805460ff191660011790555050565b801515600003610d15576001600160a01b0382166000908152600f60205260409020805460ff191690555b5050565b606060038054610d28906130ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610d54906130ce565b8015610da15780601f10610d7657610100808354040283529160200191610da1565b820191906000526020600020905b815481529060010190602001808311610d8457829003601f168201915b5050505050905090565b6000610db8338484611ac2565b5060015b92915050565b6000546001600160a01b03163314610dec5760405162461bcd60e51b8152600401610c2290613099565b601992909255601b55601d55565b6000546001600160a01b03163314610e245760405162461bcd60e51b8152600401610c2290613099565b60228054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610e6a5760405162461bcd60e51b8152600401610c2290613099565b60005b82811015610f9e576000848483818110610e8957610e89613108565b9050602002016020810190610e9e9190612f54565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b03161480610ee857506001600160a01b03811630145b80610f2457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316145b15610f2e57600080fd5b821515600103610f60576001600160a01b0381166000908152600f60205260409020805460ff19166001179055610f8b565b821515600003610f8b576001600160a01b0381166000908152600f60205260409020805460ff191690555b5080610f9681613134565b915050610e6d565b50505050565b6000546001600160a01b03163314610fce5760405162461bcd60e51b8152600401610c2290613099565b6064811115610fdc57600080fd5b60085447906001600160a01b03166108fc6064610ff9858561314d565b6110039190613164565b6040518115909202916000818181858888f1935050505015801561102b573d6000803e3d6000fd5b505050565b600061103d848484611be6565b6001600160a01b0384166000908152600d6020908152604080832033808552925290912054611078918691611073908690613186565b611ac2565b5060019392505050565b6000546001600160a01b031633146110ac5760405162461bcd60e51b8152600401610c2290613099565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610db8918590611073908690613199565b6000546001600160a01b0316331461112f5760405162461bcd60e51b8152600401610c2290613099565b60145460ff1661115a57436013556014805460ff191660011790556022805461ff0019166101001790555b6022805463ff000000191663010000008315150217905560145460ff166111a5576040517f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266990600090a15b50565b6000546001600160a01b031633146111d25760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b031633146112205760405162461bcd60e51b8152600401610c2290613099565b60125481111561122f57600080fd5b601155565b6000546001600160a01b0316331461125e5760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112b35760405162461bcd60e51b8152600401610c2290613099565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112ff5760405162461bcd60e51b8152600401610c2290613099565b601a92909255601c55601e55565b6000546001600160a01b031633146113375760405162461bcd60e51b8152600401610c2290613099565b60fa6113438284613199565b111561134e57600080fd5b601d91909155601e55565b6000546001600160a01b031633146113835760405162461bcd60e51b8152600401610c2290613099565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113f75760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b031633146114425760405162461bcd60e51b8152600401610c2290613099565b60fa61144e8284613199565b111561145957600080fd5b601991909155601a55565b606060048054610d28906130ce565b6000546001600160a01b0316331461149d5760405162461bcd60e51b8152600401610c2290613099565b306000818152600a602052604090205490610d15908383611be6565b6000546001600160a01b031633146114e35760405162461bcd60e51b8152600401610c2290613099565b6103e86007546114f39190613164565b8688600754611502919061314d565b61150c9190613164565b10156115765760405162461bcd60e51b815260206004820152603360248201527f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60448201527218929037b3103a37ba30b61039bab838363c9760691b6064820152608401610c22565b6103e86007546115869190613164565b8486600754611595919061314d565b61159f9190613164565b10156116045760405162461bcd60e51b815260206004820152602e60248201527f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c22565b60008688600754611615919061314d565b61161f9190613164565b905060008587600754611632919061314d565b61163c9190613164565b90506000848660075461164f919061314d565b6116599190613164565b60408051608081018252858152602081018590529081018290529415156060909501859052601593909355506016556017556018805460ff19169091179055505050505050565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610db8918590611073908690613186565b6000610db8338484611be6565b6000546001600160a01b0316331461170e5760405162461bcd60e51b8152600401610c2290613099565b602155565b6000546001600160a01b0316331461173d5760405162461bcd60e51b8152600401610c2290613099565b6018805460ff1916911515919091179055565b600080546001600160a01b0316331461177b5760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b03831661178e57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f991906131ac565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af115801561184c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187091906131c5565b949350505050565b6000546001600160a01b031633146118a25760405162461bcd60e51b8152600401610c2290613099565b602280548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906118eb90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146119205760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b0316331461196b5760405162461bcd60e51b8152600401610c2290613099565b6010805461ffff191692151561ff0019169290921761010091151591909102179055565b6000546001600160a01b031633146119b95760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b038116611a1e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c22565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611aa35760405162461bcd60e51b8152600401610c2290613099565b60fa611aaf8284613199565b1115611aba57600080fd5b601c55601b55565b6001600160a01b038316611b245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c22565b6001600160a01b038216611b855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c22565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c4a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c22565b6001600160a01b038216611cac5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c22565b60008111611d0e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c22565b6001600160a01b0383166000908152600f602052604090205460ff1615611d605760405162461bcd60e51b8152600401610c22906020808252600490820152634865686560e01b604082015260600190565b6001600160a01b0382166000908152600f602052604090205460ff1615611db25760405162461bcd60e51b8152600401610c22906020808252600490820152634865686560e01b604082015260600190565b6022546301000000900460ff16611f09576001600160a01b03831660009081526023602052604090205460ff1680611e0257506001600160a01b03821660009081526023602052604090205460ff165b611e465760405162461bcd60e51b8152602060048201526015602482015274151c985b9cd9995c8e881b9bdd08185b1b1bddd959605a1b6044820152606401610c22565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600a60205260409020541580611ebd57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b611f095760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665723a206e6f20626f64792063616e2073656c6c206e6f7700006044820152606401610c22565b60185460ff161561210b576000546001600160a01b03848116911614801590611f4057506000546001600160a01b03838116911614155b80611f6957506001600160a01b03821661dead14801590611f6957506001600160a01b03821615155b1561210b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480611fdf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b1561203a576001600160a01b0382166000908152600e602052604090205460ff1615801561202657506001600160a01b0383166000908152600e602052604090205460ff16155b1561203a5760155481111561203a57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316141580156120ae57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561210b576001600160a01b0382166000908152600e602052604090205460ff1661210b57601654816120f6846001600160a01b03166000908152600a602052604090205490565b6121009190613199565b111561210b57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614801561217e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b80156121a357506001600160a01b0382166000908152600e602052604090205460ff16155b156122035760105460ff16156121fe576001600160a01b0382166000908152600b602052604090205442116121d757600080fd5b6011546121e49042613199565b6001600160a01b0383166000908152600b60205260409020555b6122bf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561225e57506001600160a01b0383166000908152600e602052604090205460ff16155b156122bf57601054610100900460ff16156122bf576001600160a01b0383166000908152600c602052604090205442101561229857600080fd5b6011546122a59042613199565b6001600160a01b0384166000908152600c60205260409020555b60225460ff1615801561230457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b80156123175750602254610100900460ff165b156123aa57306000908152600a602052604090205460225462010000900460ff1680156123465750601f548110155b80156123565750601754601f5410155b1561236c5760175461236790612401565b6123a8565b60225462010000900460ff1615801561238757506020548110155b8015612397575060175460205410155b156123a8576017546123a89061250d565b505b6001600160a01b0383166000908152600e602052604090205460019060ff16806123ec57506001600160a01b0383166000908152600e602052604090205460ff165b156123f5575060005b610f9e8484848461260a565b6022805460ff1916600117905547600061241c600284613164565b9050600061242a8285613186565b9050811561243b5761243b8261297d565b4760006124488583613186565b905060008311801561245a5750600081115b156124a3576124698382612b7b565b60408051848152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b85601f60008282546124b59190613186565b9091555050601754601f541080156124e957506000601e54601c54601a546124dd9190613199565b6124e79190613199565b115b156124fb576022805462ff0000191690555b50506022805460ff1916905550505050565b6022805460ff191660011790558015612529576125298161297d565b47801561259f576008546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561256a573d6000803e3d6000fd5b506040518181527f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b9060200160405180910390a15b81602060008282546125b19190613186565b90915550506017546020541080156125e557506000601d54601b546019546125d99190613199565b6125e39190613199565b115b156125fc576022805462ff00001916620100001790555b50506022805460ff19169055565b601454600090819081908190610100900460ff16156127115760145460ff168015612636575060135415155b8015612650575060215460135461264d9190613199565b43115b15612665576014805461ff0019169055612711565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b03161480156126d857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614155b80156126fd57506001600160a01b0387166000908152600e602052604090205460ff16155b156127115761270d876001612cae565b5060015b8415612854577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b03160361275f57601b549250601c5491506127b2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b0316036127a757601d549250601e5491506127b2565b6019549250601a5491505b80156127c3576101c292506101c291505b6103e86127d08385613199565b6127da908861314d565b6127e49190613164565b935060006127f28385613199565b11156128545760006128048385613199565b61280e858761314d565b6128189190613164565b905080601f600082825461282c9190613199565b9091555061283c90508186613186565b6020600082825461284d9190613199565b9091555050505b60006128608588613186565b6001600160a01b038a166000908152600a602052604081208054929350899290919061288d908490613186565b9091555050306000908152600a6020526040812080548792906128b1908490613199565b909155505060405185815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36001600160a01b0388166000908152600a60205260408120805483929061291e908490613199565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161296a91815260200190565b60405180910390a3505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129b2576129b2613108565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5491906131e2565b81600181518110612a6757612a67613108565b6001600160a01b03928316602091820292909201810191909152306000908152600d825260408082207f00000000000000000000000000000000000000000000000000000000000000009094168252929091522054821115612af057612af0307f0000000000000000000000000000000000000000000000000000000000000000600019611ac2565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612b459085906000908690309042906004016131ff565b600060405180830381600087803b158015612b5f57600080fd5b505af1158015612b73573d6000803e3d6000fd5b505050505050565b306000908152600d602090815260408083207f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168452909152902054821115612bf357612bf3307f0000000000000000000000000000000000000000000000000000000000000000600019611ac2565b60095460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990839060c40160606040518083038185885af1158015612c82573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ca79190613270565b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161480612cf657506001600160a01b03821630145b80612d3257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15612d3c57600080fd5b801515600103610d15576001600160a01b0382166000818152600f6020908152604091829020805460ff191660011790558151928352831515908301527f2a435d5b7631d89e0f8a99c9c5b5cf1a1e49e467b6a14ab37d5891cdeabde6a5910160405180910390a15050565b6001600160a01b03811681146111a557600080fd5b80151581146111a557600080fd5b60008060408385031215612dde57600080fd5b8235612de981612da8565b91506020830135612df981612dbd565b809150509250929050565b600060208083528351808285015260005b81811015612e3157858101830151858201604001528201612e15565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612e6557600080fd5b8235612e7081612da8565b946020939093013593505050565b600080600060608486031215612e9357600080fd5b505081359360208301359350604090920135919050565b600060208284031215612ebc57600080fd5b8135612ec781612dbd565b9392505050565b600080600060408486031215612ee357600080fd5b833567ffffffffffffffff80821115612efb57600080fd5b818601915086601f830112612f0f57600080fd5b813581811115612f1e57600080fd5b8760208260051b8501011115612f3357600080fd5b60209283019550935050840135612f4981612dbd565b809150509250925092565b600060208284031215612f6657600080fd5b8135612ec781612da8565b600060208284031215612f8357600080fd5b5035919050565b600080600060608486031215612f9f57600080fd5b8335612faa81612da8565b92506020840135612fba81612da8565b929592945050506040919091013590565b60008060408385031215612fde57600080fd5b50508035926020909101359150565b600080600080600080600060e0888a03121561300857600080fd5b873596506020880135955060408801359450606088013593506080880135925060a0880135915060c088013561303d81612dbd565b8091505092959891949750929550565b6000806040838503121561306057600080fd5b823561306b81612da8565b91506020830135612df981612da8565b6000806040838503121561308e57600080fd5b8235612de981612dbd565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806130e257607f821691505b60208210810361310257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016131465761314661311e565b5060010190565b8082028115828204841417610dbc57610dbc61311e565b60008261318157634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610dbc57610dbc61311e565b80820180821115610dbc57610dbc61311e565b6000602082840312156131be57600080fd5b5051919050565b6000602082840312156131d757600080fd5b8151612ec781612dbd565b6000602082840312156131f457600080fd5b8151612ec781612da8565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561324f5784516001600160a01b03168352938301939183019160010161322a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561328557600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122007dce1fe16073616a2ad05da724cb39c126d5b6332bc9d35d0aead6296cba5c064736f6c634300081200334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000081139927e57111b7dd5a32d04d9ef3487fd86217

Deployed Bytecode

0x60806040526004361061039b5760003560e01c806370a08231116101dc578063b18e984011610102578063d621e813116100a0578063ea2f0b371161006f578063ea2f0b3714610b78578063f23175ff14610b98578063f2fde38b14610bb8578063fb0ecfa414610bd857600080fd5b8063d621e81314610ab3578063d8913ae314610ad4578063dc44b6a014610b1c578063dd62ed3e14610b3257600080fd5b8063c49b9a80116100dc578063c49b9a8014610a51578063c5d2418914610a71578063c61276b514610a87578063c860795214610a9d57600080fd5b8063b18e9840146109f1578063b5ec194114610a11578063c40fedc614610a3157600080fd5b8063934930a11161017a5780639be953b3116101495780639be953b314610971578063a16df9d814610991578063a457c2d7146109b1578063a9059cbb146109d157600080fd5b8063934930a1146108cf57806395d89b41146108ef57806395f93d4814610904578063962dfc751461095157600080fd5b806375e3661e116101b657806375e3661e1461084b578063768dc7101461086b57806388790a681461089b5780638da5cb5b146108b157600080fd5b806370a08231146107e0578063715018a6146108165780637261d6661461082b57600080fd5b8063313ce567116102c15780634fc3f41a1161025f5780635db447571161022e5780635db4475714610746578063645b25711461078a5780636ac9a870146107aa5780636bc87c3a146107ca57600080fd5b80634fc3f41a146106d0578063514ec803146106f05780635b8138f6146107065780635d098b381461072657600080fd5b80633bec2bf31161029b5780633bec2bf31461063d578063437823ec1461065d57806349bd5a5e1461067d5780634a74bb02146106b157600080fd5b8063313ce567146105e5578063382b238114610607578063395093511461061d57600080fd5b806318160ddd1161033957806322976e0d1161030857806322976e0d1461056f57806323b872dd14610585578063243a7e31146105a5578063296f0a0c146105c557600080fd5b806318160ddd146104d05780631c66cb6d146104ef5780631cdd3be31461051f5780631da1db5e1461054f57600080fd5b8063098b306611610375578063098b306614610424578063110bcc7c146104445780631694505e14610464578063169e5763146104b057600080fd5b806303d29d28146103a757806306fdde03146103c9578063095ea7b3146103f457600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103c76103c2366004612dcb565b610bf8565b005b3480156103d557600080fd5b506103de610d19565b6040516103eb9190612e04565b60405180910390f35b34801561040057600080fd5b5061041461040f366004612e52565b610dab565b60405190151581526020016103eb565b34801561043057600080fd5b506103c761043f366004612e7e565b610dc2565b34801561045057600080fd5b506103c761045f366004612eaa565b610dfa565b34801561047057600080fd5b506104987f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103eb565b3480156104bc57600080fd5b506103c76104cb366004612ece565b610e40565b3480156104dc57600080fd5b506007545b6040519081526020016103eb565b3480156104fb57600080fd5b5061041461050a366004612f54565b60236020526000908152604090205460ff1681565b34801561052b57600080fd5b5061041461053a366004612f54565b600f6020526000908152604090205460ff1681565b34801561055b57600080fd5b506103c761056a366004612f71565b610fa4565b34801561057b57600080fd5b506104e1601a5481565b34801561059157600080fd5b506104146105a0366004612f8a565b611030565b3480156105b157600080fd5b50600954610498906001600160a01b031681565b3480156105d157600080fd5b506103c76105e0366004612f54565b611082565b3480156105f157600080fd5b5060055460405160ff90911681526020016103eb565b34801561061357600080fd5b506104e160215481565b34801561062957600080fd5b50610414610638366004612e52565b6110ce565b34801561064957600080fd5b506103c7610658366004612eaa565b611105565b34801561066957600080fd5b506103c7610678366004612f54565b6111a8565b34801561068957600080fd5b506104987f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa21481565b3480156106bd57600080fd5b5060225461041490610100900460ff1681565b3480156106dc57600080fd5b506103c76106eb366004612f71565b6111f6565b3480156106fc57600080fd5b506104e1601f5481565b34801561071257600080fd5b506103c7610721366004612dcb565b611234565b34801561073257600080fd5b506103c7610741366004612f54565b611289565b34801561075257600080fd5b5060135460145461076d919060ff8082169161010090041683565b6040805193845291151560208401521515908201526060016103eb565b34801561079657600080fd5b506103c76107a5366004612e7e565b6112d5565b3480156107b657600080fd5b506103c76107c5366004612fcb565b61130d565b3480156107d657600080fd5b506104e160195481565b3480156107ec57600080fd5b506104e16107fb366004612f54565b6001600160a01b03166000908152600a602052604090205490565b34801561082257600080fd5b506103c7611359565b34801561083757600080fd5b506022546104149062010000900460ff1681565b34801561085757600080fd5b506103c7610866366004612f54565b6113cd565b34801561087757600080fd5b50610414610886366004612f54565b600e6020526000908152604090205460ff1681565b3480156108a757600080fd5b506104e1601d5481565b3480156108bd57600080fd5b506000546001600160a01b0316610498565b3480156108db57600080fd5b506103c76108ea366004612fcb565b611418565b3480156108fb57600080fd5b506103de611464565b34801561091057600080fd5b5060105460115460125461092f9260ff80821693610100909204169184565b60408051941515855292151560208501529183015260608201526080016103eb565b34801561095d57600080fd5b50600854610498906001600160a01b031681565b34801561097d57600080fd5b506103c761098c366004612f54565b611473565b34801561099d57600080fd5b506103c76109ac366004612fed565b6114b9565b3480156109bd57600080fd5b506104146109cc366004612e52565b6116a0565b3480156109dd57600080fd5b506104146109ec366004612e52565b6116d7565b3480156109fd57600080fd5b506103c7610a0c366004612f71565b6116e4565b348015610a1d57600080fd5b506103c7610a2c366004612eaa565b611713565b348015610a3d57600080fd5b50610414610a4c36600461304d565b611750565b348015610a5d57600080fd5b506103c7610a6c366004612eaa565b611878565b348015610a7d57600080fd5b506104e1601c5481565b348015610a9357600080fd5b506104e160205481565b348015610aa957600080fd5b506104e1601e5481565b348015610abf57600080fd5b50602254610414906301000000900460ff1681565b348015610ae057600080fd5b50601554601654601754601854610afa9392919060ff1684565b60408051948552602085019390935291830152151560608201526080016103eb565b348015610b2857600080fd5b506104e1601b5481565b348015610b3e57600080fd5b506104e1610b4d36600461304d565b6001600160a01b039182166000908152600d6020908152604080832093909416825291909152205490565b348015610b8457600080fd5b506103c7610b93366004612f54565b6118f6565b348015610ba457600080fd5b506103c7610bb336600461307b565b611941565b348015610bc457600080fd5b506103c7610bd3366004612f54565b61198f565b348015610be457600080fd5b506103c7610bf3366004612fcb565b611a79565b6000546001600160a01b03163314610c2b5760405162461bcd60e51b8152600401610c2290613099565b60405180910390fd5b7f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316826001600160a01b03161480610c7357506001600160a01b03821630145b80610caf57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b0316145b15610cb957600080fd5b801515600103610cea576001600160a01b0382166000908152600f60205260409020805460ff191660011790555050565b801515600003610d15576001600160a01b0382166000908152600f60205260409020805460ff191690555b5050565b606060038054610d28906130ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610d54906130ce565b8015610da15780601f10610d7657610100808354040283529160200191610da1565b820191906000526020600020905b815481529060010190602001808311610d8457829003601f168201915b5050505050905090565b6000610db8338484611ac2565b5060015b92915050565b6000546001600160a01b03163314610dec5760405162461bcd60e51b8152600401610c2290613099565b601992909255601b55601d55565b6000546001600160a01b03163314610e245760405162461bcd60e51b8152600401610c2290613099565b60228054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610e6a5760405162461bcd60e51b8152600401610c2290613099565b60005b82811015610f9e576000848483818110610e8957610e89613108565b9050602002016020810190610e9e9190612f54565b90507f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316816001600160a01b03161480610ee857506001600160a01b03811630145b80610f2457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316816001600160a01b0316145b15610f2e57600080fd5b821515600103610f60576001600160a01b0381166000908152600f60205260409020805460ff19166001179055610f8b565b821515600003610f8b576001600160a01b0381166000908152600f60205260409020805460ff191690555b5080610f9681613134565b915050610e6d565b50505050565b6000546001600160a01b03163314610fce5760405162461bcd60e51b8152600401610c2290613099565b6064811115610fdc57600080fd5b60085447906001600160a01b03166108fc6064610ff9858561314d565b6110039190613164565b6040518115909202916000818181858888f1935050505015801561102b573d6000803e3d6000fd5b505050565b600061103d848484611be6565b6001600160a01b0384166000908152600d6020908152604080832033808552925290912054611078918691611073908690613186565b611ac2565b5060019392505050565b6000546001600160a01b031633146110ac5760405162461bcd60e51b8152600401610c2290613099565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610db8918590611073908690613199565b6000546001600160a01b0316331461112f5760405162461bcd60e51b8152600401610c2290613099565b60145460ff1661115a57436013556014805460ff191660011790556022805461ff0019166101001790555b6022805463ff000000191663010000008315150217905560145460ff166111a5576040517f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266990600090a15b50565b6000546001600160a01b031633146111d25760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b03166000908152600e60205260409020805460ff19166001179055565b6000546001600160a01b031633146112205760405162461bcd60e51b8152600401610c2290613099565b60125481111561122f57600080fd5b601155565b6000546001600160a01b0316331461125e5760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b03919091166000908152602360205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112b35760405162461bcd60e51b8152600401610c2290613099565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112ff5760405162461bcd60e51b8152600401610c2290613099565b601a92909255601c55601e55565b6000546001600160a01b031633146113375760405162461bcd60e51b8152600401610c2290613099565b60fa6113438284613199565b111561134e57600080fd5b601d91909155601e55565b6000546001600160a01b031633146113835760405162461bcd60e51b8152600401610c2290613099565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113f75760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b03166000908152600f60205260409020805460ff19169055565b6000546001600160a01b031633146114425760405162461bcd60e51b8152600401610c2290613099565b60fa61144e8284613199565b111561145957600080fd5b601991909155601a55565b606060048054610d28906130ce565b6000546001600160a01b0316331461149d5760405162461bcd60e51b8152600401610c2290613099565b306000818152600a602052604090205490610d15908383611be6565b6000546001600160a01b031633146114e35760405162461bcd60e51b8152600401610c2290613099565b6103e86007546114f39190613164565b8688600754611502919061314d565b61150c9190613164565b10156115765760405162461bcd60e51b815260206004820152603360248201527f4d6178205472616e73616374696f6e206d7573742062652061626f766520302e60448201527218929037b3103a37ba30b61039bab838363c9760691b6064820152608401610c22565b6103e86007546115869190613164565b8486600754611595919061314d565b61159f9190613164565b10156116045760405162461bcd60e51b815260206004820152602e60248201527f4d61782057616c6c6574206d7573742062652061626f766520302e3125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c22565b60008688600754611615919061314d565b61161f9190613164565b905060008587600754611632919061314d565b61163c9190613164565b90506000848660075461164f919061314d565b6116599190613164565b60408051608081018252858152602081018590529081018290529415156060909501859052601593909355506016556017556018805460ff19169091179055505050505050565b336000818152600d602090815260408083206001600160a01b03871684529091528120549091610db8918590611073908690613186565b6000610db8338484611be6565b6000546001600160a01b0316331461170e5760405162461bcd60e51b8152600401610c2290613099565b602155565b6000546001600160a01b0316331461173d5760405162461bcd60e51b8152600401610c2290613099565b6018805460ff1916911515919091179055565b600080546001600160a01b0316331461177b5760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b03831661178e57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156117d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f991906131ac565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af115801561184c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187091906131c5565b949350505050565b6000546001600160a01b031633146118a25760405162461bcd60e51b8152600401610c2290613099565b602280548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906118eb90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146119205760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b03166000908152600e60205260409020805460ff19169055565b6000546001600160a01b0316331461196b5760405162461bcd60e51b8152600401610c2290613099565b6010805461ffff191692151561ff0019169290921761010091151591909102179055565b6000546001600160a01b031633146119b95760405162461bcd60e51b8152600401610c2290613099565b6001600160a01b038116611a1e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c22565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611aa35760405162461bcd60e51b8152600401610c2290613099565b60fa611aaf8284613199565b1115611aba57600080fd5b601c55601b55565b6001600160a01b038316611b245760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c22565b6001600160a01b038216611b855760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c22565b6001600160a01b038381166000818152600d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611c4a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c22565b6001600160a01b038216611cac5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c22565b60008111611d0e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c22565b6001600160a01b0383166000908152600f602052604090205460ff1615611d605760405162461bcd60e51b8152600401610c22906020808252600490820152634865686560e01b604082015260600190565b6001600160a01b0382166000908152600f602052604090205460ff1615611db25760405162461bcd60e51b8152600401610c22906020808252600490820152634865686560e01b604082015260600190565b6022546301000000900460ff16611f09576001600160a01b03831660009081526023602052604090205460ff1680611e0257506001600160a01b03821660009081526023602052604090205460ff165b611e465760405162461bcd60e51b8152602060048201526015602482015274151c985b9cd9995c8e881b9bdd08185b1b1bddd959605a1b6044820152606401610c22565b6001600160a01b037f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa214166000908152600a60205260409020541580611ebd57507f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316826001600160a01b031614155b611f095760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665723a206e6f20626f64792063616e2073656c6c206e6f7700006044820152606401610c22565b60185460ff161561210b576000546001600160a01b03848116911614801590611f4057506000546001600160a01b03838116911614155b80611f6957506001600160a01b03821661dead14801590611f6957506001600160a01b03821615155b1561210b577f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316836001600160a01b03161480611fdf57507f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316826001600160a01b0316145b1561203a576001600160a01b0382166000908152600e602052604090205460ff1615801561202657506001600160a01b0383166000908152600e602052604090205460ff16155b1561203a5760155481111561203a57600080fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b0316141580156120ae57507f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316826001600160a01b031614155b1561210b576001600160a01b0382166000908152600e602052604090205460ff1661210b57601654816120f6846001600160a01b03166000908152600a602052604090205490565b6121009190613199565b111561210b57600080fd5b7f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316836001600160a01b031614801561217e57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b031614155b80156121a357506001600160a01b0382166000908152600e602052604090205460ff16155b156122035760105460ff16156121fe576001600160a01b0382166000908152600b602052604090205442116121d757600080fd5b6011546121e49042613199565b6001600160a01b0383166000908152600b60205260409020555b6122bf565b7f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316836001600160a01b03161415801561225e57506001600160a01b0383166000908152600e602052604090205460ff16155b156122bf57601054610100900460ff16156122bf576001600160a01b0383166000908152600c602052604090205442101561229857600080fd5b6011546122a59042613199565b6001600160a01b0384166000908152600c60205260409020555b60225460ff1615801561230457507f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316836001600160a01b031614155b80156123175750602254610100900460ff165b156123aa57306000908152600a602052604090205460225462010000900460ff1680156123465750601f548110155b80156123565750601754601f5410155b1561236c5760175461236790612401565b6123a8565b60225462010000900460ff1615801561238757506020548110155b8015612397575060175460205410155b156123a8576017546123a89061250d565b505b6001600160a01b0383166000908152600e602052604090205460019060ff16806123ec57506001600160a01b0383166000908152600e602052604090205460ff165b156123f5575060005b610f9e8484848461260a565b6022805460ff1916600117905547600061241c600284613164565b9050600061242a8285613186565b9050811561243b5761243b8261297d565b4760006124488583613186565b905060008311801561245a5750600081115b156124a3576124698382612b7b565b60408051848152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b85601f60008282546124b59190613186565b9091555050601754601f541080156124e957506000601e54601c54601a546124dd9190613199565b6124e79190613199565b115b156124fb576022805462ff0000191690555b50506022805460ff1916905550505050565b6022805460ff191660011790558015612529576125298161297d565b47801561259f576008546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561256a573d6000803e3d6000fd5b506040518181527f4d5c7c4ddada689ed3a12644234d0a26ec361d8a6f55c9b05805a57bd636f14b9060200160405180910390a15b81602060008282546125b19190613186565b90915550506017546020541080156125e557506000601d54601b546019546125d99190613199565b6125e39190613199565b115b156125fc576022805462ff00001916620100001790555b50506022805460ff19169055565b601454600090819081908190610100900460ff16156127115760145460ff168015612636575060135415155b8015612650575060215460135461264d9190613199565b43115b15612665576014805461ff0019169055612711565b7f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316886001600160a01b03161480156126d857507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316876001600160a01b031614155b80156126fd57506001600160a01b0387166000908152600e602052604090205460ff16155b156127115761270d876001612cae565b5060015b8415612854577f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316886001600160a01b03160361275f57601b549250601c5491506127b2565b7f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316876001600160a01b0316036127a757601d549250601e5491506127b2565b6019549250601a5491505b80156127c3576101c292506101c291505b6103e86127d08385613199565b6127da908861314d565b6127e49190613164565b935060006127f28385613199565b11156128545760006128048385613199565b61280e858761314d565b6128189190613164565b905080601f600082825461282c9190613199565b9091555061283c90508186613186565b6020600082825461284d9190613199565b9091555050505b60006128608588613186565b6001600160a01b038a166000908152600a602052604081208054929350899290919061288d908490613186565b9091555050306000908152600a6020526040812080548792906128b1908490613199565b909155505060405185815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36001600160a01b0388166000908152600a60205260408120805483929061291e908490613199565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161296a91815260200190565b60405180910390a3505050505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129b2576129b2613108565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5491906131e2565b81600181518110612a6757612a67613108565b6001600160a01b03928316602091820292909201810191909152306000908152600d825260408082207f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9094168252929091522054821115612af057612af0307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600019611ac2565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612b459085906000908690309042906004016131ff565b600060405180830381600087803b158015612b5f57600080fd5b505af1158015612b73573d6000803e3d6000fd5b505050505050565b306000908152600d602090815260408083207f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03168452909152902054821115612bf357612bf3307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600019611ac2565b60095460405163f305d71960e01b81523060048201526024810184905260006044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990839060c40160606040518083038185885af1158015612c82573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ca79190613270565b5050505050565b7f000000000000000000000000cf0197534f78a65bbbecd5ba31fd6be5150aa2146001600160a01b0316826001600160a01b03161480612cf657506001600160a01b03821630145b80612d3257507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316826001600160a01b0316145b15612d3c57600080fd5b801515600103610d15576001600160a01b0382166000818152600f6020908152604091829020805460ff191660011790558151928352831515908301527f2a435d5b7631d89e0f8a99c9c5b5cf1a1e49e467b6a14ab37d5891cdeabde6a5910160405180910390a15050565b6001600160a01b03811681146111a557600080fd5b80151581146111a557600080fd5b60008060408385031215612dde57600080fd5b8235612de981612da8565b91506020830135612df981612dbd565b809150509250929050565b600060208083528351808285015260005b81811015612e3157858101830151858201604001528201612e15565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215612e6557600080fd5b8235612e7081612da8565b946020939093013593505050565b600080600060608486031215612e9357600080fd5b505081359360208301359350604090920135919050565b600060208284031215612ebc57600080fd5b8135612ec781612dbd565b9392505050565b600080600060408486031215612ee357600080fd5b833567ffffffffffffffff80821115612efb57600080fd5b818601915086601f830112612f0f57600080fd5b813581811115612f1e57600080fd5b8760208260051b8501011115612f3357600080fd5b60209283019550935050840135612f4981612dbd565b809150509250925092565b600060208284031215612f6657600080fd5b8135612ec781612da8565b600060208284031215612f8357600080fd5b5035919050565b600080600060608486031215612f9f57600080fd5b8335612faa81612da8565b92506020840135612fba81612da8565b929592945050506040919091013590565b60008060408385031215612fde57600080fd5b50508035926020909101359150565b600080600080600080600060e0888a03121561300857600080fd5b873596506020880135955060408801359450606088013593506080880135925060a0880135915060c088013561303d81612dbd565b8091505092959891949750929550565b6000806040838503121561306057600080fd5b823561306b81612da8565b91506020830135612df981612da8565b6000806040838503121561308e57600080fd5b8235612de981612dbd565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806130e257607f821691505b60208210810361310257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016131465761314661311e565b5060010190565b8082028115828204841417610dbc57610dbc61311e565b60008261318157634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610dbc57610dbc61311e565b80820180821115610dbc57610dbc61311e565b6000602082840312156131be57600080fd5b5051919050565b6000602082840312156131d757600080fd5b8151612ec781612dbd565b6000602082840312156131f457600080fd5b8151612ec781612da8565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561324f5784516001600160a01b03168352938301939183019160010161322a565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561328557600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122007dce1fe16073616a2ad05da724cb39c126d5b6332bc9d35d0aead6296cba5c064736f6c63430008120033

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

00000000000000000000000081139927e57111b7dd5a32d04d9ef3487fd86217

-----Decoded View---------------
Arg [0] : marketingWallet (address): 0x81139927e57111B7dD5A32d04D9EF3487Fd86217

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000081139927e57111b7dd5a32d04d9ef3487fd86217


Deployed Bytecode Sourcemap

14487:20449:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22959:389;;;;;;;;;;-1:-1:-1;22959:389:0;;;;;:::i;:::-;;:::i;:::-;;18529:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19185:161;;;;;;;;;;-1:-1:-1;19185:161:0;;;;;:::i;:::-;;:::i;:::-;;;1698:14:1;;1691:22;1673:41;;1661:2;1646:18;19185:161:0;1533:187:1;20058:217:0;;;;;;;;;;-1:-1:-1;20058:217:0;;;;;:::i;:::-;;:::i;22287:105::-;;;;;;;;;;-1:-1:-1;22287:105:0;;;;;:::i;:::-;;:::i;16436:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2483:32:1;;;2465:51;;2453:2;2438:18;16436:51:0;2292:230:1;23356:534:0;;;;;;;;;;-1:-1:-1;23356:534:0;;;;;:::i;:::-;;:::i;18806:95::-;;;;;;;;;;-1:-1:-1;18886:7:0;;18806:95;;;3428:25:1;;;3416:2;3401:18;18806:95:0;3282:177:1;16680:48:0;;;;;;;;;;-1:-1:-1;16680:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15176:46;;;;;;;;;;-1:-1:-1;15176:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26844:286;;;;;;;;;;-1:-1:-1;26844:286:0;;;;;:::i;:::-;;:::i;16119:28::-;;;;;;;;;;;;;;;;28874:348;;;;;;;;;;-1:-1:-1;28874:348:0;;;;;:::i;:::-;;:::i;14846:31::-;;;;;;;;;;-1:-1:-1;14846:31:0;;;;-1:-1:-1;;;;;14846:31:0;;;20833:117;;;;;;;;;;-1:-1:-1;20833:117:0;;;;;:::i;:::-;;:::i;18715:83::-;;;;;;;;;;-1:-1:-1;18781:9:0;;18715:83;;18781:9;;;;4712:36:1;;4700:2;4685:18;18715:83:0;4570:184:1;16397:30:0;;;;;;;;;;;;;;;;22400:266;;;;;;;;;;-1:-1:-1;22400:266:0;;;;;:::i;:::-;;:::i;21674:366::-;;;;;;;;;;-1:-1:-1;21674:366:0;;;;;:::i;:::-;;:::i;24472:111::-;;;;;;;;;;-1:-1:-1;24472:111:0;;;;;:::i;:::-;;:::i;16494:38::-;;;;;;;;;;;;;;;16575:33;;;;;;;;;;-1:-1:-1;16575:33:0;;;;;;;;;;;20508:161;;;;;;;;;;-1:-1:-1;20508:161:0;;;;;:::i;:::-;;:::i;16310:32::-;;;;;;;;;;;;;;;;22153:126;;;;;;;;;;-1:-1:-1;22153:126:0;;;;;:::i;:::-;;:::i;20677:148::-;;;;;;;;;;-1:-1:-1;20677:148:0;;;;;:::i;:::-;;:::i;15728:153::-;;;;;;;;;;-1:-1:-1;15728:153:0;;;;;;;;;;;;;;;;;;;;;;5209:25:1;;;5277:14;;5270:22;5265:2;5250:18;;5243:50;5336:14;5329:22;5309:18;;;5302:50;5197:2;5182:18;15728:153:0;5019:339:1;20283:217:0;;;;;;;;;;-1:-1:-1;20283:217:0;;;;;:::i;:::-;;:::i;19354:229::-;;;;;;;;;;-1:-1:-1;19354:229:0;;;;;:::i;:::-;;:::i;16084:28::-;;;;;;;;;;;;;;;;19060:117;;;;;;;;;;-1:-1:-1;19060:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;19153:16:0;19126:7;19153:16;;;:7;:16;;;;;;;19060:117;4576:148;;;;;;;;;;;;;:::i;16615:25::-;;;;;;;;;;-1:-1:-1;16615:25:0;;;;;;;;;;;23898:107;;;;;;;;;;-1:-1:-1;23898:107:0;;;;;:::i;:::-;;:::i;15119:50::-;;;;;;;;;;-1:-1:-1;15119:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16230:32;;;;;;;;;;;;;;;;4362:79;;;;;;;;;;-1:-1:-1;4400:7:0;4427:6;-1:-1:-1;;;;;4427:6:0;4362:79;;19825:225;;;;;;;;;;-1:-1:-1;19825:225:0;;;;;:::i;:::-;;:::i;18620:87::-;;;;;;;;;;;;;:::i;15390:217::-;;;;;;;;;;-1:-1:-1;15390:217:0;;;;;;;;;;;;;;;;;;;;;;;;;5860:14:1;;5853:22;5835:41;;5919:14;;5912:22;5907:2;5892:18;;5885:50;5951:18;;;5944:34;6009:2;5994:18;;5987:34;5822:3;5807:19;15390:217:0;5616:411:1;14800:39:0;;;;;;;;;;-1:-1:-1;14800:39:0;;;;-1:-1:-1;;;;;14800:39:0;;;27138:167;;;;;;;;;;-1:-1:-1;27138:167:0;;;;;:::i;:::-;;:::i;20958:708::-;;;;;;;;;;-1:-1:-1;20958:708:0;;;;;:::i;:::-;;:::i;22674:277::-;;;;;;;;;;-1:-1:-1;22674:277:0;;;;;:::i;:::-;;:::i;32326:167::-;;;;;;;;;;-1:-1:-1;32326:167:0;;;;;:::i;:::-;;:::i;22048:97::-;;;;;;;;;;-1:-1:-1;22048:97:0;;;;;:::i;:::-;;:::i;24374:90::-;;;;;;;;;;-1:-1:-1;24374:90:0;;;;;:::i;:::-;;:::i;27313:285::-;;;;;;;;;;-1:-1:-1;27313:285:0;;;;;:::i;:::-;;:::i;24709:171::-;;;;;;;;;;-1:-1:-1;24709:171:0;;;;;:::i;:::-;;:::i;16192:31::-;;;;;;;;;;;;;;;;16349:39;;;;;;;;;;;;;;;;16269:32;;;;;;;;;;;;;;;;16649:24;;;;;;;;;;-1:-1:-1;16649:24:0;;;;;;;;;;;16046:29;;;;;;;;;;-1:-1:-1;16046:29:0;;;;;;;;;;;;;;;;;;;;;7532:25:1;;;7588:2;7573:18;;7566:34;;;;7616:18;;;7609:34;7686:14;7679:22;7674:2;7659:18;;7652:50;7519:3;7504:19;16046:29:0;7307:401:1;16154:31:0;;;;;;;;;;;;;;;;18909:143;;;;;;;;;;-1:-1:-1;18909:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19017:18:0;;;18990:7;19017:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18909:143;24591:110;;;;;;;;;;-1:-1:-1;24591:110:0;;;;;:::i;:::-;;:::i;34753:180::-;;;;;;;;;;-1:-1:-1;34753:180:0;;;;;:::i;:::-;;:::i;4732:281::-;;;;;;;;;;-1:-1:-1;4732:281:0;;;;;:::i;:::-;;:::i;19591:226::-;;;;;;;;;;-1:-1:-1;19591:226:0;;;;;:::i;:::-;;:::i;22959:389::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;;;;;;;;;23066:13:::1;-1:-1:-1::0;;;;;23055:24:0::1;:7;-1:-1:-1::0;;;;;23055:24:0::1;;:52;;;-1:-1:-1::0;;;;;;23083:24:0;::::1;23102:4;23083:24;23055:52;:91;;;;23130:15;-1:-1:-1::0;;;;;23111:35:0::1;:7;-1:-1:-1::0;;;;;23111:35:0::1;;23055:91;23052:107;;;23149:8;::::0;::::1;23052:107;23173:19:::0;::::1;;23188:4;23173:19:::0;23169:172:::1;;-1:-1:-1::0;;;;;23209:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;23209:30:0::1;23235:4;23209:30;::::0;;22959:389;;:::o;23169:172::-:1;23261:20:::0;::::1;;23276:5;23261:20:::0;23257:84:::1;;-1:-1:-1::0;;;;;23298:23:0;::::1;23324:5;23298:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;23298:31:0::1;::::0;;23257:84:::1;22959:389:::0;;:::o;18529:83::-;18566:13;18599:5;18592:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18529:83;:::o;19185:161::-;19260:4;19277:39;979:10;19300:7;19309:6;19277:8;:39::i;:::-;-1:-1:-1;19334:4:0;19185:161;;;;;:::o;20058:217::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;20166:13:::1;:27:::0;;;;20204:16:::1;:25:::0;20240:17:::1;:27:::0;20058:217::o;22287:105::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;22362:13:::1;:22:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;22362:22:0;;::::1;::::0;;;::::1;::::0;;22287:105::o;23356:534::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;23459:9:::1;23454:429;23470:19:::0;;::::1;23454:429;;;23511:15;23529:8;;23538:1;23529:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23511:29;;23569:13;-1:-1:-1::0;;;;;23558:24:0::1;:7;-1:-1:-1::0;;;;;23558:24:0::1;;:52;;;-1:-1:-1::0;;;;;;23586:24:0;::::1;23605:4;23586:24;23558:52;:91;;;;23633:15;-1:-1:-1::0;;;;;23614:35:0::1;:7;-1:-1:-1::0;;;;;23614:35:0::1;;23558:91;23555:107;;;23652:8;::::0;::::1;23555:107;23680:19:::0;::::1;;23695:4;23680:19:::0;23676:188:::1;;-1:-1:-1::0;;;;;23720:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;:30;;-1:-1:-1;;23720:30:0::1;23746:4;23720:30;::::0;;23676:188:::1;;;23776:20:::0;::::1;;23791:5;23776:20:::0;23772:92:::1;;-1:-1:-1::0;;;;;23817:23:0;::::1;23843:5;23817:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;23817:31:0::1;::::0;;23772:92:::1;-1:-1:-1::0;23491:3:0;::::1;::::0;::::1;:::i;:::-;;;;23454:429;;;;23356:534:::0;;;:::o;26844:286::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;26955:3:::1;26935:16;:23;;26927:32;;;::::0;::::1;;27030:16;::::0;26990:21:::1;::::0;-1:-1:-1;;;;;27030:16:0::1;27022:100;27107:3;27072:30;27085:16:::0;26990:21;27072:30:::1;:::i;:::-;27071:40;;;;:::i;:::-;27022:100;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26916:214;26844:286:::0;:::o;28874:348::-;28970:4;28987:36;28997:6;29005:9;29016:6;28987:9;:36::i;:::-;-1:-1:-1;;;;;29105:19:0;;;;;;:11;:19;;;;;;;;979:10;29105:33;;;;;;;;;29034:158;;29057:6;;29105:76;;29160:6;;29105:76;:::i;:::-;29034:8;:158::i;:::-;-1:-1:-1;29210:4:0;28874:348;;;;;:::o;20833:117::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;20912:16:::1;:30:::0;;-1:-1:-1;;;;;;20912:30:0::1;-1:-1:-1::0;;;;;20912:30:0;;;::::1;::::0;;;::::1;::::0;;20833:117::o;22400:266::-;979:10;22488:4;22576:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22576:34:0;;;;;;;;;;22488:4;;22504:132;;22554:7;;22576:49;;22614:10;;22576:49;:::i;21674:366::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;21746:18;;::::1;;21741:182;;21804:12;21781:9;:35:::0;21831:18;:25;;-1:-1:-1;;21831:25:0::1;21852:4;21831:25;::::0;;21871:21:::1;:28:::0;;-1:-1:-1;;21871:28:0::1;21831:25;21871:28;::::0;;21741:182:::1;21935:12;:20:::0;;-1:-1:-1;;21935:20:0::1;::::0;;::::1;;;;::::0;;21973:18;;21935:20:::1;21973:18;21968:65;;22013:8;::::0;::::1;::::0;;;::::1;21968:65;21674:366:::0;:::o;24472:111::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24541:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;24541:34:0::1;24571:4;24541:34;::::0;;24472:111::o;20508:161::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;20593:26;;20583:36;::::1;;20575:45;;;::::0;::::1;;20631:21:::0;:30;20508:161::o;22153:126::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22241:21:0;;;::::1;;::::0;;;:16:::1;:21;::::0;;;;:30;;-1:-1:-1;;22241:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22153:126::o;20677:148::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;20771:16:::1;:46:::0;;-1:-1:-1;;;;;;20771:46:0::1;-1:-1:-1::0;;;;;20771:46:0;;;::::1;::::0;;;::::1;::::0;;20677:148::o;20283:217::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;20391:13:::1;:27:::0;;;;20429:16:::1;:25:::0;20465:17:::1;:27:::0;20283:217::o;19354:229::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;19485:3:::1;19454:27;19469:12:::0;19454;:27:::1;:::i;:::-;:34;;19446:43;;;::::0;::::1;;19500:17;:32:::0;;;;19543:17:::1;:32:::0;19354:229::o;4576:148::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;4683:1:::1;4667:6:::0;;4646:40:::1;::::0;-1:-1:-1;;;;;4667:6:0;;::::1;::::0;4646:40:::1;::::0;4683:1;;4646:40:::1;4714:1;4697:19:::0;;-1:-1:-1;;;;;;4697:19:0::1;::::0;;4576:148::o;23898:107::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23966:23:0::1;23992:5;23966:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;23966:31:0::1;::::0;;23898:107::o;19825:225::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;19960:3:::1;19929:27;19944:12:::0;19929;:27:::1;:::i;:::-;:34;;19921:43;;;::::0;::::1;;19975:13;:28:::0;;;;20014:13:::1;:28:::0;19825:225::o;18620:87::-;18659:13;18692:7;18685:14;;;;;:::i;27138:167::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;27242:4:::1;27205:16;19153::::0;;;:7;:16;;;;;;;27259:38:::1;::::0;27284:2;19153:16;27259:9:::1;:38::i;20958:708::-:0;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;21143:4:::1;21133:7;;:14;;;;:::i;:::-;21125:3;21118;21108:7;;:13;;;;:::i;:::-;21107:21;;;;:::i;:::-;:41;;21099:105;;;::::0;-1:-1:-1;;;21099:105:0;;10104:2:1;21099:105:0::1;::::0;::::1;10086:21:1::0;10143:2;10123:18;;;10116:30;10182:34;10162:18;;;10155:62;-1:-1:-1;;;10233:18:1;;;10226:49;10292:19;;21099:105:0::1;9902:415:1::0;21099:105:0::1;21259:4;21249:7;;:14;;;;:::i;:::-;21241:3;21234;21224:7;;:13;;;;:::i;:::-;21223:21;;;;:::i;:::-;:41;;21215:100;;;::::0;-1:-1:-1;;;21215:100:0;;10524:2:1;21215:100:0::1;::::0;::::1;10506:21:1::0;10563:2;10543:18;;;10536:30;10602:34;10582:18;;;10575:62;-1:-1:-1;;;10653:18:1;;;10646:44;10707:19;;21215:100:0::1;10322:410:1::0;21215:100:0::1;21326:13;21361:3;21353;21343:7;;:13;;;;:::i;:::-;21342:23;;;;:::i;:::-;21326:39;;21376:13;21410:3;21403;21393:7;;:13;;;;:::i;:::-;21392:21;;;;:::i;:::-;21376:37;;21424:18;21463:2;21456;21446:7;;:12;;;;:::i;:::-;21445:21;;;;:::i;:::-;21490:168;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;::::1;;::::0;;;;;;;21477:10:::1;:181:::0;;;;-1:-1:-1;21477:181:0;;;;;;;-1:-1:-1;;21477:181:0::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;20958:708:0:o;22674:277::-;979:10;22767:4;22856:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22856:34:0;;;;;;;;;;22767:4;;22784:137;;22834:7;;22856:54;;22894:15;;22856:54;:::i;32326:167::-;32404:4;32421:42;979:10;32445:9;32456:6;32421:9;:42::i;22048:97::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;22117:11:::1;:20:::0;22048:97::o;24374:90::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;24430:18;:26;;-1:-1:-1;;24430:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24374:90::o;27313:285::-;27396:10;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27427:20:0;::::1;27419:29;;;::::0;::::1;;27486:39;::::0;-1:-1:-1;;;27486:39:0;;27519:4:::1;27486:39;::::0;::::1;2465:51:1::0;27459:24:0::1;::::0;-1:-1:-1;;;;;27486:24:0;::::1;::::0;::::1;::::0;2438:18:1;;27486:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27544:46;::::0;-1:-1:-1;;;27544:46:0;;-1:-1:-1;;;;;11118:32:1;;;27544:46:0::1;::::0;::::1;11100:51:1::0;11167:18;;;11160:34;;;27459:66:0;;-1:-1:-1;27544:23:0;;::::1;::::0;::::1;::::0;11073:18:1;;27544:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27536:54:::0;27313:285;-1:-1:-1;;;;27313:285:0:o;24709:171::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;24786:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;24786:32:0;;::::1;;::::0;;24834:38:::1;::::0;::::1;::::0;::::1;::::0;24810:8;1698:14:1;1691:22;1673:41;;1661:2;1646:18;;1533:187;24834:38:0::1;;;;;;;;24709:171:::0;:::o;24591:110::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24658:27:0::1;24688:5;24658:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;24658:35:0::1;::::0;;24591:110::o;34753:180::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;34835:12:::1;:39:::0;;-1:-1:-1;;34885:40:0;34835:39;::::1;;-1:-1:-1::0;;34885:40:0;;;;;34835:39:::1;34885:40:::0;::::1;;::::0;;;::::1;;::::0;;34753:180::o;4732:281::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4835:22:0;::::1;4813:110;;;::::0;-1:-1:-1;;;4813:110:0;;11657:2:1;4813:110:0::1;::::0;::::1;11639:21:1::0;11696:2;11676:18;;;11669:30;11735:34;11715:18;;;11708:62;-1:-1:-1;;;11786:18:1;;;11779:36;11832:19;;4813:110:0::1;11455:402:1::0;4813:110:0::1;4960:6;::::0;;4939:38:::1;::::0;-1:-1:-1;;;;;4939:38:0;;::::1;::::0;4960:6;::::1;::::0;4939:38:::1;::::0;::::1;4988:6;:17:::0;;-1:-1:-1;;;;;;4988:17:0::1;-1:-1:-1::0;;;;;4988:17:0;;;::::1;::::0;;;::::1;::::0;;4732:281::o;19591:226::-;4489:6;;-1:-1:-1;;;;;4489:6:0;979:10;4489:22;4481:67;;;;-1:-1:-1;;;4481:67:0;;;;;;;:::i;:::-;19721:3:::1;19690:27;19705:12:::0;19690;:27:::1;:::i;:::-;:34;;19682:43;;;::::0;::::1;;19736:16;:31:::0;19778:16:::1;:31:::0;19591:226::o;24982:335::-;-1:-1:-1;;;;;25073:19:0;;25065:68;;;;-1:-1:-1;;;25065:68:0;;12064:2:1;25065:68:0;;;12046:21:1;12103:2;12083:18;;;12076:30;12142:34;12122:18;;;12115:62;-1:-1:-1;;;12193:18:1;;;12186:34;12237:19;;25065:68:0;11862:400:1;25065:68:0;-1:-1:-1;;;;;25152:21:0;;25144:68;;;;-1:-1:-1;;;25144:68:0;;12469:2:1;25144:68:0;;;12451:21:1;12508:2;12488:18;;;12481:30;12547:34;12527:18;;;12520:62;-1:-1:-1;;;12598:18:1;;;12591:32;12640:19;;25144:68:0;12267:398:1;25144:68:0;-1:-1:-1;;;;;25225:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;25277:32;;3428:25:1;;;25277:32:0;;3401:18:1;25277:32:0;;;;;;;24982:335;;;:::o;29234:3084::-;-1:-1:-1;;;;;29322:18:0;;29314:68;;;;-1:-1:-1;;;29314:68:0;;12872:2:1;29314:68:0;;;12854:21:1;12911:2;12891:18;;;12884:30;12950:34;12930:18;;;12923:62;-1:-1:-1;;;13001:18:1;;;12994:35;13046:19;;29314:68:0;12670:401:1;29314:68:0;-1:-1:-1;;;;;29401:16:0;;29393:64;;;;-1:-1:-1;;;29393:64:0;;13278:2:1;29393:64:0;;;13260:21:1;13317:2;13297:18;;;13290:30;13356:34;13336:18;;;13329:62;-1:-1:-1;;;13407:18:1;;;13400:33;13450:19;;29393:64:0;13076:399:1;29393:64:0;29485:1;29476:6;:10;29468:64;;;;-1:-1:-1;;;29468:64:0;;13682:2:1;29468:64:0;;;13664:21:1;13721:2;13701:18;;;13694:30;13760:34;13740:18;;;13733:62;-1:-1:-1;;;13811:18:1;;;13804:39;13860:19;;29468:64:0;13480:405:1;29468:64:0;-1:-1:-1;;;;;29551:20:0;;;;;;:14;:20;;;;;;;;:29;29543:46;;;;-1:-1:-1;;;29543:46:0;;;;;;14092:2:1;14074:21;;;14131:1;14111:18;;;14104:29;-1:-1:-1;;;14164:2:1;14149:18;;14142:34;14208:2;14193:18;;13890:327;29543:46:0;-1:-1:-1;;;;;29608:18:0;;;;;;:14;:18;;;;;;;;:27;29600:44;;;;-1:-1:-1;;;29600:44:0;;;;;;14092:2:1;14074:21;;;14131:1;14111:18;;;14104:29;-1:-1:-1;;;14164:2:1;14149:18;;14142:34;14208:2;14193:18;;13890:327;29600:44:0;29662:12;;;;;;;29657:236;;-1:-1:-1;;;;;29699:22:0;;;;;;:16;:22;;;;;;;;;:46;;-1:-1:-1;;;;;;29725:20:0;;;;;;:16;:20;;;;;;;;29699:46;29691:80;;;;-1:-1:-1;;;29691:80:0;;14424:2:1;29691:80:0;;;14406:21:1;14463:2;14443:18;;;14436:30;-1:-1:-1;;;14482:18:1;;;14475:51;14543:18;;29691:80:0;14222:345:1;29691:80:0;-1:-1:-1;;;;;29804:13:0;19153:16;19126:7;19153:16;;;:7;:16;;;;;;29794:29;;:52;;;29833:13;-1:-1:-1;;;;;29827:19:0;:2;-1:-1:-1;;;;;29827:19:0;;;29794:52;29786:95;;;;-1:-1:-1;;;29786:95:0;;14774:2:1;29786:95:0;;;14756:21:1;14813:2;14793:18;;;14786:30;14852:32;14832:18;;;14825:60;14902:18;;29786:95:0;14572:354:1;29786:95:0;29909:18;;;;29905:697;;;4400:7;4427:6;-1:-1:-1;;;;;29947:15:0;;;4427:6;;29947:15;;;;:32;;-1:-1:-1;4400:7:0;4427:6;-1:-1:-1;;;;;29966:13:0;;;4427:6;;29966:13;;29947:32;:77;;;-1:-1:-1;;;;;;29983:21:0;;29997:6;29983:21;;;;:41;;-1:-1:-1;;;;;;30008:16:0;;;;29983:41;29944:647;;;30071:13;-1:-1:-1;;;;;30063:21:0;:4;-1:-1:-1;;;;;30063:21:0;;:44;;;;30094:13;-1:-1:-1;;;;;30088:19:0;:2;-1:-1:-1;;;;;30088:19:0;;30063:44;30059:259;;;-1:-1:-1;;;;;30154:22:0;;;;;;:18;:22;;;;;;;;30153:23;:52;;;;-1:-1:-1;;;;;;30181:24:0;;;;;;:18;:24;;;;;;;;30180:25;30153:52;30150:149;;;30252:10;:22;30242:32;;;30234:41;;;;;;30353:15;-1:-1:-1;;;;;30339:30:0;:2;-1:-1:-1;;;;;30339:30:0;;;:53;;;;;30379:13;-1:-1:-1;;;;;30373:19:0;:2;-1:-1:-1;;;;;30373:19:0;;;30339:53;30336:240;;;-1:-1:-1;;;;;30421:22:0;;;;;;:18;:22;;;;;;;;30417:140;;30506:26;;30496:6;30480:13;30490:2;-1:-1:-1;;;;;19153:16:0;19126:7;19153:16;;;:7;:16;;;;;;;19060:117;30480:13;:22;;;;:::i;:::-;:52;;30472:61;;;;;;30626:13;-1:-1:-1;;;;;30618:21:0;:4;-1:-1:-1;;;;;30618:21:0;;:55;;;;;30657:15;-1:-1:-1;;;;;30643:30:0;:2;-1:-1:-1;;;;;30643:30:0;;;30618:55;:82;;;;-1:-1:-1;;;;;;30678:22:0;;;;;;:18;:22;;;;;;;;30677:23;30618:82;30614:647;;;30739:12;:31;;;30735:204;;;-1:-1:-1;;;;;30803:15:0;;;;;;:11;:15;;;;;;30821;-1:-1:-1;30795:42:0;;;;;;30897:21;;30878:41;;:15;:41;:::i;:::-;-1:-1:-1;;;;;30860:15:0;;;;;;:11;:15;;;;;:59;30735:204;30614:647;;;30972:13;-1:-1:-1;;;;;30964:21:0;:4;-1:-1:-1;;;;;30964:21:0;;;:50;;;;-1:-1:-1;;;;;;30990:24:0;;;;;;:18;:24;;;;;;;;30989:25;30964:50;30960:301;;;31038:12;:32;;;;;;31034:212;;;-1:-1:-1;;;;;31103:18:0;;;;;;:12;:18;;;;;;31125:15;-1:-1:-1;31103:37:0;31095:46;;;;;;31204:21;;31185:41;;:15;:41;:::i;:::-;-1:-1:-1;;;;;31164:18:0;;;;;;:12;:18;;;;;:62;31034:212;31292:16;;;;31291:17;:55;;;;;31333:13;-1:-1:-1;;;;;31325:21:0;:4;-1:-1:-1;;;;;31325:21:0;;;31291:55;:93;;;;-1:-1:-1;31363:21:0;;;;;;;31291:93;31273:626;;;31460:4;31411:28;19153:16;;;:7;:16;;;;;;31485:13;;;;;;;:58;;;;;31526:17;;31502:20;:41;;31485:58;:109;;;;-1:-1:-1;31568:26:0;;31547:17;;:47;;31485:109;31481:407;;;31630:26;;31615:42;;:14;:42::i;:::-;31481:407;;;31684:13;;;;;;;31683:14;:66;;;;;31725:24;;31701:20;:48;;31683:66;:124;;;;-1:-1:-1;31781:26:0;;31753:24;;:54;;31683:124;31679:209;;;31845:26;;31828:44;;:16;:44::i;:::-;31396:503;31273:626;-1:-1:-1;;;;;32092:24:0;;31972:12;32092:24;;;:18;:24;;;;;;31987:4;;32092:24;;;:50;;-1:-1:-1;;;;;;32120:22:0;;;;;;:18;:22;;;;;;;;32092:50;32088:98;;;-1:-1:-1;32169:5:0;32088:98;32269:41;32284:4;32290:2;32294:6;32302:7;32269:14;:41::i;25325:889::-;16771:16;:23;;-1:-1:-1;;16771:23:0;16790:4;16771:23;;;25427:21:::1;16771:16:::0;25482::::1;25497:1;25482:12:::0;:16:::1;:::i;:::-;25459:39:::0;-1:-1:-1;25509:23:0::1;25535:27;25459:39:::0;25535:12;:27:::1;:::i;:::-;25509:53:::0;-1:-1:-1;25579:16:0;;25575:79:::1;;25612:30;25629:12;25612:16;:30::i;:::-;25687:21;25666:18;25754:27;25767:14:::0;25687:21;25754:27:::1;:::i;:::-;25719:63;;25817:1;25799:15;:19;:43;;;;;25841:1;25822:16;:20;25799:43;25795:192;;;25859:47;25872:15;25889:16;25859:12;:47::i;:::-;25926:49;::::0;;15105:25:1;;;15161:2;15146:18;;15139:34;;;25926:49:0::1;::::0;15078:18:1;25926:49:0::1;;;;;;;25795:192;26020:12;25999:17;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;26069:26:0;;26049:17:::1;::::0;:46:::1;:108:::0;::::1;;;;26156:1;26135:17;;26116:16;;26100:13;;:32;;;;:::i;:::-;:52;;;;:::i;:::-;26099:58;26049:108;26045:162;;;26174:13;:21:::0;;-1:-1:-1;;26174:21:0::1;::::0;;26045:162:::1;-1:-1:-1::0;;16817:16:0;:24;;-1:-1:-1;;16817:24:0;;;-1:-1:-1;;;;25325:889:0:o;26222:614::-;16771:16;:23;;-1:-1:-1;;16771:23:0;16790:4;16771:23;;;26305:16;;26301:79:::1;;26338:30;26355:12;26338:16;:30::i;:::-;26419:21;26455:20:::0;;26451:145:::1;;26492:16;::::0;:43:::1;::::0;-1:-1:-1;;;;;26492:16:0;;::::1;::::0;:43;::::1;;;::::0;26518:16;;26492::::1;:43:::0;:16;:43;26518:16;26492;:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;26555:29:0::1;::::0;3428:25:1;;;26555:29:0::1;::::0;3416:2:1;3401:18;26555:29:0::1;;;;;;;26451:145;26636:12;26608:24;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;26692:26:0;;26665:24:::1;::::0;:53:::1;:115:::0;::::1;;;;26778:1;26758:17;;26739:16;;26723:13;;:32;;;;:::i;:::-;:52;;;;:::i;:::-;:56;26665:115;26661:168;;;26797:13;:20:::0;;-1:-1:-1;;26797:20:0::1;::::0;::::1;::::0;;26661:168:::1;-1:-1:-1::0;;16817:16:0;:24;;-1:-1:-1;;16817:24:0;;;26222:614::o;32574:2171::-;32820:26;;32679:17;;;;;;;;32820:26;;;;;32816:573;;;32867:18;;;;:46;;;;-1:-1:-1;32889:9:0;:20;:24;;32867:46;:101;;;;-1:-1:-1;32956:11:0;;32933:9;:20;:34;;32956:11;32933:34;:::i;:::-;32917:12;:51;32867:101;32863:515;;;32989:26;:34;;-1:-1:-1;;32989:34:0;;;32863:515;;;33100:13;-1:-1:-1;;;;;33090:23:0;:6;-1:-1:-1;;;;;33090:23:0;;:85;;;;;33159:15;-1:-1:-1;;;;;33138:37:0;:9;-1:-1:-1;;;;;33138:37:0;;;33090:85;:140;;;;-1:-1:-1;;;;;;33201:29:0;;;;;;:18;:29;;;;;;;;33200:30;33090:140;33064:299;;;33273:32;33289:9;33300:4;33273:15;:32::i;:::-;-1:-1:-1;33339:4:0;33064:299;33405:7;33401:1048;;;33443:13;-1:-1:-1;;;;;33433:23:0;:6;-1:-1:-1;;;;;33433:23:0;;33429:447;;33497:16;;33477:36;;33552:16;;33532:36;;33429:447;;;33607:13;-1:-1:-1;;;;;33594:26:0;:9;-1:-1:-1;;;;;33594:26:0;;33590:286;;33661:17;;33641:37;;33717:17;;33697:37;;33590:286;;;33795:13;;33775:33;;33847:13;;33827:33;;33590:286;33896:7;33892:116;;;33944:3;33924:23;;33986:3;33966:23;;33892:116;34090:4;34047:37;34067:17;34047;:37;:::i;:::-;34037:48;;:6;:48;:::i;:::-;34036:59;;;;:::i;:::-;34024:71;-1:-1:-1;34158:1:0;34117:37;34137:17;34117;:37;:::i;:::-;34116:43;34112:326;;;34180:27;34244:37;34264:17;34244;:37;:::i;:::-;34211:29;34223:17;34211:9;:29;:::i;:::-;:71;;;;:::i;:::-;34180:103;;34323:19;34302:17;;:40;;;;;;;:::i;:::-;;;;-1:-1:-1;34390:31:0;;-1:-1:-1;34402:19:0;34390:9;:31;:::i;:::-;34361:24;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;;34112:326:0;34469:15;34487:18;34496:9;34487:6;:18;:::i;:::-;-1:-1:-1;;;;;34516:15:0;;;;;;:7;:15;;;;;:25;;34469:36;;-1:-1:-1;34535:6:0;;34516:15;;;:25;;34535:6;;34516:25;:::i;:::-;;;;-1:-1:-1;;34568:4:0;34552:22;;;;:7;:22;;;;;:35;;34578:9;;34552:22;:35;;34578:9;;34552:35;:::i;:::-;;;;-1:-1:-1;;34603:42:0;;3428:25:1;;;34628:4:0;;-1:-1:-1;;;;;34603:42:0;;;;;3416:2:1;3401:18;34603:42:0;;;;;;;-1:-1:-1;;;;;34656:18:0;;;;;;:7;:18;;;;;:29;;34678:7;;34656:18;:29;;34678:7;;34656:29;:::i;:::-;;;;;;;;34718:9;-1:-1:-1;;;;;34701:36:0;34710:6;-1:-1:-1;;;;;34701:36:0;;34729:7;34701:36;;;;3428:25:1;;3416:2;3401:18;;3282:177;34701:36:0;;;;;;;;32668:2077;;;;;32574:2171;;;;:::o;27606:692::-;27756:16;;;27770:1;27756:16;;;;;;;;27732:21;;27756:16;;;;;;;;;;-1:-1:-1;27756:16:0;27732:40;;27801:4;27783;27788:1;27783:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;27783:23:0;;;-1:-1:-1;;;;;27783:23:0;;;;;27827:15;-1:-1:-1;;;;;27827:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27817:4;27822:1;27817:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27817:32:0;;;:7;;;;;;;;;;:32;;;;27885:4;27865:26;;;;:11;:26;;;;;;27900:15;27865:52;;;;;;;;;;;:66;-1:-1:-1;27862:166:0;;;27948:68;27965:4;27980:15;-1:-1:-1;;27948:8:0;:68::i;:::-;28066:224;;-1:-1:-1;;;28066:224:0;;-1:-1:-1;;;;;28066:15:0;:66;;;;:224;;28147:11;;28173:1;;28217:4;;28244;;28264:15;;28066:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27661:637;27606:692;:::o;28306:560::-;28412:4;28392:26;;;;:11;:26;;;;;;;;28427:15;-1:-1:-1;;;;;28392:52:0;;;;;;;;;:66;-1:-1:-1;28389:166:0;;;28475:68;28492:4;28507:15;-1:-1:-1;;28475:8:0;:68::i;:::-;28801:16;;28597:261;;-1:-1:-1;;;28597:261:0;;28669:4;28597:261;;;16898:34:1;16948:18;;;16941:34;;;28715:1:0;16991:18:1;;;16984:34;;;17034:18;;;17027:34;-1:-1:-1;;;;;28801:16:0;;;17077:19:1;;;17070:44;28832:15:0;17130:19:1;;;17123:35;28597:15:0;:31;;;;;;28636:9;;16832:19:1;;28597:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28306:560;;:::o;24017:349::-;24109:13;-1:-1:-1;;;;;24098:24:0;:7;-1:-1:-1;;;;;24098:24:0;;:52;;;-1:-1:-1;;;;;;24126:24:0;;24145:4;24126:24;24098:52;:91;;;;24173:15;-1:-1:-1;;;;;24154:35:0;:7;-1:-1:-1;;;;;24154:35:0;;24098:91;24095:107;;;24192:8;;;24095:107;24226:19;;;24241:4;24226:19;24222:136;;-1:-1:-1;;;;;24262:23:0;;;;;;:14;:23;;;;;;;;;:30;;-1:-1:-1;;24262:30:0;24288:4;24262:30;;;24312:34;;17648:51:1;;;17742:14;;17735:22;17715:18;;;17708:50;24312:34:0;;17621:18:1;24312:34:0;;;;;;;24017:349;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;150:118;236:5;229:13;222:21;215:5;212:32;202:60;;258:1;255;248:12;273:382;338:6;346;399:2;387:9;378:7;374:23;370:32;367:52;;;415:1;412;405:12;367:52;454:9;441:23;473:31;498:5;473:31;:::i;:::-;523:5;-1:-1:-1;580:2:1;565:18;;552:32;593:30;552:32;593:30;:::i;:::-;642:7;632:17;;;273:382;;;;;:::o;660:548::-;772:4;801:2;830;819:9;812:21;862:6;856:13;905:6;900:2;889:9;885:18;878:34;930:1;940:140;954:6;951:1;948:13;940:140;;;1049:14;;;1045:23;;1039:30;1015:17;;;1034:2;1011:26;1004:66;969:10;;940:140;;;944:3;1129:1;1124:2;1115:6;1104:9;1100:22;1096:31;1089:42;1199:2;1192;1188:7;1183:2;1175:6;1171:15;1167:29;1156:9;1152:45;1148:54;1140:62;;;;660:548;;;;:::o;1213:315::-;1281:6;1289;1342:2;1330:9;1321:7;1317:23;1313:32;1310:52;;;1358:1;1355;1348:12;1310:52;1397:9;1384:23;1416:31;1441:5;1416:31;:::i;:::-;1466:5;1518:2;1503:18;;;;1490:32;;-1:-1:-1;;;1213:315:1:o;1725:316::-;1802:6;1810;1818;1871:2;1859:9;1850:7;1846:23;1842:32;1839:52;;;1887:1;1884;1877:12;1839:52;-1:-1:-1;;1910:23:1;;;1980:2;1965:18;;1952:32;;-1:-1:-1;2031:2:1;2016:18;;;2003:32;;1725:316;-1:-1:-1;1725:316:1:o;2046:241::-;2102:6;2155:2;2143:9;2134:7;2130:23;2126:32;2123:52;;;2171:1;2168;2161:12;2123:52;2210:9;2197:23;2229:28;2251:5;2229:28;:::i;:::-;2276:5;2046:241;-1:-1:-1;;;2046:241:1:o;2527:750::-;2619:6;2627;2635;2688:2;2676:9;2667:7;2663:23;2659:32;2656:52;;;2704:1;2701;2694:12;2656:52;2744:9;2731:23;2773:18;2814:2;2806:6;2803:14;2800:34;;;2830:1;2827;2820:12;2800:34;2868:6;2857:9;2853:22;2843:32;;2913:7;2906:4;2902:2;2898:13;2894:27;2884:55;;2935:1;2932;2925:12;2884:55;2975:2;2962:16;3001:2;2993:6;2990:14;2987:34;;;3017:1;3014;3007:12;2987:34;3072:7;3065:4;3055:6;3052:1;3048:14;3044:2;3040:23;3036:34;3033:47;3030:67;;;3093:1;3090;3083:12;3030:67;3124:4;3116:13;;;;-1:-1:-1;3148:6:1;-1:-1:-1;;3189:20:1;;3176:34;3219:28;3176:34;3219:28;:::i;:::-;3266:5;3256:15;;;2527:750;;;;;:::o;3464:247::-;3523:6;3576:2;3564:9;3555:7;3551:23;3547:32;3544:52;;;3592:1;3589;3582:12;3544:52;3631:9;3618:23;3650:31;3675:5;3650:31;:::i;3716:180::-;3775:6;3828:2;3816:9;3807:7;3803:23;3799:32;3796:52;;;3844:1;3841;3834:12;3796:52;-1:-1:-1;3867:23:1;;3716:180;-1:-1:-1;3716:180:1:o;3901:456::-;3978:6;3986;3994;4047:2;4035:9;4026:7;4022:23;4018:32;4015:52;;;4063:1;4060;4053:12;4015:52;4102:9;4089:23;4121:31;4146:5;4121:31;:::i;:::-;4171:5;-1:-1:-1;4228:2:1;4213:18;;4200:32;4241:33;4200:32;4241:33;:::i;:::-;3901:456;;4293:7;;-1:-1:-1;;;4347:2:1;4332:18;;;;4319:32;;3901:456::o;5363:248::-;5431:6;5439;5492:2;5480:9;5471:7;5467:23;5463:32;5460:52;;;5508:1;5505;5498:12;5460:52;-1:-1:-1;;5531:23:1;;;5601:2;5586:18;;;5573:32;;-1:-1:-1;5363:248:1:o;6256:653::-;6366:6;6374;6382;6390;6398;6406;6414;6467:3;6455:9;6446:7;6442:23;6438:33;6435:53;;;6484:1;6481;6474:12;6435:53;6520:9;6507:23;6497:33;;6577:2;6566:9;6562:18;6549:32;6539:42;;6628:2;6617:9;6613:18;6600:32;6590:42;;6679:2;6668:9;6664:18;6651:32;6641:42;;6730:3;6719:9;6715:19;6702:33;6692:43;;6782:3;6771:9;6767:19;6754:33;6744:43;;6837:3;6826:9;6822:19;6809:33;6851:28;6873:5;6851:28;:::i;:::-;6898:5;6888:15;;;6256:653;;;;;;;;;;:::o;6914:388::-;6982:6;6990;7043:2;7031:9;7022:7;7018:23;7014:32;7011:52;;;7059:1;7056;7049:12;7011:52;7098:9;7085:23;7117:31;7142:5;7117:31;:::i;:::-;7167:5;-1:-1:-1;7224:2:1;7209:18;;7196:32;7237:33;7196:32;7237:33;:::i;7713:376::-;7775:6;7783;7836:2;7824:9;7815:7;7811:23;7807:32;7804:52;;;7852:1;7849;7842:12;7804:52;7891:9;7878:23;7910:28;7932:5;7910:28;:::i;8094:356::-;8296:2;8278:21;;;8315:18;;;8308:30;8374:34;8369:2;8354:18;;8347:62;8441:2;8426:18;;8094:356::o;8455:380::-;8534:1;8530:12;;;;8577;;;8598:61;;8652:4;8644:6;8640:17;8630:27;;8598:61;8705:2;8697:6;8694:14;8674:18;8671:38;8668:161;;8751:10;8746:3;8742:20;8739:1;8732:31;8786:4;8783:1;8776:15;8814:4;8811:1;8804:15;8668:161;;8455:380;;;:::o;8840:127::-;8901:10;8896:3;8892:20;8889:1;8882:31;8932:4;8929:1;8922:15;8956:4;8953:1;8946:15;8972:127;9033:10;9028:3;9024:20;9021:1;9014:31;9064:4;9061:1;9054:15;9088:4;9085:1;9078:15;9104:135;9143:3;9164:17;;;9161:43;;9184:18;;:::i;:::-;-1:-1:-1;9231:1:1;9220:13;;9104:135::o;9244:168::-;9317:9;;;9348;;9365:15;;;9359:22;;9345:37;9335:71;;9386:18;;:::i;9417:217::-;9457:1;9483;9473:132;;9527:10;9522:3;9518:20;9515:1;9508:31;9562:4;9559:1;9552:15;9590:4;9587:1;9580:15;9473:132;-1:-1:-1;9619:9:1;;9417:217::o;9639:128::-;9706:9;;;9727:11;;;9724:37;;;9741:18;;:::i;9772:125::-;9837:9;;;9858:10;;;9855:36;;;9871:18;;:::i;10737:184::-;10807:6;10860:2;10848:9;10839:7;10835:23;10831:32;10828:52;;;10876:1;10873;10866:12;10828:52;-1:-1:-1;10899:16:1;;10737:184;-1:-1:-1;10737:184:1:o;11205:245::-;11272:6;11325:2;11313:9;11304:7;11300:23;11296:32;11293:52;;;11341:1;11338;11331:12;11293:52;11373:9;11367:16;11392:28;11414:5;11392:28;:::i;15316:251::-;15386:6;15439:2;15427:9;15418:7;15414:23;15410:32;15407:52;;;15455:1;15452;15445:12;15407:52;15487:9;15481:16;15506:31;15531:5;15506:31;:::i;15572:980::-;15834:4;15882:3;15871:9;15867:19;15913:6;15902:9;15895:25;15939:2;15977:6;15972:2;15961:9;15957:18;15950:34;16020:3;16015:2;16004:9;16000:18;15993:31;16044:6;16079;16073:13;16110:6;16102;16095:22;16148:3;16137:9;16133:19;16126:26;;16187:2;16179:6;16175:15;16161:29;;16208:1;16218:195;16232:6;16229:1;16226:13;16218:195;;;16297:13;;-1:-1:-1;;;;;16293:39:1;16281:52;;16388:15;;;;16353:12;;;;16329:1;16247:9;16218:195;;;-1:-1:-1;;;;;;;16469:32:1;;;;16464:2;16449:18;;16442:60;-1:-1:-1;;;16533:3:1;16518:19;16511:35;16430:3;15572:980;-1:-1:-1;;;15572:980:1:o;17169:306::-;17257:6;17265;17273;17326:2;17314:9;17305:7;17301:23;17297:32;17294:52;;;17342:1;17339;17332:12;17294:52;17371:9;17365:16;17355:26;;17421:2;17410:9;17406:18;17400:25;17390:35;;17465:2;17454:9;17450:18;17444:25;17434:35;;17169:306;;;;;:::o

Swarm Source

ipfs://07dce1fe16073616a2ad05da724cb39c126d5b6332bc9d35d0aead6296cba5c0
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.