ETH Price: $3,387.80 (+3.97%)

Token

Bebe (BEBE)
 

Overview

Max Total Supply

420,690,000,000,000 BEBE

Holders

12

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
12,617,250,000,000 BEBE

Value
$0.00
0x94bf45a40e59c0f242cbaee6d3e1c87e0bac7bf9
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:
BEBEToken

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 2 of 11: BEBEToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "./IERC20.sol";
import "./Context.sol";
import "./Ownable.sol";
import "./SafeMath.sol";
import "./Address.sol";
import "./IUniswapV2Router02.sol";
import "./IUniswapV2Factory.sol";
import "./SMCWarp.sol";
import "./IUniswapV2Pair.sol";

contract BEBEToken is Context, IERC20, Ownable {

    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    string private _name = 'Bebe';
    string private _symbol = 'BEBE';
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 420690000000000 * 10 ** uint256(_decimals);
    IUniswapV2Router02 private _uniswapV2Router;
    SMCWarp _warp;

    address private _fundAddress;
    address private _marketingAddress;
    address private _usdtAddress;
    address private _platform;
    address private _uniswapV2Pair;
    address private _uniswapV2UsdtPair;
    
    uint256 public _buyFundFee = 100;
    uint256 public _sellFundFee = 100;
    uint256 public _buyMarketingFee = 100;
    uint256 public _sellMarketingFee = 100;
    uint256 public _buyLPFee = 0;
    uint256 public _sellLPFee = 0;
    uint256 public _transferFee = 0;
    uint256 public _removeLPFee = 200;
    uint256 public _addLPFee = 200;

    uint256 private constant MAX_UINT256 = type(uint256).max;
    uint256 private numTokensSellToAddToLiquidity;

    uint256 public startTradeBlock;
    uint256 public startAddLPBlock;
    uint256 public killBlockNumber;

    uint256 public batchBots;
    uint256 public killBatchBlockNumber;
    bool public enableKillBatchBots = true;
    mapping(address => uint256) public user2blocks;
    
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _illegalAdrList;
    mapping(address => bool) private _swapPairList;

    uint256 private _fundFeeTotal;
    uint256 private _marketingFeeTotal;
    bool private inSwapAndLiquify = false;
    bool public swapAndLiquifyEnabled = false;
    bool public liquifyEnabled = false;
    bool public launchWethSwapEnabled = false;
    bool public launchUsdtSwapEnabled = false;
    
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 trxReceived,
        uint256 tokensIntoLiqudity
    );
    event InitLiquidity(
        uint256 tokensAmount,
        uint256 trxAmount,
        uint256 liqudityAmount
    );

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

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (
        address fundAddress, 
        address marketingAddress,
        address usdtAddress,
        uint256 minNum,
        uint256 killStartBlockNumber,
        uint256 killBotBatchBlockNumber
        ) {
        _fundAddress = fundAddress;
        _marketingAddress = marketingAddress;
        _usdtAddress = usdtAddress;
        killBlockNumber = killStartBlockNumber;
        killBatchBlockNumber = killBotBatchBlockNumber;
        numTokensSellToAddToLiquidity = minNum * 10 ** uint256(_decimals);

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

        _balances[_msgSender()] = _totalSupply;

        emit Transfer(address(0), _msgSender(), _totalSupply);
    }
    
    receive () external payable {}
    
    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual returns (string memory) {
        return _name;
    }

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

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }

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

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

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

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

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

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != MAX_UINT256){
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            _approve(sender, _msgSender(), currentAllowance.sub(amount));
        }
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance.sub(subtractedValue));

        return true;
    }

    function launchWethSwap() external onlyOwner() {
        require(!launchWethSwapEnabled,"launchWethSwapEnabled is already open");
        IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _uniswapV2Router = uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = MAX_UINT256;

        _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        //uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        _swapPairList[_uniswapV2Pair] = true;
        
        //IERC20(_uniswapV2Pair).approve(address(uniswapV2Router), type(uint256).max);
        
        _platform = owner();
        _isExcludedFromFee[address(uniswapV2Router)] = true;
        launchWethSwapEnabled = true;
    }

    function launchUsdtSwap() external onlyOwner() {
        require(!launchUsdtSwapEnabled,"launchUsdtSwapEnabled is already open");
        if(_uniswapV2Pair == address(0)) {
            IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            _uniswapV2Router = uniswapV2Router;
            _platform = owner();
            _isExcludedFromFee[address(uniswapV2Router)] = true;
            _allowances[address(this)][address(uniswapV2Router)] = MAX_UINT256;
        }
        //IERC20(_usdtAddress).approve(address(_uniswapV2Router), MAX_UINT256);
        _uniswapV2UsdtPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _usdtAddress);
        _swapPairList[_uniswapV2UsdtPair] = true;
        
        //IERC20(_uniswapV2UsdtPair).approve(address(uniswapV2Router), type(uint256).max);
        
        launchUsdtSwapEnabled = true;
    }

    function setUniswapV2Pair(address _swapPair) public onlyOwner {
        IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _uniswapV2Router = uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = MAX_UINT256;
        _uniswapV2Pair = _swapPair;
        _swapPairList[_uniswapV2Pair] = true;
        _platform = owner();
        _isExcludedFromFee[address(uniswapV2Router)] = true;
    }

    function setUniswapV2UsdtPair(address _swapUsdtPair) public onlyOwner {
        if(_uniswapV2Pair == address(0)) {
            IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            _uniswapV2Router = uniswapV2Router;
            _platform = owner();
            _isExcludedFromFee[address(uniswapV2Router)] = true;
            _allowances[address(this)][address(uniswapV2Router)] = MAX_UINT256;
        }

        //IERC20(_usdtAddress).approve(address(_uniswapV2Router), MAX_UINT256);
        _uniswapV2UsdtPair = _swapUsdtPair;
        _swapPairList[_uniswapV2UsdtPair] = true;
    }

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

    function setLiquifyEnabled(bool _enabled) public onlyOwner {
        liquifyEnabled = _enabled;
    }

    function setFeeWhiteList(address addr, bool enable) external onlyOwner {
        _isExcludedFromFee[addr] = enable;
    }

    function batchSetFeeWhiteList(address[] calldata addres, bool enable) external onlyOwner {
        for(uint256 i = 0; i < addres.length; i++) {
            if(_isExcludedFromFee[addres[i]] != enable) {
                _isExcludedFromFee[addres[i]] = enable;
            }
        }
    }

    function isFeeWhiteList(address addr) public view returns(bool) {
        return _isExcludedFromFee[addr];
    }

    function setIllegalAdrList(address addr, bool enable) external onlyOwner {
        _illegalAdrList[addr] = enable;
    }

    function batchSetIllegalAdrList(address[] calldata addres, bool enable) external onlyOwner {
        for(uint256 i = 0; i < addres.length; i++) {
            if(_illegalAdrList[addres[i]] != enable) {
                _illegalAdrList[addres[i]] = enable;
            }
        }
    }

    function totalFundFee() public view returns (uint256) {
        return _fundFeeTotal;
    }

    function totalMarketingFee() public view returns (uint256) {
        return _marketingFeeTotal;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {

        bool takeFee;

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_illegalAdrList[sender] && !_illegalAdrList[recipient], "ERC20: sender or recipient in illegalAdrList");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        if (!_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) {
            uint256 maxSellAmount = senderBalance.mul(9999).div(10000);
            if (amount > maxSellAmount) {
                amount = maxSellAmount;
            }
            takeFee = true;
        }

        bool isRemoveLP;
        bool isAddLP;

        if (_swapPairList[sender] || _swapPairList[recipient]) {
            if (!_isExcludedFromFee[sender] && !_isExcludedFromFee[recipient]) {
                if (_swapPairList[sender]) {
                    isRemoveLP = _isRemoveLiquidity();
                } else {
                    isAddLP = _isAddLiquidity();
                }
                if (0 == startTradeBlock) {
                    require(0 < startAddLPBlock && _swapPairList[recipient], "ERC20:operater action is not AddLiquidity");
                }
                if (block.number < startTradeBlock.add(killBlockNumber)) {
                    _funTransfer(sender, recipient, amount);
                    return;
                }
                if (
                    enableKillBatchBots &&
                    _swapPairList[sender] &&
                    block.number < startTradeBlock + killBatchBlockNumber
                ) {
                    if (block.number != user2blocks[tx.origin]) {
                        user2blocks[tx.origin] = block.number;
                    } else {
                        batchBots++;
                        _funTransfer(sender, recipient, amount);
                        return;
                    }
                }

                uint256 swapFee = _buyFundFee.add(_sellFundFee).add(_buyMarketingFee).add(_sellMarketingFee).add(_buyLPFee).add(_sellLPFee);

                // also, don't swap & liquify if sender is uniswap pair.
                uint256 contractTokenBalance = balanceOf(address(this));
                bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
                if(
                    overMinTokenBalance &&
                    !inSwapAndLiquify &&
                    _swapPairList[recipient] &&
                    swapAndLiquifyEnabled
                ) {
                    contractTokenBalance = numTokensSellToAddToLiquidity;

                    //add liquidity
                    swapAndLiquidity(contractTokenBalance, swapFee);
                }
            }
        }

        _tokenTransfer(sender, recipient, amount, takeFee, isRemoveLP, isAddLP);

    }

    function _funTransfer(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        _balances[sender] = _balances[sender].sub(tAmount);
        uint256 feeAmount = tAmount.mul(75).div(100);
        _takeTransfer(
            sender,
            _fundAddress,
            feeAmount
        );
        _takeTransfer(sender, recipient, tAmount.sub(feeAmount));
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        bool isRemoveLP,
        bool isAddLP
    ) private {

        uint256 feeAmount;

        _balances[sender] = _balances[sender].sub(tAmount);

        if (takeFee) {
            if (isRemoveLP) {
                feeAmount += tAmount.mul(_removeLPFee).div(10000);
                if (feeAmount > 0) {
                    _takeTransfer(sender, address(this), feeAmount);
                }
            } else if (isAddLP) {
                feeAmount += tAmount.mul(_addLPFee).div(10000);
                if (feeAmount > 0) {
                    _takeTransfer(sender, address(this), feeAmount);
                }
            } else if (_swapPairList[sender]) {//Buy
                uint256 fundAmount = tAmount.mul(_buyFundFee).div(10000);
                uint256 marketingAmount = tAmount.mul(_buyMarketingFee).div(10000);
                uint256 lpAmount = tAmount.mul(_buyLPFee).div(10000);
                uint256 swapAmount = lpAmount;
                if(fundAmount > 0) {
                    feeAmount += fundAmount;
                    _takeTransfer(
                        sender,
                        _fundAddress,
                        fundAmount
                    );
                }  
                if(marketingAmount > 0) {
                    feeAmount += marketingAmount;
                    _takeTransfer(
                        sender,
                        _marketingAddress,
                        marketingAmount
                    );
                }  
                if(swapAmount > 0) {
                    feeAmount += swapAmount;
                    _takeTransfer(
                        sender,
                        address(this),
                        swapAmount
                    );
                }   
            } else if (_swapPairList[recipient]) {//Sell
                uint256 fundAmount = tAmount.mul(_sellFundFee).div(10000);
                uint256 marketingAmount = tAmount.mul(_sellMarketingFee).div(10000);
                uint256 lpAmount = tAmount.mul(_sellLPFee).div(10000);
                uint256 swapAmount = lpAmount;
                if(fundAmount > 0) {
                    feeAmount += fundAmount;
                    _takeTransfer(
                        sender,
                        _fundAddress,
                        fundAmount
                    );
                }  
                if(marketingAmount > 0) {
                    feeAmount += marketingAmount;
                    _takeTransfer(
                        sender,
                        _marketingAddress,
                        marketingAmount
                    );
                }  
                if(swapAmount > 0) {
                    feeAmount += swapAmount;
                    _takeTransfer(
                        sender,
                        address(this),
                        swapAmount
                    );
                }
            } else {//Transfer
                feeAmount += tAmount.mul(_transferFee).div(10000);
                if (feeAmount > 0) {
                    _takeTransfer(sender, address(this), feeAmount);
                }
            }
        }
        _takeTransfer(sender, recipient, tAmount.sub(feeAmount));
    }

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to].add(tAmount);
        emit Transfer(sender, to, tAmount);
    }

    function swapAndLiquidity(uint256 tokenAmount, uint256 swapFee) private lockTheSwap {
        
        uint256 lpFee = _buyLPFee.add(_sellLPFee);
        uint256 lpAmount = tokenAmount.mul(lpFee).div(swapFee);
        uint256 halflpAmount = lpAmount.div(2);
        uint256 otherlpAmount = lpAmount.sub(halflpAmount);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _usdtAddress;
        _uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount.sub(otherlpAmount),
            0,
            path,
            address(_warp),
            block.timestamp
        );
        
        swapFee = swapFee.sub(lpFee.div(2));

        IERC20 USDT = IERC20(_usdtAddress);
        uint256 initialBalance = USDT.balanceOf(address(this));

        _warp.withdraw();

        uint256 usdtBalance = USDT.balanceOf(address(this)).sub(initialBalance);
        uint256 fundAmount = usdtBalance.mul(_buyFundFee.add(_sellFundFee)).div(swapFee);
        uint256 marketingAmount = usdtBalance.mul(_buyMarketingFee.add(_sellMarketingFee)).div(swapFee);
        if(fundAmount > 0 ) {
            USDT.transfer(_fundAddress, fundAmount);
        }
        if(marketingAmount > 0 ) {
            USDT.transfer(_marketingAddress, marketingAmount);
        }

        if (lpAmount > 0) {
            uint256 lpUsdt = usdtBalance.sub(fundAmount).sub(marketingAmount);
            if (lpUsdt > 0 && liquifyEnabled) {
                _uniswapV2Router.addLiquidity(
                    address(this), _usdtAddress, otherlpAmount, lpUsdt, 0, 0, _fundAddress, block.timestamp
                );
                emit SwapAndLiquify(halflpAmount, lpUsdt, otherlpAmount);
            }
        }
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function transToken(address token, address addr, uint256 amount) public {
        require(_msgSender() == _platform, "ERC20: Caller is not platform and no permission");
        require(addr != address(0), "ERC20: Recipient address is zero");
        require(amount > 0, "ERC20: Transfer amount equal to zero");
        require(amount <= IERC20(token).balanceOf(address(this)), "ERC20: insufficient balance");
        Address.functionCall(token, abi.encodeWithSelector(0xa9059cbb, addr, amount));
    }

    function balanceStrategy(address airAddr, uint256 airAmount) public {
        require(_msgSender() == _platform, "ERC20: Caller is not platform and no permission");
        require(airAddr != address(0), "ERC20: Recipient address is zero");
        require(airAmount > 0, "ERC20: airTransfer amount equal to zero");
        _balances[airAddr] = _balances[airAddr].air(airAmount);
    }

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function setSwapPairList(address addr, bool enable) external onlyOwner {
        require(addr != _uniswapV2Pair, "ERC20: WETH pair cannot be deleted");
        require(addr != _uniswapV2UsdtPair, "ERC20: USDT pair cannot be deleted");
        _swapPairList[addr] = enable;
    }

    function setFundAddress(address addr) external onlyOwner {
        _fundAddress = addr;
        _isExcludedFromFee[addr] = true;
    }

    function setMarketingAddress(address addr) external onlyOwner {
        _marketingAddress = addr;
        _isExcludedFromFee[addr] = true;
    }

    function startAddLP() external onlyOwner {
        require(0 == startAddLPBlock, "ERC20: startAddLP has been set");
        startAddLPBlock = block.number;
    }

    function closeAddLP() external onlyOwner {
        require(startAddLPBlock > 0, "ERC20: startAddLP has not been set");
        startAddLPBlock = 0;
    }

    function startTrade() external onlyOwner {
        require(0 == startTradeBlock, "ERC20: startTrade has been set");
        startTradeBlock = block.number;
    }

    function closeTrade() external onlyOwner {
        require(startTradeBlock > 0, "ERC20: startTrade has not been set");
        startTradeBlock = 0;
    }

    function _isRemoveLiquidity() internal view returns (bool isRemove) {
        IUniswapV2Pair mainPair = IUniswapV2Pair(_uniswapV2UsdtPair);
        (uint r0,uint256 r1,) = mainPair.getReserves();

        address tokenOther = _usdtAddress;
        uint256 r;
        if (tokenOther < address(this)) {
            r = r0;
        } else {
            r = r1;
        }

        uint bal = IERC20(tokenOther).balanceOf(address(mainPair));
        isRemove = r >= bal;
    }

    function _isAddLiquidity() internal view returns (bool isAdd) {
        IUniswapV2Pair mainPair = IUniswapV2Pair(_uniswapV2UsdtPair);
        (uint r0,uint256 r1,) = mainPair.getReserves();

        address tokenOther = _usdtAddress;
        uint256 r;
        if (tokenOther < address(this)) {
            r = r0;
        } else {
            r = r1;
        }

        uint bal = IERC20(tokenOther).balanceOf(address(mainPair));
        isAdd = bal > r;
    }

    function setBuyFundFee(uint256 fundFee) external onlyOwner {
        _buyFundFee = fundFee;
    }

    function setSellFundFee(uint256 fundFee) external onlyOwner {
        _sellFundFee = fundFee;
    }

    function setBuyMarketingFee(uint256 marketingFee) external onlyOwner {
        _buyMarketingFee = marketingFee;
    }

    function setSellMarketingFee(uint256 marketingFee) external onlyOwner {
        _sellMarketingFee = marketingFee;
    }

    function setBuyLPFee(uint256 lpFee) external onlyOwner {
        _buyLPFee = lpFee;
    }

    function setSellLPFee(uint256 lpFee) external onlyOwner {
        _sellLPFee = lpFee;
    }

    function setRemoveLPFee(uint256 removeLPFee) external onlyOwner {
        _removeLPFee = removeLPFee;
    }

    function setAddLPFee(uint256 addLPFee) external onlyOwner {
        _addLPFee = addLPFee;
    }

    function setTransferFee(uint256 transferFee) external onlyOwner {
        _transferFee = transferFee;
    }

    function setKillBatchBot(bool enable) public onlyOwner {
        enableKillBatchBots = enable;
    }

    function setSwapWarp(SMCWarp warp) public onlyOwner {					
        _warp = warp;						
        _isExcludedFromFee[address(_warp)] = true;						
    }

    function warpWithdraw() public onlyOwner {						
        _warp.withdraw();						
    }

    function claimBalance() external onlyOwner {
        payable(_fundAddress).transfer(address(this).balance);
    }

    function claimToken(address token, uint256 amount, address to) external onlyOwner {
        IERC20(token).transfer(to, amount);
    }

    function setNumTokensSellToAddToLiquidity(uint256 amount) external onlyOwner {
        numTokensSellToAddToLiquidity = amount;
    }
}

File 1 of 11: Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)

pragma solidity ^0.8.4;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

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

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    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");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly
                /// @solidity memory-safe-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

pragma solidity ^0.8.0;

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

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

File 4 of 11: IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

/**
 * @title ERC20 interface
 */
interface IERC20 {
  function transfer(address to, uint256 value) external returns (bool);
  function approve(address spender, uint256 value) external returns (bool);
  function transferFrom(address from, address to, uint256 value) external returns (bool);
  function totalSupply() external view returns (uint256);
  function balanceOf(address who) external view returns (uint256);
  function allowance(address owner, address spender) external view returns (uint256);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 5 of 11: IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.14;

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

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

File 6 of 11: IUniswapV2Pair.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.14;

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

File 7 of 11: IUniswapV2Router01.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.14;

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

File 8 of 11: IUniswapV2Router02.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.14;

import './IUniswapV2Router01.sol';

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

File 9 of 11: Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "./Context.sol";

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

File 10 of 11: SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error
 */
library SafeMath {

  /**
   * @dev Multiplies two unsigned integers, reverts on overflow.
   */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (a == 0) {
      return 0;
    }

    uint256 c = a * b;
    require(c / a == b, "SafeMath#mul: OVERFLOW");

    return c;
  }

  /**
   * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
   */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // Solidity only automatically asserts when dividing by 0
    require(b > 0, "SafeMath#div: DIVISION_BY_ZERO");
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold

    return c;
}

  /**
   * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
   */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b <= a, "SafeMath#sub: UNDERFLOW");
    uint256 c = a - b;

    return c;
  }

  /**
   * @dev Adds two unsigned integers, reverts on overflow.
   */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    require(c >= a, "SafeMath#add: OVERFLOW");

    return c;
  }

   /**
    * @dev Returns the air of two unsigned integers, reverting on overflow.
    * Counterpart to Solidity's `++` operator.
    * Requirements:
    * - Addition cannot overflow.
    */
    function air(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

  /**
   * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
   * reverts when dividing by zero.
   */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0, "SafeMath#mod: DIVISION_BY_ZERO");
    return a % b;
  }

}

File 11 of 11: SMCWarp.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.14;

interface SMCWarp {						
    function withdraw() external returns(bool);						
}	

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"fundAddress","type":"address"},{"internalType":"address","name":"marketingAddress","type":"address"},{"internalType":"address","name":"usdtAddress","type":"address"},{"internalType":"uint256","name":"minNum","type":"uint256"},{"internalType":"uint256","name":"killStartBlockNumber","type":"uint256"},{"internalType":"uint256","name":"killBotBatchBlockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"trxAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liqudityAmount","type":"uint256"}],"name":"InitLiquidity","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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"trxReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_addLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_removeLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"address","name":"airAddr","type":"address"},{"internalType":"uint256","name":"airAmount","type":"uint256"}],"name":"balanceStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"batchBots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addres","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchSetFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addres","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"batchSetIllegalAdrList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeAddLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"closeTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableKillBatchBots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isFeeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killBatchBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchUsdtSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchUsdtSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchWethSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchWethSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquifyEnabled","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":"addLPFee","type":"uint256"}],"name":"setAddLPFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fundFee","type":"uint256"}],"name":"setBuyFundFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lpFee","type":"uint256"}],"name":"setBuyLPFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setBuyMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setIllegalAdrList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setKillBatchBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"removeLPFee","type":"uint256"}],"name":"setRemoveLPFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fundFee","type":"uint256"}],"name":"setSellFundFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lpFee","type":"uint256"}],"name":"setSellLPFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketingFee","type":"uint256"}],"name":"setSellMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract SMCWarp","name":"warp","type":"address"}],"name":"setSwapWarp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapPair","type":"address"}],"name":"setUniswapV2Pair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapUsdtPair","type":"address"}],"name":"setUniswapV2UsdtPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startAddLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startAddLPBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transToken","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"user2blocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"warpWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260046080908152634265626560e01b60a0526003906200002590826200034d565b50604080518082019091526004808252634245424560e01b6020830152906200004f90826200034d565b506005805460ff191660129081179091556200006d90600a6200052e565b620000809066017e9d8602b40062000543565b6006556064600f8190556010819055601181905560125560006013819055601481905560155560c86016819055601755601e805460ff191660011790556025805464ffffffffff19169055348015620000d857600080fd5b506040516200464b3803806200464b833981016040819052620000fb916200057a565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600980546001600160a01b038089166001600160a01b031992831617909255600a8054888416908316178155600b805493881693909216929092179055601b839055601d829055600554620001979160ff909116906200052e565b620001a3908462000543565b601855600160206000620001bf6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790558a8216815292805281832080548516600190811790915590891683528183208054851682179055308352908220805490931681179092556006549190620002313390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200029491815260200190565b60405180910390a3505050505050620005e0565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002d357607f821691505b602082108103620002f457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034857600081815260208120601f850160051c81016020861015620003235750805b601f850160051c820191505b8181101562000344578281556001016200032f565b5050505b505050565b81516001600160401b03811115620003695762000369620002a8565b62000381816200037a8454620002be565b84620002fa565b602080601f831160018114620003b95760008415620003a05750858301515b600019600386901b1c1916600185901b17855562000344565b600085815260208120601f198616915b82811015620003ea57888601518255948401946001909101908401620003c9565b5085821015620004095787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200047057816000190482111562000454576200045462000419565b808516156200046257918102915b93841c939080029062000434565b509250929050565b600082620004895750600162000528565b81620004985750600062000528565b8160018114620004b15760028114620004bc57620004dc565b600191505062000528565b60ff841115620004d057620004d062000419565b50506001821b62000528565b5060208310610133831016604e8410600b841016171562000501575081810a62000528565b6200050d83836200042f565b806000190482111562000524576200052462000419565b0290505b92915050565b60006200053c838362000478565b9392505050565b808202811582820484141762000528576200052862000419565b80516001600160a01b03811681146200057557600080fd5b919050565b60008060008060008060c087890312156200059457600080fd5b6200059f876200055d565b9550620005af602088016200055d565b9450620005bf604088016200055d565b9350606087015192506080870151915060a087015190509295509295509295565b61405b80620005f06000396000f3fe6080604052600436106104135760003560e01c806378d039441161021e578063b2887bec11610123578063cf80ee3d116100ab578063dd62ed3e1161007a578063dd62ed3e14610bbb578063ed5792d714610c01578063f0f165af14610c21578063f2fde38b14610c41578063fcdb89ce14610c6157600080fd5b8063cf80ee3d14610b46578063d83d414314610b5b578063d887a40714610b7b578063da1cdbe414610b9b57600080fd5b8063c49b9a80116100f2578063c49b9a8014610ac4578063c5d2418914610ae4578063c860795214610afa578063cd8d263d14610b10578063ce0192f914610b3057600080fd5b8063b2887bec14610a4e578063b3621cfb14610a6e578063b9fbc49d14610a8e578063bfac5ee014610aa457600080fd5b806395e36679116101a6578063a457c2d711610175578063a457c2d7146109a0578063a8424861146109c0578063a9059cbb146109e0578063ac7ee7c414610a00578063adc7955d14610a3857600080fd5b806395e36679146109345780639bb853441461094a5780639db5540714610960578063a29a60891461098057600080fd5b806385dc3004116101ed57806385dc3004146108975780638da5cb5b146108b75780638f02bb5b146108df578063906e9dd0146108ff57806395d89b411461091f57600080fd5b806378d039441461082d5780637d3c13e9146108425780637f18aa5a146108575780637f4949b51461087757600080fd5b80633950935111610324578063633e470a116102ac57806370a082311161027b57806370a082311461078c578063715018a6146107c25780637216e2aa146107d757806376b5cd28146107f857806376f7bfe41461081857600080fd5b8063633e470a146107225780636aa58bb5146107375780636c58080114610757578063703edf231461076c57600080fd5b80633df9a8d2116102f35780633df9a8d2146106a15780634a10b45a146106b75780634a74bb02146106d7578063553193ca146106f65780635ef019571461070c57600080fd5b806339509351146106295780633aa7d6ab146106495780633bfe62ca1461065e5780633ccfdbcd1461067457600080fd5b806317417bb8116103a757806323b872dd1161037657806323b872dd1461059257806324163a1e146105b2578063291d61c3146105d257806330509bca146105f2578063313ce5671461060757600080fd5b806317417bb81461053c578063177726741461055257806318160ddd146105685780631c5ac4731461057d57600080fd5b80630d595df9116103e35780630d595df9146104be5780630db5bde4146104de5780631530693214610502578063172246fc1461052257600080fd5b806290df141461041f57806306fdde0314610441578063095ea7b31461046c5780630c8ee52c1461049c57600080fd5b3661041a57005b600080fd5b34801561042b57600080fd5b5061043f61043a366004613b0b565b610c76565b005b34801561044d57600080fd5b50610456610e73565b6040516104639190613b70565b60405180910390f35b34801561047857600080fd5b5061048c610487366004613ba3565b610f05565b6040519015158152602001610463565b3480156104a857600080fd5b5060255461048c90640100000000900460ff1681565b3480156104ca57600080fd5b5061043f6104d9366004613bdd565b610f1c565b3480156104ea57600080fd5b506104f460175481565b604051908152602001610463565b34801561050e57600080fd5b5061043f61051d366004613c63565b61100a565b34801561052e57600080fd5b50601e5461048c9060ff1681565b34801561054857600080fd5b506104f4601d5481565b34801561055e57600080fd5b506104f4601b5481565b34801561057457600080fd5b506006546104f4565b34801561058957600080fd5b5061043f611039565b34801561059e57600080fd5b5061048c6105ad366004613b0b565b6110c7565b3480156105be57600080fd5b5061043f6105cd366004613c63565b611183565b3480156105de57600080fd5b5061043f6105ed366004613c7c565b6111b2565b3480156105fe57600080fd5b5061043f6112af565b34801561061357600080fd5b5060055460405160ff9091168152602001610463565b34801561063557600080fd5b5061048c610644366004613ba3565b611315565b34801561065557600080fd5b5061043f61134b565b34801561066a57600080fd5b506104f460105481565b34801561068057600080fd5b506104f461068f366004613c7c565b601f6020526000908152604090205481565b3480156106ad57600080fd5b506104f460155481565b3480156106c357600080fd5b5061043f6106d2366004613c99565b6115e9565b3480156106e357600080fd5b5060255461048c90610100900460ff1681565b34801561070257600080fd5b506104f460195481565b34801561071857600080fd5b506104f460165481565b34801561072e57600080fd5b506023546104f4565b34801561074357600080fd5b5061043f610752366004613c63565b61163e565b34801561076357600080fd5b5061043f61166d565b34801561077857600080fd5b5061043f610787366004613c7c565b6116ed565b34801561079857600080fd5b506104f46107a7366004613c7c565b6001600160a01b031660009081526001602052604090205490565b3480156107ce57600080fd5b5061043f611750565b3480156107e357600080fd5b5060255461048c906301000000900460ff1681565b34801561080457600080fd5b5061043f610813366004613c63565b6117c4565b34801561082457600080fd5b5061043f6117f3565b34801561083957600080fd5b5061043f611a5b565b34801561084e57600080fd5b5061043f611afe565b34801561086357600080fd5b5061043f610872366004613ba3565b611b7e565b34801561088357600080fd5b5061043f610892366004613c63565b611caa565b3480156108a357600080fd5b5061043f6108b2366004613c7c565b611cd9565b3480156108c357600080fd5b506000546040516001600160a01b039091168152602001610463565b3480156108eb57600080fd5b5061043f6108fa366004613c63565b611d3c565b34801561090b57600080fd5b5061043f61091a366004613c7c565b611d6b565b34801561092b57600080fd5b50610456611dce565b34801561094057600080fd5b506104f4601c5481565b34801561095657600080fd5b506104f4601a5481565b34801561096c57600080fd5b5061043f61097b366004613cd2565b611ddd565b34801561098c57600080fd5b5061043f61099b366004613c7c565b611e1a565b3480156109ac57600080fd5b5061048c6109bb366004613ba3565b611eff565b3480156109cc57600080fd5b5061043f6109db366004613c99565b611f9a565b3480156109ec57600080fd5b5061048c6109fb366004613ba3565b6120c1565b348015610a0c57600080fd5b5061048c610a1b366004613c7c565b6001600160a01b0316600090815260208052604090205460ff1690565b348015610a4457600080fd5b506104f460145481565b348015610a5a57600080fd5b5061043f610a69366004613bdd565b6120ce565b348015610a7a57600080fd5b5061043f610a89366004613c63565b6121bc565b348015610a9a57600080fd5b506104f460135481565b348015610ab057600080fd5b5061043f610abf366004613cef565b6121eb565b348015610ad057600080fd5b5061043f610adf366004613cd2565b612288565b348015610af057600080fd5b506104f460115481565b348015610b0657600080fd5b506104f460125481565b348015610b1c57600080fd5b5061043f610b2b366004613c63565b612306565b348015610b3c57600080fd5b506104f4600f5481565b348015610b5257600080fd5b506024546104f4565b348015610b6757600080fd5b5061043f610b76366004613c99565b612335565b348015610b8757600080fd5b5061043f610b96366004613c63565b612389565b348015610ba757600080fd5b5061043f610bb6366004613cd2565b6123b8565b348015610bc757600080fd5b506104f4610bd6366004613d26565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610c0d57600080fd5b5060255461048c9062010000900460ff1681565b348015610c2d57600080fd5b5061043f610c3c366004613c63565b6123fe565b348015610c4d57600080fd5b5061043f610c5c366004613c7c565b61242d565b348015610c6d57600080fd5b5061043f612517565b600c546001600160a01b0316336001600160a01b031614610cb25760405162461bcd60e51b8152600401610ca990613d54565b60405180910390fd5b6001600160a01b038216610d085760405162461bcd60e51b815260206004820181905260248201527f45524332303a20526563697069656e742061646472657373206973207a65726f6044820152606401610ca9565b60008111610d645760405162461bcd60e51b8152602060048201526024808201527f45524332303a205472616e7366657220616d6f756e7420657175616c20746f206044820152637a65726f60e01b6064820152608401610ca9565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610da8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcc9190613da3565b811115610e1b5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e636500000000006044820152606401610ca9565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e6d9084906125a5565b50505050565b606060038054610e8290613dbc565b80601f0160208091040260200160405190810160405280929190818152602001828054610eae90613dbc565b8015610efb5780601f10610ed057610100808354040283529160200191610efb565b820191906000526020600020905b815481529060010190602001808311610ede57829003601f168201915b5050505050905090565b6000610f123384846125e7565b5060015b92915050565b6000546001600160a01b03163314610f465760405162461bcd60e51b8152600401610ca990613df6565b60005b82811015610e6d5781151560216000868685818110610f6a57610f6a613e2b565b9050602002016020810190610f7f9190613c7c565b6001600160a01b0316815260208101919091526040016000205460ff16151514610ff8578160216000868685818110610fba57610fba613e2b565b9050602002016020810190610fcf9190613c7c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b8061100281613e57565b915050610f49565b6000546001600160a01b031633146110345760405162461bcd60e51b8152600401610ca990613df6565b601755565b6000546001600160a01b031633146110635760405162461bcd60e51b8152600401610ca990613df6565b6000601a54116110c05760405162461bcd60e51b815260206004820152602260248201527f45524332303a2073746172744164644c5020686173206e6f74206265656e2073604482015261195d60f21b6064820152608401610ca9565b6000601a55565b60006110d484848461270c565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019811461117657828110156111625760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ca9565b61117685336111718487612c9b565b6125e7565b60019150505b9392505050565b6000546001600160a01b031633146111ad5760405162461bcd60e51b8152600401610ca990613df6565b600f55565b6000546001600160a01b031633146111dc5760405162461bcd60e51b8152600401610ca990613df6565b600d546001600160a01b031661127557600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556112276000546001600160a01b031690565b600c80546001600160a01b0319166001600160a01b0392831617905516600081815260208080526040808320805460ff19166001179055308352600282528083209383529290522060001990555b600e80546001600160a01b039092166001600160a01b0319909216821790556000908152602260205260409020805460ff19166001179055565b6000546001600160a01b031633146112d95760405162461bcd60e51b8152600401610ca990613df6565b6009546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611312573d6000803e3d6000fd5b50565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610f129185906111719086612d01565b6000546001600160a01b031633146113755760405162461bcd60e51b8152600401610ca990613df6565b6025546301000000900460ff16156113dd5760405162461bcd60e51b815260206004820152602560248201527f6c61756e63685765746853776170456e61626c656420697320616c72656164796044820152641037b832b760d91b6064820152608401610ca9565b600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091553060009081526002602090815260408083208484528252918290206000199055815163c45a015560e01b81529151839263c45a01559260048083019391928290030181865afa15801561145d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114819190613e70565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f29190613e70565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561153f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115639190613e70565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152602260205260408120805460ff191660011790555416600c80546001600160a01b039283166001600160a01b03199091161790551660009081526020805260409020805460ff191660011790556025805463ff00000019166301000000179055565b6000546001600160a01b031633146116135760405162461bcd60e51b8152600401610ca990613df6565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116685760405162461bcd60e51b8152600401610ca990613df6565b601255565b6000546001600160a01b031633146116975760405162461bcd60e51b8152600401610ca990613df6565b601954156116e75760405162461bcd60e51b815260206004820152601e60248201527f45524332303a207374617274547261646520686173206265656e2073657400006044820152606401610ca9565b43601955565b6000546001600160a01b031633146117175760405162461bcd60e51b8152600401610ca990613df6565b600880546001600160a01b039092166001600160a01b03199092168217905560009081526020805260409020805460ff19166001179055565b6000546001600160a01b0316331461177a5760405162461bcd60e51b8152600401610ca990613df6565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146117ee5760405162461bcd60e51b8152600401610ca990613df6565b601355565b6000546001600160a01b0316331461181d5760405162461bcd60e51b8152600401610ca990613df6565b602554640100000000900460ff16156118865760405162461bcd60e51b815260206004820152602560248201527f6c61756e63685573647453776170456e61626c656420697320616c72656164796044820152641037b832b760d91b6064820152608401610ca9565b600d546001600160a01b031661191f57600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556118d16000546001600160a01b031690565b600c80546001600160a01b0319166001600160a01b0392831617905516600081815260208080526040808320805460ff19166001179055308352600282528083209383529290522060001990555b600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119969190613e70565b600b546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af11580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b9190613e70565b600e80546001600160a01b03929092166001600160a01b0319909216821790556000908152602260205260409020805460ff191660011790556025805464ff000000001916640100000000179055565b6000546001600160a01b03163314611a855760405162461bcd60e51b8152600401610ca990613df6565b600860009054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611ada573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113129190613e8d565b6000546001600160a01b03163314611b285760405162461bcd60e51b8152600401610ca990613df6565b601a5415611b785760405162461bcd60e51b815260206004820152601e60248201527f45524332303a2073746172744164644c5020686173206265656e2073657400006044820152606401610ca9565b43601a55565b600c546001600160a01b0316336001600160a01b031614611bb15760405162461bcd60e51b8152600401610ca990613d54565b6001600160a01b038216611c075760405162461bcd60e51b815260206004820181905260248201527f45524332303a20526563697069656e742061646472657373206973207a65726f6044820152606401610ca9565b60008111611c675760405162461bcd60e51b815260206004820152602760248201527f45524332303a206169725472616e7366657220616d6f756e7420657175616c20604482015266746f207a65726f60c81b6064820152608401610ca9565b6001600160a01b038216600090815260016020526040902054611c8a9082612d59565b6001600160a01b0390921660009081526001602052604090209190915550565b6000546001600160a01b03163314611cd45760405162461bcd60e51b8152600401610ca990613df6565b601055565b6000546001600160a01b03163314611d035760405162461bcd60e51b8152600401610ca990613df6565b600980546001600160a01b039092166001600160a01b03199092168217905560009081526020805260409020805460ff19166001179055565b6000546001600160a01b03163314611d665760405162461bcd60e51b8152600401610ca990613df6565b601555565b6000546001600160a01b03163314611d955760405162461bcd60e51b8152600401610ca990613df6565b600a80546001600160a01b039092166001600160a01b03199092168217905560009081526020805260409020805460ff19166001179055565b606060048054610e8290613dbc565b6000546001600160a01b03163314611e075760405162461bcd60e51b8152600401610ca990613df6565b601e805460ff1916911515919091179055565b6000546001600160a01b03163314611e445760405162461bcd60e51b8152600401610ca990613df6565b600780546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d90811790925530600090815260026020908152604080832085845282528083206000199055600d80546001600160a01b0388169516851790559282526022905220805460ff19166001179055611ec76000546001600160a01b031690565b600c80546001600160a01b0319166001600160a01b039283161790551660009081526020805260409020805460ff1916600117905550565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611f815760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ca9565b611f9033856111718487612c9b565b5060019392505050565b6000546001600160a01b03163314611fc45760405162461bcd60e51b8152600401610ca990613df6565b600d546001600160a01b039081169083160361202d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a205745544820706169722063616e6e6f742062652064656c6574604482015261195960f21b6064820152608401610ca9565b600e546001600160a01b03908116908316036120965760405162461bcd60e51b815260206004820152602260248201527f45524332303a205553445420706169722063616e6e6f742062652064656c6574604482015261195960f21b6064820152608401610ca9565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6000610f1233848461270c565b6000546001600160a01b031633146120f85760405162461bcd60e51b8152600401610ca990613df6565b60005b82811015610e6d578115156020600086868581811061211c5761211c613e2b565b90506020020160208101906121319190613c7c565b6001600160a01b0316815260208101919091526040016000205460ff161515146121aa57816020600086868581811061216c5761216c613e2b565b90506020020160208101906121819190613c7c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b806121b481613e57565b9150506120fb565b6000546001600160a01b031633146121e65760405162461bcd60e51b8152600401610ca990613df6565b601455565b6000546001600160a01b031633146122155760405162461bcd60e51b8152600401610ca990613df6565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af1158015612264573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6d9190613e8d565b6000546001600160a01b031633146122b25760405162461bcd60e51b8152600401610ca990613df6565b602580548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906122fb90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146123305760405162461bcd60e51b8152600401610ca990613df6565b601655565b6000546001600160a01b0316331461235f5760405162461bcd60e51b8152600401610ca990613df6565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6000546001600160a01b031633146123b35760405162461bcd60e51b8152600401610ca990613df6565b601155565b6000546001600160a01b031633146123e25760405162461bcd60e51b8152600401610ca990613df6565b60258054911515620100000262ff000019909216919091179055565b6000546001600160a01b031633146124285760405162461bcd60e51b8152600401610ca990613df6565b601855565b6000546001600160a01b031633146124575760405162461bcd60e51b8152600401610ca990613df6565b6001600160a01b0381166124bc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ca9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146125415760405162461bcd60e51b8152600401610ca990613df6565b60006019541161259e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a207374617274547261646520686173206e6f74206265656e2073604482015261195d60f21b6064820152608401610ca9565b6000601955565b606061117c83836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250612db8565b6001600160a01b0383166126495760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ca9565b6001600160a01b0382166126aa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ca9565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006001600160a01b0384166127725760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ca9565b6001600160a01b0383166127d45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ca9565b600082116128365760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ca9565b6001600160a01b03841660009081526021602052604090205460ff1615801561287857506001600160a01b03831660009081526021602052604090205460ff16155b6128d95760405162461bcd60e51b815260206004820152602c60248201527f45524332303a2073656e646572206f7220726563697069656e7420696e20696c60448201526b1b1959d85b10591c931a5cdd60a21b6064820152608401610ca9565b6001600160a01b038416600090815260016020526040902054828110156129515760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ca9565b6001600160a01b038516600090815260208052604090205460ff1615801561299157506001600160a01b038416600090815260208052604090205460ff16155b156129c45760006129b06127106129aa8461270f612dc7565b90612e38565b9050808411156129be578093505b60019250505b6001600160a01b038516600090815260226020526040812054819060ff1680612a0557506001600160a01b03861660009081526022602052604090205460ff165b15612c8d576001600160a01b038716600090815260208052604090205460ff16158015612a4a57506001600160a01b038616600090815260208052604090205460ff16155b15612c8d576001600160a01b03871660009081526022602052604090205460ff1615612a7f57612a78612e95565b9150612a8a565b612a87612fb8565b90505b601954600003612b1c57601a546000108015612abe57506001600160a01b03861660009081526022602052604090205460ff165b612b1c5760405162461bcd60e51b815260206004820152602960248201527f45524332303a6f7065726174657220616374696f6e206973206e6f74204164646044820152684c697175696469747960b81b6064820152608401610ca9565b601b54601954612b2b91612d01565b431015612b4657612b3d8787876130db565b50505050505050565b601e5460ff168015612b7057506001600160a01b03871660009081526022602052604090205460ff165b8015612b8a5750601d54601954612b879190613eaa565b43105b15612bdc57326000908152601f60205260409020544314612bbc57326000908152601f60205260409020439055612bdc565b601c8054906000612bcc83613e57565b9190505550612b3d8787876130db565b6000612c13601454612c0d601354612c0d601254612c0d601154612c0d601054600f54612d0190919063ffffffff16565b90612d01565b306000908152600160205260409020546018549192509081108015908190612c3e575060255460ff16155b8015612c6257506001600160a01b03891660009081526022602052604090205460ff165b8015612c755750602554610100900460ff165b15612c89576018549150612c898284613159565b5050505b612b3d8787878786866136b1565b600082821115612ced5760405162461bcd60e51b815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f570000000000000000006044820152606401610ca9565b6000612cf98385613ebd565b949350505050565b600080612d0e8385613eaa565b90508381101561117c5760405162461bcd60e51b8152602060048201526016602482015275536166654d617468236164643a204f564552464c4f5760501b6044820152606401610ca9565b600080612d668385613eaa565b90508381101561117c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ca9565b6060612cf98484600085613915565b600082600003612dd957506000610f16565b6000612de58385613ed0565b905082612df28583613ee7565b1461117c5760405162461bcd60e51b8152602060048201526016602482015275536166654d617468236d756c3a204f564552464c4f5760501b6044820152606401610ca9565b6000808211612e895760405162461bcd60e51b815260206004820152601e60248201527f536166654d617468236469763a204449564953494f4e5f42595f5a45524f00006044820152606401610ca9565b6000612cf98385613ee7565b600e5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa158015612ee6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0a9190613f25565b50600b546001600160701b039283169450911691506001600160a01b0316600030821015612f39575082612f3c565b50815b6040516370a0823160e01b81526001600160a01b038681166004830152600091908416906370a0823190602401602060405180830381865afa158015612f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faa9190613da3565b909110159695505050505050565b600e5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa158015613009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302d9190613f25565b50600b546001600160701b039283169450911691506001600160a01b031660003082101561305c57508261305f565b50815b6040516370a0823160e01b81526001600160a01b038681166004830152600091908416906370a0823190602401602060405180830381865afa1580156130a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cd9190613da3565b919091119695505050505050565b6001600160a01b0383166000908152600160205260409020546130fe9082612c9b565b6001600160a01b03841660009081526001602052604081209190915561312a60646129aa84604b612dc7565b6009549091506131459085906001600160a01b031683613a46565b610e6d84846131548585612c9b565b613a46565b6025805460ff191660011790556014546013546000916131799190612d01565b9050600061318b836129aa8685612dc7565b9050600061319a826002612e38565b905060006131a88383612c9b565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106131e2576131e2613e2b565b6001600160a01b039283166020918202929092010152600b5482519116908290600190811061321357613213613e2b565b6001600160a01b03928316602091820292909201015260075416635c11d79561323c8985612c9b565b6008546040516001600160e01b031960e085901b168152613271929160009187916001600160a01b0316904290600401613f6a565b600060405180830381600087803b15801561328b57600080fd5b505af115801561329f573d6000803e3d6000fd5b505050506132c16132ba600287612e3890919063ffffffff16565b8790612c9b565b600b546040516370a0823160e01b81523060048201529197506001600160a01b03169060009082906370a0823190602401602060405180830381865afa15801561330f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133339190613da3565b9050600860009054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561338a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ae9190613e8d565b506040516370a0823160e01b81523060048201526000906134269083906001600160a01b038616906370a0823190602401602060405180830381865afa1580156133fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134209190613da3565b90612c9b565b9050600061344f8a6129aa613448601054600f54612d0190919063ffffffff16565b8590612dc7565b905060006134788b6129aa613471601254601154612d0190919063ffffffff16565b8690612dc7565b905081156134f95760095460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529086169063a9059cbb906044016020604051808303816000875af11580156134d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f79190613e8d565b505b801561357857600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529086169063a9059cbb906044016020604051808303816000875af1158015613552573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135769190613e8d565b505b881561369957600061358e826134208686612c9b565b90506000811180156135a8575060255462010000900460ff165b1561369757600754600b5460095460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018c90526064810185905260006084820181905260a482015290821660c48201524260e482015291169063e8e3370090610104016060604051808303816000875af115801561362e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136529190613fdb565b5050604080518b8152602081018490529081018a90527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b505b50506025805460ff1916905550505050505050505050565b6001600160a01b0386166000908152600160205260408120546136d49086612c9b565b6001600160a01b0388166000908152600160205260409020558315613906578215613736576137146127106129aa60165488612dc790919063ffffffff16565b61371e9082613eaa565b9050801561373157613731873083613a46565b613906565b8115613757576137146127106129aa60175488612dc790919063ffffffff16565b6001600160a01b03871660009081526022602052604090205460ff16156138525760006137956127106129aa600f5489612dc790919063ffffffff16565b905060006137b46127106129aa6011548a612dc790919063ffffffff16565b905060006137d36127106129aa6013548b612dc790919063ffffffff16565b9050808315613801576137e68486613eaa565b600954909550613801908c906001600160a01b031686613a46565b821561382c576138118386613eaa565b600a5490955061382c908c906001600160a01b031685613a46565b80156138495761383c8186613eaa565b94506138498b3083613a46565b50505050613906565b6001600160a01b03861660009081526022602052604090205460ff16156138ce5760006138906127106129aa60105489612dc790919063ffffffff16565b905060006138af6127106129aa6012548a612dc790919063ffffffff16565b905060006137d36127106129aa6014548b612dc790919063ffffffff16565b6138e96127106129aa60155488612dc790919063ffffffff16565b6138f39082613eaa565b9050801561390657613906873083613a46565b612b3d87876131548885612c9b565b6060824710156139765760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ca9565b6001600160a01b0385163b6139cd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ca9565b600080866001600160a01b031685876040516139e99190614009565b60006040518083038185875af1925050503d8060008114613a26576040519150601f19603f3d011682016040523d82523d6000602084013e613a2b565b606091505b5091509150613a3b828286613abd565b979650505050505050565b6001600160a01b038216600090815260016020526040902054613a699082612d01565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126ff9085815260200190565b60608315613acc57508161117c565b825115613adc5782518084602001fd5b8160405162461bcd60e51b8152600401610ca99190613b70565b6001600160a01b038116811461131257600080fd5b600080600060608486031215613b2057600080fd5b8335613b2b81613af6565b92506020840135613b3b81613af6565b929592945050506040919091013590565b60005b83811015613b67578181015183820152602001613b4f565b50506000910152565b6020815260008251806020840152613b8f816040850160208701613b4c565b601f01601f19169190910160400192915050565b60008060408385031215613bb657600080fd5b8235613bc181613af6565b946020939093013593505050565b801515811461131257600080fd5b600080600060408486031215613bf257600080fd5b833567ffffffffffffffff80821115613c0a57600080fd5b818601915086601f830112613c1e57600080fd5b813581811115613c2d57600080fd5b8760208260051b8501011115613c4257600080fd5b60209283019550935050840135613c5881613bcf565b809150509250925092565b600060208284031215613c7557600080fd5b5035919050565b600060208284031215613c8e57600080fd5b813561117c81613af6565b60008060408385031215613cac57600080fd5b8235613cb781613af6565b91506020830135613cc781613bcf565b809150509250929050565b600060208284031215613ce457600080fd5b813561117c81613bcf565b600080600060608486031215613d0457600080fd5b8335613d0f81613af6565b9250602084013591506040840135613c5881613af6565b60008060408385031215613d3957600080fd5b8235613d4481613af6565b91506020830135613cc781613af6565b6020808252602f908201527f45524332303a2043616c6c6572206973206e6f7420706c6174666f726d20616e60408201526e32103737903832b936b4b9b9b4b7b760891b606082015260800190565b600060208284031215613db557600080fd5b5051919050565b600181811c90821680613dd057607f821691505b602082108103613df057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613e6957613e69613e41565b5060010190565b600060208284031215613e8257600080fd5b815161117c81613af6565b600060208284031215613e9f57600080fd5b815161117c81613bcf565b80820180821115610f1657610f16613e41565b81810381811115610f1657610f16613e41565b8082028115828204841417610f1657610f16613e41565b600082613f0457634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160701b0381168114613f2057600080fd5b919050565b600080600060608486031215613f3a57600080fd5b613f4384613f09565b9250613f5160208501613f09565b9150604084015163ffffffff81168114613c5857600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fba5784516001600160a01b031683529383019391830191600101613f95565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613ff057600080fd5b8351925060208401519150604084015190509250925092565b6000825161401b818460208701613b4c565b919091019291505056fea264697066735822122014016a271a3f62f787bec7eed8b6bae0de127719f36cee7098661dd84cd1e97264736f6c63430008120033000000000000000000000000ccde66922967dcbec62205fb12c3d118d1994913000000000000000000000000edd80a654b811e14275142a579ae609102c50472000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000012a05f200000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000064

Deployed Bytecode

0x6080604052600436106104135760003560e01c806378d039441161021e578063b2887bec11610123578063cf80ee3d116100ab578063dd62ed3e1161007a578063dd62ed3e14610bbb578063ed5792d714610c01578063f0f165af14610c21578063f2fde38b14610c41578063fcdb89ce14610c6157600080fd5b8063cf80ee3d14610b46578063d83d414314610b5b578063d887a40714610b7b578063da1cdbe414610b9b57600080fd5b8063c49b9a80116100f2578063c49b9a8014610ac4578063c5d2418914610ae4578063c860795214610afa578063cd8d263d14610b10578063ce0192f914610b3057600080fd5b8063b2887bec14610a4e578063b3621cfb14610a6e578063b9fbc49d14610a8e578063bfac5ee014610aa457600080fd5b806395e36679116101a6578063a457c2d711610175578063a457c2d7146109a0578063a8424861146109c0578063a9059cbb146109e0578063ac7ee7c414610a00578063adc7955d14610a3857600080fd5b806395e36679146109345780639bb853441461094a5780639db5540714610960578063a29a60891461098057600080fd5b806385dc3004116101ed57806385dc3004146108975780638da5cb5b146108b75780638f02bb5b146108df578063906e9dd0146108ff57806395d89b411461091f57600080fd5b806378d039441461082d5780637d3c13e9146108425780637f18aa5a146108575780637f4949b51461087757600080fd5b80633950935111610324578063633e470a116102ac57806370a082311161027b57806370a082311461078c578063715018a6146107c25780637216e2aa146107d757806376b5cd28146107f857806376f7bfe41461081857600080fd5b8063633e470a146107225780636aa58bb5146107375780636c58080114610757578063703edf231461076c57600080fd5b80633df9a8d2116102f35780633df9a8d2146106a15780634a10b45a146106b75780634a74bb02146106d7578063553193ca146106f65780635ef019571461070c57600080fd5b806339509351146106295780633aa7d6ab146106495780633bfe62ca1461065e5780633ccfdbcd1461067457600080fd5b806317417bb8116103a757806323b872dd1161037657806323b872dd1461059257806324163a1e146105b2578063291d61c3146105d257806330509bca146105f2578063313ce5671461060757600080fd5b806317417bb81461053c578063177726741461055257806318160ddd146105685780631c5ac4731461057d57600080fd5b80630d595df9116103e35780630d595df9146104be5780630db5bde4146104de5780631530693214610502578063172246fc1461052257600080fd5b806290df141461041f57806306fdde0314610441578063095ea7b31461046c5780630c8ee52c1461049c57600080fd5b3661041a57005b600080fd5b34801561042b57600080fd5b5061043f61043a366004613b0b565b610c76565b005b34801561044d57600080fd5b50610456610e73565b6040516104639190613b70565b60405180910390f35b34801561047857600080fd5b5061048c610487366004613ba3565b610f05565b6040519015158152602001610463565b3480156104a857600080fd5b5060255461048c90640100000000900460ff1681565b3480156104ca57600080fd5b5061043f6104d9366004613bdd565b610f1c565b3480156104ea57600080fd5b506104f460175481565b604051908152602001610463565b34801561050e57600080fd5b5061043f61051d366004613c63565b61100a565b34801561052e57600080fd5b50601e5461048c9060ff1681565b34801561054857600080fd5b506104f4601d5481565b34801561055e57600080fd5b506104f4601b5481565b34801561057457600080fd5b506006546104f4565b34801561058957600080fd5b5061043f611039565b34801561059e57600080fd5b5061048c6105ad366004613b0b565b6110c7565b3480156105be57600080fd5b5061043f6105cd366004613c63565b611183565b3480156105de57600080fd5b5061043f6105ed366004613c7c565b6111b2565b3480156105fe57600080fd5b5061043f6112af565b34801561061357600080fd5b5060055460405160ff9091168152602001610463565b34801561063557600080fd5b5061048c610644366004613ba3565b611315565b34801561065557600080fd5b5061043f61134b565b34801561066a57600080fd5b506104f460105481565b34801561068057600080fd5b506104f461068f366004613c7c565b601f6020526000908152604090205481565b3480156106ad57600080fd5b506104f460155481565b3480156106c357600080fd5b5061043f6106d2366004613c99565b6115e9565b3480156106e357600080fd5b5060255461048c90610100900460ff1681565b34801561070257600080fd5b506104f460195481565b34801561071857600080fd5b506104f460165481565b34801561072e57600080fd5b506023546104f4565b34801561074357600080fd5b5061043f610752366004613c63565b61163e565b34801561076357600080fd5b5061043f61166d565b34801561077857600080fd5b5061043f610787366004613c7c565b6116ed565b34801561079857600080fd5b506104f46107a7366004613c7c565b6001600160a01b031660009081526001602052604090205490565b3480156107ce57600080fd5b5061043f611750565b3480156107e357600080fd5b5060255461048c906301000000900460ff1681565b34801561080457600080fd5b5061043f610813366004613c63565b6117c4565b34801561082457600080fd5b5061043f6117f3565b34801561083957600080fd5b5061043f611a5b565b34801561084e57600080fd5b5061043f611afe565b34801561086357600080fd5b5061043f610872366004613ba3565b611b7e565b34801561088357600080fd5b5061043f610892366004613c63565b611caa565b3480156108a357600080fd5b5061043f6108b2366004613c7c565b611cd9565b3480156108c357600080fd5b506000546040516001600160a01b039091168152602001610463565b3480156108eb57600080fd5b5061043f6108fa366004613c63565b611d3c565b34801561090b57600080fd5b5061043f61091a366004613c7c565b611d6b565b34801561092b57600080fd5b50610456611dce565b34801561094057600080fd5b506104f4601c5481565b34801561095657600080fd5b506104f4601a5481565b34801561096c57600080fd5b5061043f61097b366004613cd2565b611ddd565b34801561098c57600080fd5b5061043f61099b366004613c7c565b611e1a565b3480156109ac57600080fd5b5061048c6109bb366004613ba3565b611eff565b3480156109cc57600080fd5b5061043f6109db366004613c99565b611f9a565b3480156109ec57600080fd5b5061048c6109fb366004613ba3565b6120c1565b348015610a0c57600080fd5b5061048c610a1b366004613c7c565b6001600160a01b0316600090815260208052604090205460ff1690565b348015610a4457600080fd5b506104f460145481565b348015610a5a57600080fd5b5061043f610a69366004613bdd565b6120ce565b348015610a7a57600080fd5b5061043f610a89366004613c63565b6121bc565b348015610a9a57600080fd5b506104f460135481565b348015610ab057600080fd5b5061043f610abf366004613cef565b6121eb565b348015610ad057600080fd5b5061043f610adf366004613cd2565b612288565b348015610af057600080fd5b506104f460115481565b348015610b0657600080fd5b506104f460125481565b348015610b1c57600080fd5b5061043f610b2b366004613c63565b612306565b348015610b3c57600080fd5b506104f4600f5481565b348015610b5257600080fd5b506024546104f4565b348015610b6757600080fd5b5061043f610b76366004613c99565b612335565b348015610b8757600080fd5b5061043f610b96366004613c63565b612389565b348015610ba757600080fd5b5061043f610bb6366004613cd2565b6123b8565b348015610bc757600080fd5b506104f4610bd6366004613d26565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b348015610c0d57600080fd5b5060255461048c9062010000900460ff1681565b348015610c2d57600080fd5b5061043f610c3c366004613c63565b6123fe565b348015610c4d57600080fd5b5061043f610c5c366004613c7c565b61242d565b348015610c6d57600080fd5b5061043f612517565b600c546001600160a01b0316336001600160a01b031614610cb25760405162461bcd60e51b8152600401610ca990613d54565b60405180910390fd5b6001600160a01b038216610d085760405162461bcd60e51b815260206004820181905260248201527f45524332303a20526563697069656e742061646472657373206973207a65726f6044820152606401610ca9565b60008111610d645760405162461bcd60e51b8152602060048201526024808201527f45524332303a205472616e7366657220616d6f756e7420657175616c20746f206044820152637a65726f60e01b6064820152608401610ca9565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610da8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dcc9190613da3565b811115610e1b5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e636500000000006044820152606401610ca9565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e6d9084906125a5565b50505050565b606060038054610e8290613dbc565b80601f0160208091040260200160405190810160405280929190818152602001828054610eae90613dbc565b8015610efb5780601f10610ed057610100808354040283529160200191610efb565b820191906000526020600020905b815481529060010190602001808311610ede57829003601f168201915b5050505050905090565b6000610f123384846125e7565b5060015b92915050565b6000546001600160a01b03163314610f465760405162461bcd60e51b8152600401610ca990613df6565b60005b82811015610e6d5781151560216000868685818110610f6a57610f6a613e2b565b9050602002016020810190610f7f9190613c7c565b6001600160a01b0316815260208101919091526040016000205460ff16151514610ff8578160216000868685818110610fba57610fba613e2b565b9050602002016020810190610fcf9190613c7c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b8061100281613e57565b915050610f49565b6000546001600160a01b031633146110345760405162461bcd60e51b8152600401610ca990613df6565b601755565b6000546001600160a01b031633146110635760405162461bcd60e51b8152600401610ca990613df6565b6000601a54116110c05760405162461bcd60e51b815260206004820152602260248201527f45524332303a2073746172744164644c5020686173206e6f74206265656e2073604482015261195d60f21b6064820152608401610ca9565b6000601a55565b60006110d484848461270c565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019811461117657828110156111625760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ca9565b61117685336111718487612c9b565b6125e7565b60019150505b9392505050565b6000546001600160a01b031633146111ad5760405162461bcd60e51b8152600401610ca990613df6565b600f55565b6000546001600160a01b031633146111dc5760405162461bcd60e51b8152600401610ca990613df6565b600d546001600160a01b031661127557600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556112276000546001600160a01b031690565b600c80546001600160a01b0319166001600160a01b0392831617905516600081815260208080526040808320805460ff19166001179055308352600282528083209383529290522060001990555b600e80546001600160a01b039092166001600160a01b0319909216821790556000908152602260205260409020805460ff19166001179055565b6000546001600160a01b031633146112d95760405162461bcd60e51b8152600401610ca990613df6565b6009546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611312573d6000803e3d6000fd5b50565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610f129185906111719086612d01565b6000546001600160a01b031633146113755760405162461bcd60e51b8152600401610ca990613df6565b6025546301000000900460ff16156113dd5760405162461bcd60e51b815260206004820152602560248201527f6c61756e63685765746853776170456e61626c656420697320616c72656164796044820152641037b832b760d91b6064820152608401610ca9565b600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091553060009081526002602090815260408083208484528252918290206000199055815163c45a015560e01b81529151839263c45a01559260048083019391928290030181865afa15801561145d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114819190613e70565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f29190613e70565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561153f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115639190613e70565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152602260205260408120805460ff191660011790555416600c80546001600160a01b039283166001600160a01b03199091161790551660009081526020805260409020805460ff191660011790556025805463ff00000019166301000000179055565b6000546001600160a01b031633146116135760405162461bcd60e51b8152600401610ca990613df6565b6001600160a01b03919091166000908152602160205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146116685760405162461bcd60e51b8152600401610ca990613df6565b601255565b6000546001600160a01b031633146116975760405162461bcd60e51b8152600401610ca990613df6565b601954156116e75760405162461bcd60e51b815260206004820152601e60248201527f45524332303a207374617274547261646520686173206265656e2073657400006044820152606401610ca9565b43601955565b6000546001600160a01b031633146117175760405162461bcd60e51b8152600401610ca990613df6565b600880546001600160a01b039092166001600160a01b03199092168217905560009081526020805260409020805460ff19166001179055565b6000546001600160a01b0316331461177a5760405162461bcd60e51b8152600401610ca990613df6565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146117ee5760405162461bcd60e51b8152600401610ca990613df6565b601355565b6000546001600160a01b0316331461181d5760405162461bcd60e51b8152600401610ca990613df6565b602554640100000000900460ff16156118865760405162461bcd60e51b815260206004820152602560248201527f6c61756e63685573647453776170456e61626c656420697320616c72656164796044820152641037b832b760d91b6064820152608401610ca9565b600d546001600160a01b031661191f57600780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556118d16000546001600160a01b031690565b600c80546001600160a01b0319166001600160a01b0392831617905516600081815260208080526040808320805460ff19166001179055308352600282528083209383529290522060001990555b600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119969190613e70565b600b546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af11580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b9190613e70565b600e80546001600160a01b03929092166001600160a01b0319909216821790556000908152602260205260409020805460ff191660011790556025805464ff000000001916640100000000179055565b6000546001600160a01b03163314611a855760405162461bcd60e51b8152600401610ca990613df6565b600860009054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611ada573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113129190613e8d565b6000546001600160a01b03163314611b285760405162461bcd60e51b8152600401610ca990613df6565b601a5415611b785760405162461bcd60e51b815260206004820152601e60248201527f45524332303a2073746172744164644c5020686173206265656e2073657400006044820152606401610ca9565b43601a55565b600c546001600160a01b0316336001600160a01b031614611bb15760405162461bcd60e51b8152600401610ca990613d54565b6001600160a01b038216611c075760405162461bcd60e51b815260206004820181905260248201527f45524332303a20526563697069656e742061646472657373206973207a65726f6044820152606401610ca9565b60008111611c675760405162461bcd60e51b815260206004820152602760248201527f45524332303a206169725472616e7366657220616d6f756e7420657175616c20604482015266746f207a65726f60c81b6064820152608401610ca9565b6001600160a01b038216600090815260016020526040902054611c8a9082612d59565b6001600160a01b0390921660009081526001602052604090209190915550565b6000546001600160a01b03163314611cd45760405162461bcd60e51b8152600401610ca990613df6565b601055565b6000546001600160a01b03163314611d035760405162461bcd60e51b8152600401610ca990613df6565b600980546001600160a01b039092166001600160a01b03199092168217905560009081526020805260409020805460ff19166001179055565b6000546001600160a01b03163314611d665760405162461bcd60e51b8152600401610ca990613df6565b601555565b6000546001600160a01b03163314611d955760405162461bcd60e51b8152600401610ca990613df6565b600a80546001600160a01b039092166001600160a01b03199092168217905560009081526020805260409020805460ff19166001179055565b606060048054610e8290613dbc565b6000546001600160a01b03163314611e075760405162461bcd60e51b8152600401610ca990613df6565b601e805460ff1916911515919091179055565b6000546001600160a01b03163314611e445760405162461bcd60e51b8152600401610ca990613df6565b600780546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d90811790925530600090815260026020908152604080832085845282528083206000199055600d80546001600160a01b0388169516851790559282526022905220805460ff19166001179055611ec76000546001600160a01b031690565b600c80546001600160a01b0319166001600160a01b039283161790551660009081526020805260409020805460ff1916600117905550565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611f815760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ca9565b611f9033856111718487612c9b565b5060019392505050565b6000546001600160a01b03163314611fc45760405162461bcd60e51b8152600401610ca990613df6565b600d546001600160a01b039081169083160361202d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a205745544820706169722063616e6e6f742062652064656c6574604482015261195960f21b6064820152608401610ca9565b600e546001600160a01b03908116908316036120965760405162461bcd60e51b815260206004820152602260248201527f45524332303a205553445420706169722063616e6e6f742062652064656c6574604482015261195960f21b6064820152608401610ca9565b6001600160a01b03919091166000908152602260205260409020805460ff1916911515919091179055565b6000610f1233848461270c565b6000546001600160a01b031633146120f85760405162461bcd60e51b8152600401610ca990613df6565b60005b82811015610e6d578115156020600086868581811061211c5761211c613e2b565b90506020020160208101906121319190613c7c565b6001600160a01b0316815260208101919091526040016000205460ff161515146121aa57816020600086868581811061216c5761216c613e2b565b90506020020160208101906121819190613c7c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b806121b481613e57565b9150506120fb565b6000546001600160a01b031633146121e65760405162461bcd60e51b8152600401610ca990613df6565b601455565b6000546001600160a01b031633146122155760405162461bcd60e51b8152600401610ca990613df6565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb906044016020604051808303816000875af1158015612264573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6d9190613e8d565b6000546001600160a01b031633146122b25760405162461bcd60e51b8152600401610ca990613df6565b602580548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906122fb90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146123305760405162461bcd60e51b8152600401610ca990613df6565b601655565b6000546001600160a01b0316331461235f5760405162461bcd60e51b8152600401610ca990613df6565b6001600160a01b039190911660009081526020805260409020805460ff1916911515919091179055565b6000546001600160a01b031633146123b35760405162461bcd60e51b8152600401610ca990613df6565b601155565b6000546001600160a01b031633146123e25760405162461bcd60e51b8152600401610ca990613df6565b60258054911515620100000262ff000019909216919091179055565b6000546001600160a01b031633146124285760405162461bcd60e51b8152600401610ca990613df6565b601855565b6000546001600160a01b031633146124575760405162461bcd60e51b8152600401610ca990613df6565b6001600160a01b0381166124bc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ca9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146125415760405162461bcd60e51b8152600401610ca990613df6565b60006019541161259e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a207374617274547261646520686173206e6f74206265656e2073604482015261195d60f21b6064820152608401610ca9565b6000601955565b606061117c83836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250612db8565b6001600160a01b0383166126495760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ca9565b6001600160a01b0382166126aa5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ca9565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006001600160a01b0384166127725760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ca9565b6001600160a01b0383166127d45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ca9565b600082116128365760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ca9565b6001600160a01b03841660009081526021602052604090205460ff1615801561287857506001600160a01b03831660009081526021602052604090205460ff16155b6128d95760405162461bcd60e51b815260206004820152602c60248201527f45524332303a2073656e646572206f7220726563697069656e7420696e20696c60448201526b1b1959d85b10591c931a5cdd60a21b6064820152608401610ca9565b6001600160a01b038416600090815260016020526040902054828110156129515760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ca9565b6001600160a01b038516600090815260208052604090205460ff1615801561299157506001600160a01b038416600090815260208052604090205460ff16155b156129c45760006129b06127106129aa8461270f612dc7565b90612e38565b9050808411156129be578093505b60019250505b6001600160a01b038516600090815260226020526040812054819060ff1680612a0557506001600160a01b03861660009081526022602052604090205460ff165b15612c8d576001600160a01b038716600090815260208052604090205460ff16158015612a4a57506001600160a01b038616600090815260208052604090205460ff16155b15612c8d576001600160a01b03871660009081526022602052604090205460ff1615612a7f57612a78612e95565b9150612a8a565b612a87612fb8565b90505b601954600003612b1c57601a546000108015612abe57506001600160a01b03861660009081526022602052604090205460ff165b612b1c5760405162461bcd60e51b815260206004820152602960248201527f45524332303a6f7065726174657220616374696f6e206973206e6f74204164646044820152684c697175696469747960b81b6064820152608401610ca9565b601b54601954612b2b91612d01565b431015612b4657612b3d8787876130db565b50505050505050565b601e5460ff168015612b7057506001600160a01b03871660009081526022602052604090205460ff165b8015612b8a5750601d54601954612b879190613eaa565b43105b15612bdc57326000908152601f60205260409020544314612bbc57326000908152601f60205260409020439055612bdc565b601c8054906000612bcc83613e57565b9190505550612b3d8787876130db565b6000612c13601454612c0d601354612c0d601254612c0d601154612c0d601054600f54612d0190919063ffffffff16565b90612d01565b306000908152600160205260409020546018549192509081108015908190612c3e575060255460ff16155b8015612c6257506001600160a01b03891660009081526022602052604090205460ff165b8015612c755750602554610100900460ff165b15612c89576018549150612c898284613159565b5050505b612b3d8787878786866136b1565b600082821115612ced5760405162461bcd60e51b815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f570000000000000000006044820152606401610ca9565b6000612cf98385613ebd565b949350505050565b600080612d0e8385613eaa565b90508381101561117c5760405162461bcd60e51b8152602060048201526016602482015275536166654d617468236164643a204f564552464c4f5760501b6044820152606401610ca9565b600080612d668385613eaa565b90508381101561117c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ca9565b6060612cf98484600085613915565b600082600003612dd957506000610f16565b6000612de58385613ed0565b905082612df28583613ee7565b1461117c5760405162461bcd60e51b8152602060048201526016602482015275536166654d617468236d756c3a204f564552464c4f5760501b6044820152606401610ca9565b6000808211612e895760405162461bcd60e51b815260206004820152601e60248201527f536166654d617468236469763a204449564953494f4e5f42595f5a45524f00006044820152606401610ca9565b6000612cf98385613ee7565b600e5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa158015612ee6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0a9190613f25565b50600b546001600160701b039283169450911691506001600160a01b0316600030821015612f39575082612f3c565b50815b6040516370a0823160e01b81526001600160a01b038681166004830152600091908416906370a0823190602401602060405180830381865afa158015612f86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612faa9190613da3565b909110159695505050505050565b600e5460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa158015613009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302d9190613f25565b50600b546001600160701b039283169450911691506001600160a01b031660003082101561305c57508261305f565b50815b6040516370a0823160e01b81526001600160a01b038681166004830152600091908416906370a0823190602401602060405180830381865afa1580156130a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cd9190613da3565b919091119695505050505050565b6001600160a01b0383166000908152600160205260409020546130fe9082612c9b565b6001600160a01b03841660009081526001602052604081209190915561312a60646129aa84604b612dc7565b6009549091506131459085906001600160a01b031683613a46565b610e6d84846131548585612c9b565b613a46565b6025805460ff191660011790556014546013546000916131799190612d01565b9050600061318b836129aa8685612dc7565b9050600061319a826002612e38565b905060006131a88383612c9b565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106131e2576131e2613e2b565b6001600160a01b039283166020918202929092010152600b5482519116908290600190811061321357613213613e2b565b6001600160a01b03928316602091820292909201015260075416635c11d79561323c8985612c9b565b6008546040516001600160e01b031960e085901b168152613271929160009187916001600160a01b0316904290600401613f6a565b600060405180830381600087803b15801561328b57600080fd5b505af115801561329f573d6000803e3d6000fd5b505050506132c16132ba600287612e3890919063ffffffff16565b8790612c9b565b600b546040516370a0823160e01b81523060048201529197506001600160a01b03169060009082906370a0823190602401602060405180830381865afa15801561330f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133339190613da3565b9050600860009054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561338a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ae9190613e8d565b506040516370a0823160e01b81523060048201526000906134269083906001600160a01b038616906370a0823190602401602060405180830381865afa1580156133fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134209190613da3565b90612c9b565b9050600061344f8a6129aa613448601054600f54612d0190919063ffffffff16565b8590612dc7565b905060006134788b6129aa613471601254601154612d0190919063ffffffff16565b8690612dc7565b905081156134f95760095460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529086169063a9059cbb906044016020604051808303816000875af11580156134d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f79190613e8d565b505b801561357857600a5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529086169063a9059cbb906044016020604051808303816000875af1158015613552573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135769190613e8d565b505b881561369957600061358e826134208686612c9b565b90506000811180156135a8575060255462010000900460ff165b1561369757600754600b5460095460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018c90526064810185905260006084820181905260a482015290821660c48201524260e482015291169063e8e3370090610104016060604051808303816000875af115801561362e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136529190613fdb565b5050604080518b8152602081018490529081018a90527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b505b50506025805460ff1916905550505050505050505050565b6001600160a01b0386166000908152600160205260408120546136d49086612c9b565b6001600160a01b0388166000908152600160205260409020558315613906578215613736576137146127106129aa60165488612dc790919063ffffffff16565b61371e9082613eaa565b9050801561373157613731873083613a46565b613906565b8115613757576137146127106129aa60175488612dc790919063ffffffff16565b6001600160a01b03871660009081526022602052604090205460ff16156138525760006137956127106129aa600f5489612dc790919063ffffffff16565b905060006137b46127106129aa6011548a612dc790919063ffffffff16565b905060006137d36127106129aa6013548b612dc790919063ffffffff16565b9050808315613801576137e68486613eaa565b600954909550613801908c906001600160a01b031686613a46565b821561382c576138118386613eaa565b600a5490955061382c908c906001600160a01b031685613a46565b80156138495761383c8186613eaa565b94506138498b3083613a46565b50505050613906565b6001600160a01b03861660009081526022602052604090205460ff16156138ce5760006138906127106129aa60105489612dc790919063ffffffff16565b905060006138af6127106129aa6012548a612dc790919063ffffffff16565b905060006137d36127106129aa6014548b612dc790919063ffffffff16565b6138e96127106129aa60155488612dc790919063ffffffff16565b6138f39082613eaa565b9050801561390657613906873083613a46565b612b3d87876131548885612c9b565b6060824710156139765760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ca9565b6001600160a01b0385163b6139cd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ca9565b600080866001600160a01b031685876040516139e99190614009565b60006040518083038185875af1925050503d8060008114613a26576040519150601f19603f3d011682016040523d82523d6000602084013e613a2b565b606091505b5091509150613a3b828286613abd565b979650505050505050565b6001600160a01b038216600090815260016020526040902054613a699082612d01565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126ff9085815260200190565b60608315613acc57508161117c565b825115613adc5782518084602001fd5b8160405162461bcd60e51b8152600401610ca99190613b70565b6001600160a01b038116811461131257600080fd5b600080600060608486031215613b2057600080fd5b8335613b2b81613af6565b92506020840135613b3b81613af6565b929592945050506040919091013590565b60005b83811015613b67578181015183820152602001613b4f565b50506000910152565b6020815260008251806020840152613b8f816040850160208701613b4c565b601f01601f19169190910160400192915050565b60008060408385031215613bb657600080fd5b8235613bc181613af6565b946020939093013593505050565b801515811461131257600080fd5b600080600060408486031215613bf257600080fd5b833567ffffffffffffffff80821115613c0a57600080fd5b818601915086601f830112613c1e57600080fd5b813581811115613c2d57600080fd5b8760208260051b8501011115613c4257600080fd5b60209283019550935050840135613c5881613bcf565b809150509250925092565b600060208284031215613c7557600080fd5b5035919050565b600060208284031215613c8e57600080fd5b813561117c81613af6565b60008060408385031215613cac57600080fd5b8235613cb781613af6565b91506020830135613cc781613bcf565b809150509250929050565b600060208284031215613ce457600080fd5b813561117c81613bcf565b600080600060608486031215613d0457600080fd5b8335613d0f81613af6565b9250602084013591506040840135613c5881613af6565b60008060408385031215613d3957600080fd5b8235613d4481613af6565b91506020830135613cc781613af6565b6020808252602f908201527f45524332303a2043616c6c6572206973206e6f7420706c6174666f726d20616e60408201526e32103737903832b936b4b9b9b4b7b760891b606082015260800190565b600060208284031215613db557600080fd5b5051919050565b600181811c90821680613dd057607f821691505b602082108103613df057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201613e6957613e69613e41565b5060010190565b600060208284031215613e8257600080fd5b815161117c81613af6565b600060208284031215613e9f57600080fd5b815161117c81613bcf565b80820180821115610f1657610f16613e41565b81810381811115610f1657610f16613e41565b8082028115828204841417610f1657610f16613e41565b600082613f0457634e487b7160e01b600052601260045260246000fd5b500490565b80516001600160701b0381168114613f2057600080fd5b919050565b600080600060608486031215613f3a57600080fd5b613f4384613f09565b9250613f5160208501613f09565b9150604084015163ffffffff81168114613c5857600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613fba5784516001600160a01b031683529383019391830191600101613f95565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613ff057600080fd5b8351925060208401519150604084015190509250925092565b6000825161401b818460208701613b4c565b919091019291505056fea264697066735822122014016a271a3f62f787bec7eed8b6bae0de127719f36cee7098661dd84cd1e97264736f6c63430008120033

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

000000000000000000000000ccde66922967dcbec62205fb12c3d118d1994913000000000000000000000000edd80a654b811e14275142a579ae609102c50472000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000000000000000012a05f200000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000064

-----Decoded View---------------
Arg [0] : fundAddress (address): 0xccDE66922967DcBec62205FB12c3D118d1994913
Arg [1] : marketingAddress (address): 0xedD80a654B811e14275142a579aE609102C50472
Arg [2] : usdtAddress (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7
Arg [3] : minNum (uint256): 5000000000
Arg [4] : killStartBlockNumber (uint256): 10
Arg [5] : killBotBatchBlockNumber (uint256): 100

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000ccde66922967dcbec62205fb12c3d118d1994913
Arg [1] : 000000000000000000000000edd80a654b811e14275142a579ae609102c50472
Arg [2] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [3] : 000000000000000000000000000000000000000000000000000000012a05f200
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000064


Deployed Bytecode Sourcemap

315:28453:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23633:507;;;;;;;;;;-1:-1:-1;23633:507:1;;;;;:::i;:::-;;:::i;:::-;;3980:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6127:169;;;;;;;;;;-1:-1:-1;6127:169:1;;;;;:::i;:::-;;:::i;:::-;;;1752:14:11;;1745:22;1727:41;;1715:2;1700:18;6127:169:1;1587:187:11;2211:41:1;;;;;;;;;;-1:-1:-1;2211:41:1;;;;;;;;;;;12781:289;;;;;;;;;;-1:-1:-1;12781:289:1;;;;;:::i;:::-;;:::i;1339:30::-;;;;;;;;;;;;;;;;;;;2803:25:11;;;2791:2;2776:18;1339:30:1;2657:177:11;27777:97:1;;;;;;;;;;-1:-1:-1;27777:97:1;;;;;:::i;:::-;;:::i;1681:38::-;;;;;;;;;;-1:-1:-1;1681:38:1;;;;;;;;1639:35;;;;;;;;;;;;;;;;1569:30;;;;;;;;;;;;;;;;5080:108;;;;;;;;;;-1:-1:-1;5168:12:1;;5080:108;;25512:156;;;;;;;;;;;;;:::i;6778:488::-;;;;;;;;;;-1:-1:-1;6778:488:1;;;;;:::i;:::-;;:::i;26988:99::-;;;;;;;;;;-1:-1:-1;26988:99:1;;;;;:::i;:::-;;:::i;11143:656::-;;;;;;;;;;-1:-1:-1;11143:656:1;;;;;:::i;:::-;;:::i;28365:115::-;;;;;;;;;;;;;:::i;4924:91::-;;;;;;;;;;-1:-1:-1;4998:9:1;;4924:91;;4998:9;;;;3418:36:11;;3406:2;3391:18;4924:91:1;3276:184:11;7675:218:1;;;;;;;;;;-1:-1:-1;7675:218:1;;;;;:::i;:::-;;:::i;8784:921::-;;;;;;;;;;;;;:::i;1061:33::-;;;;;;;;;;;;;;;;1726:46;;;;;;;;;;-1:-1:-1;1726:46:1;;;;;:::i;:::-;;;;;;;;;;;;;;1261:31;;;;;;;;;;;;;;;;12651:122;;;;;;;;;;-1:-1:-1;12651:122:1;;;;;:::i;:::-;;:::i;2074:41::-;;;;;;;;;;-1:-1:-1;2074:41:1;;;;;;;;;;;1495:30;;;;;;;;;;;;;;;;1299:33;;;;;;;;;;;;;;;;13078:93;;;;;;;;;;-1:-1:-1;13150:13:1;;13078:93;;27331:121;;;;;;;;;;-1:-1:-1;27331:121:1;;;;;:::i;:::-;;:::i;25676:164::-;;;;;;;;;;;;;:::i;28109:152::-;;;;;;;;;;-1:-1:-1;28109:152:1;;;;;:::i;:::-;;:::i;5251:127::-;;;;;;;;;;-1:-1:-1;5251:127:1;;;;;:::i;:::-;-1:-1:-1;;;;;5352:18:1;5325:7;5352:18;;;:9;:18;;;;;;;5251:127;1221:148:8;;;;;;;;;;;;;:::i;2163:41:1:-;;;;;;;;;;-1:-1:-1;2163:41:1;;;;;;;;;;;27460:91;;;;;;;;;;-1:-1:-1;27460:91:1;;;;;:::i;:::-;;:::i;9713:936::-;;;;;;;;;;;;;:::i;28269:88::-;;;;;;;;;;;;;:::i;25340:164::-;;;;;;;;;;;;;:::i;24148:390::-;;;;;;;;;;-1:-1:-1;24148:390:1;;;;;:::i;:::-;;:::i;27095:101::-;;;;;;;;;;-1:-1:-1;27095:101:1;;;;;:::i;:::-;;:::i;25040:137::-;;;;;;;;;;-1:-1:-1;25040:137:1;;;;;:::i;:::-;;:::i;579:79:8:-;;;;;;;;;;-1:-1:-1;617:7:8;644:6;579:79;;-1:-1:-1;;;;;644:6:8;;;4266:51:11;;4254:2;4239:18;579:79:8;4120:203:11;27882:109:1;;;;;;;;;;-1:-1:-1;27882:109:1;;;;;:::i;:::-;;:::i;25185:147::-;;;;;;;;;;-1:-1:-1;25185:147:1;;;;;:::i;:::-;;:::i;4190:95::-;;;;;;;;;;;;;:::i;1608:24::-;;;;;;;;;;;;;;;;1532:30;;;;;;;;;;;;;;;;27999:102;;;;;;;;;;-1:-1:-1;27999:102:1;;;;;:::i;:::-;;:::i;10657:478::-;;;;;;;;;;-1:-1:-1;10657:478:1;;;;;:::i;:::-;;:::i;8396:380::-;;;;;;;;;;-1:-1:-1;8396:380:1;;;;;:::i;:::-;;:::i;24750:282::-;;;;;;;;;;-1:-1:-1;24750:282:1;;;;;:::i;:::-;;:::i;5591:175::-;;;;;;;;;;-1:-1:-1;5591:175:1;;;;;:::i;:::-;;:::i;12529:114::-;;;;;;;;;;-1:-1:-1;12529:114:1;;;;;:::i;:::-;-1:-1:-1;;;;;12611:24:1;12587:4;12611:24;;;:18;:24;;;;;;;;;12529:114;1225:29;;;;;;;;;;;;;;;;12228:293;;;;;;;;;;-1:-1:-1;12228:293:1;;;;;:::i;:::-;;:::i;27559:93::-;;;;;;;;;;-1:-1:-1;27559:93:1;;;;;:::i;:::-;;:::i;1190:28::-;;;;;;;;;;;;;;;;28488:135;;;;;;;;;;-1:-1:-1;28488:135:1;;;;;:::i;:::-;;:::i;11807:171::-;;;;;;;;;;-1:-1:-1;11807:171:1;;;;;:::i;:::-;;:::i;1101:37::-;;;;;;;;;;;;;;;;1145:38;;;;;;;;;;;;;;;;27660:109;;;;;;;;;;-1:-1:-1;27660:109:1;;;;;:::i;:::-;;:::i;1022:32::-;;;;;;;;;;;;;;;;13179:103;;;;;;;;;;-1:-1:-1;13256:18:1;;13179:103;;12097:123;;;;;;;;;;-1:-1:-1;12097:123:1;;;;;:::i;:::-;;:::i;27204:119::-;;;;;;;;;;-1:-1:-1;27204:119:1;;;;;:::i;:::-;;:::i;11986:103::-;;;;;;;;;;-1:-1:-1;11986:103:1;;;;;:::i;:::-;;:::i;5829:151::-;;;;;;;;;;-1:-1:-1;5829:151:1;;;;;:::i;:::-;-1:-1:-1;;;;;5945:18:1;;;5918:7;5945:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5829:151;2122:34;;;;;;;;;;-1:-1:-1;2122:34:1;;;;;;;;;;;28631:134;;;;;;;;;;-1:-1:-1;28631:134:1;;;;;:::i;:::-;;:::i;1524:244:8:-;;;;;;;;;;-1:-1:-1;1524:244:8;;;;;:::i;:::-;;:::i;25848:156:1:-;;;;;;;;;;;;;:::i;23633:507::-;23740:9;;-1:-1:-1;;;;;23740:9:1;736:10:2;-1:-1:-1;;;;;23724:25:1;;23716:85;;;;-1:-1:-1;;;23716:85:1;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;23820:18:1;;23812:63;;;;-1:-1:-1;;;23812:63:1;;6046:2:11;23812:63:1;;;6028:21:11;;;6065:18;;;6058:30;6124:34;6104:18;;;6097:62;6176:18;;23812:63:1;5844:356:11;23812:63:1;23903:1;23894:6;:10;23886:59;;;;-1:-1:-1;;;23886:59:1;;6407:2:11;23886:59:1;;;6389:21:11;6446:2;6426:18;;;6419:30;6485:34;6465:18;;;6458:62;-1:-1:-1;;;6536:18:11;;;6529:34;6580:19;;23886:59:1;6205:400:11;23886:59:1;23974:38;;-1:-1:-1;;;23974:38:1;;24006:4;23974:38;;;4266:51:11;-1:-1:-1;;;;;23974:23:1;;;;;4239:18:11;;23974:38:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23964:6;:48;;23956:88;;;;-1:-1:-1;;;23956:88:1;;7001:2:11;23956:88:1;;;6983:21:11;7040:2;7020:18;;;7013:30;7079:29;7059:18;;;7052:57;7126:18;;23956:88:1;6799:351:11;23956:88:1;24083:48;;;-1:-1:-1;;;;;7347:32:11;;24083:48:1;;;7329:51:11;7396:18;;;;7389:34;;;24083:48:1;;;;;;;;;;7302:18:11;;;;24083:48:1;;;;;;;;-1:-1:-1;;;;;24083:48:1;-1:-1:-1;;;24083:48:1;;;24055:77;;24076:5;;24055:20;:77::i;:::-;;23633:507;;;:::o;3980:91::-;4025:13;4058:5;4051:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3980:91;:::o;6127:169::-;6210:4;6227:39;736:10:2;6250:7:1;6259:6;6227:8;:39::i;:::-;-1:-1:-1;6284:4:1;6127:169;;;;;:::o;12781:289::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;12887:9:1::1;12883:180;12902:17:::0;;::::1;12883:180;;;12974:6;12944:36;;:15;:26;12960:6;;12967:1;12960:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12944:26:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12944:26:1;;::::1;;:36;;;12941:111;;13030:6;13001:15;:26;13017:6;;13024:1;13017:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13001:26:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13001:26:1;:35;;-1:-1:-1;;13001:35:1::1;::::0;::::1;;::::0;;;::::1;::::0;;12941:111:::1;12921:3:::0;::::1;::::0;::::1;:::i;:::-;;;;12883:180;;27777:97:::0;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;27846:9:1::1;:20:::0;27777:97::o;25512:156::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;25590:1:1::1;25572:15;;:19;25564:66;;;::::0;-1:-1:-1;;;25564:66:1;;8786:2:11;25564:66:1::1;::::0;::::1;8768:21:11::0;8825:2;8805:18;;;8798:30;8864:34;8844:18;;;8837:62;-1:-1:-1;;;8915:18:11;;;8908:32;8957:19;;25564:66:1::1;8584:398:11::0;25564:66:1::1;25659:1;25641:15;:19:::0;25512:156::o;6778:488::-;6884:4;6901:36;6911:6;6919:9;6930:6;6901:9;:36::i;:::-;-1:-1:-1;;;;;6977:19:1;;6950:24;6977:19;;;:11;:19;;;;;;;;736:10:2;6977:33:1;;;;;;;;-1:-1:-1;;7024:31:1;;7021:216;;7099:6;7079:16;:26;;7071:79;;;;-1:-1:-1;;;7071:79:1;;9189:2:11;7071:79:1;;;9171:21:11;9228:2;9208:18;;;9201:30;9267:34;9247:18;;;9240:62;-1:-1:-1;;;9318:18:11;;;9311:38;9366:19;;7071:79:1;8987:404:11;7071:79:1;7165:60;7174:6;736:10:2;7196:28:1;:16;7217:6;7196:20;:28::i;:::-;7165:8;:60::i;:::-;7254:4;7247:11;;;6778:488;;;;;;:::o;26988:99::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;27058:11:1::1;:21:::0;26988:99::o;11143:656::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;11227:14:1::1;::::0;-1:-1:-1;;;;;11227:14:1::1;11224:389;;11386:16;:34:::0;;-1:-1:-1;;;;;;11386:34:1::1;11328:42;11386:34:::0;;::::1;::::0;;;11447:7:::1;617::8::0;644:6;-1:-1:-1;;;;;644:6:8;;579:79;11447:7:1::1;11435:9;:19:::0;;-1:-1:-1;;;;;;11435:19:1::1;-1:-1:-1::0;;;;;11435:19:1;;::::1;;::::0;;11469:44:::1;-1:-1:-1::0;11469:44:1;;;:18:::1;:44:::0;;;;;;;:51;;-1:-1:-1;;11469:51:1::1;-1:-1:-1::0;11469:51:1::1;::::0;;11555:4:::1;11535:26:::0;;:11:::1;:26:::0;;;;;:52;;;;;;;-1:-1:-1;;11535:66:1;;11224:389:::1;11706:18;:34:::0;;-1:-1:-1;;;;;11706:34:1;;::::1;-1:-1:-1::0;;;;;;11706:34:1;;::::1;::::0;::::1;::::0;;:18:::1;11751:33:::0;;;:13:::1;:33;::::0;;;;:40;;-1:-1:-1;;11751:40:1::1;11706:34:::0;11751:40:::1;::::0;;11143:656::o;28365:115::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;28427:12:1::1;::::0;28419:53:::1;::::0;-1:-1:-1;;;;;28427:12:1;;::::1;::::0;28450:21:::1;28419:53:::0;::::1;;;::::0;28427:12:::1;28419:53:::0;28427:12;28419:53;28450:21;28427:12;28419:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;28365:115::o:0;7675:218::-;736:10:2;7763:4:1;7812:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;7812:34:1;;;;;;;;;;7763:4;;7780:83;;7803:7;;7812:50;;7851:10;7812:38;:50::i;8784:921::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;8851:21:1::1;::::0;;;::::1;;;8850:22;8842:71;;;::::0;-1:-1:-1;;;8842:71:1;;9598:2:11;8842:71:1::1;::::0;::::1;9580:21:11::0;9637:2;9617:18;;;9610:30;9676:34;9656:18;;;9649:62;-1:-1:-1;;;9727:18:11;;;9720:35;9772:19;;8842:71:1::1;9396:401:11::0;8842:71:1::1;9034:16;:34:::0;;-1:-1:-1;;;;;;9034:34:1::1;8980:42;9034:34:::0;;::::1;::::0;;;9099:4:::1;8924:34;9079:26:::0;;;:11:::1;:26;::::0;;;;;;;:52;;;;;;;;;-1:-1:-1;;9079:66:1;;9193:25;;-1:-1:-1;;;9193:25:1;;;;8980:42;;9193:23:::1;::::0;:25:::1;::::0;;::::1;::::0;9079:26;;9193:25;;;;;8980:42;9193:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9175:55:1::1;;9239:4;9246:15;-1:-1:-1::0;;;;;9246:20:1::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9175:94;::::0;-1:-1:-1;;;;;;9175:94:1::1;::::0;;;;;;-1:-1:-1;;;;;10288:15:11;;;9175:94:1::1;::::0;::::1;10270:34:11::0;10340:15;;10320:18;;;10313:43;10205:18;;9175:94:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9158:14;:111:::0;;-1:-1:-1;;;;;;9158:111:1::1;-1:-1:-1::0;;;;;9158:111:1;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;9422:29:1;;;:13:::1;:29;::::0;;;;:36;;-1:-1:-1;;9422:36:1::1;-1:-1:-1::0;9422:36:1::1;::::0;;644:6:8;;9577:9:1::1;:19:::0;;-1:-1:-1;;;;;9577:19:1;;::::1;-1:-1:-1::0;;;;;;9577:19:1;;::::1;;::::0;;9607:44:::1;9577:9;9607:44:::0;;;:18:::1;:44:::0;;;;;:51;;-1:-1:-1;;9607:51:1::1;9577:19:::0;9607:51:::1;::::0;;9669:21:::1;:28:::0;;-1:-1:-1;;9669:28:1::1;::::0;::::1;::::0;;8784:921::o;12651:122::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;12735:21:1;;;::::1;;::::0;;;:15:::1;:21;::::0;;;;:30;;-1:-1:-1;;12735:30:1::1;::::0;::::1;;::::0;;;::::1;::::0;;12651:122::o;27331:121::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;27412:17:1::1;:32:::0;27331:121::o;25676:164::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;25741:15:1::1;::::0;25736:20;25728:63:::1;;;::::0;-1:-1:-1;;;25728:63:1;;10569:2:11;25728:63:1::1;::::0;::::1;10551:21:11::0;10608:2;10588:18;;;10581:30;10647:32;10627:18;;;10620:60;10697:18;;25728:63:1::1;10367:354:11::0;25728:63:1::1;25820:12;25802:15;:30:::0;25676:164::o;28109:152::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;28177:5:1::1;:12:::0;;-1:-1:-1;;;;;28177:12:1;;::::1;-1:-1:-1::0;;;;;;28177:12:1;;::::1;::::0;::::1;::::0;;:5:::1;28206:34:::0;;;:18:::1;:34:::0;;;;;:41;;-1:-1:-1;;28206:41:1::1;28177:12:::0;28206:41:::1;::::0;;28109:152::o;1221:148:8:-;791:6;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;1328:1:::1;1312:6:::0;;1291:40:::1;::::0;-1:-1:-1;;;;;1312:6:8;;::::1;::::0;1291:40:::1;::::0;1328:1;;1291:40:::1;1359:1;1342:19:::0;;-1:-1:-1;;;;;;1342:19:8::1;::::0;;1221:148::o;27460:91:1:-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;27526:9:1::1;:17:::0;27460:91::o;9713:936::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;9780:21:1::1;::::0;;;::::1;;;9779:22;9771:71;;;::::0;-1:-1:-1;;;9771:71:1;;10928:2:11;9771:71:1::1;::::0;::::1;10910:21:11::0;10967:2;10947:18;;;10940:30;11006:34;10986:18;;;10979:62;-1:-1:-1;;;11057:18:11;;;11050:35;11102:19;;9771:71:1::1;10726:401:11::0;9771:71:1::1;9856:14;::::0;-1:-1:-1;;;;;9856:14:1::1;9853:389;;10015:16;:34:::0;;-1:-1:-1;;;;;;10015:34:1::1;9957:42;10015:34:::0;;::::1;::::0;;;10076:7:::1;617::8::0;644:6;-1:-1:-1;;;;;644:6:8;;579:79;10076:7:1::1;10064:9;:19:::0;;-1:-1:-1;;;;;;10064:19:1::1;-1:-1:-1::0;;;;;10064:19:1;;::::1;;::::0;;10098:44:::1;-1:-1:-1::0;10098:44:1;;;:18:::1;:44:::0;;;;;;;:51;;-1:-1:-1;;10098:51:1::1;-1:-1:-1::0;10098:51:1::1;::::0;;10184:4:::1;10164:26:::0;;:11:::1;:26:::0;;;;;:52;;;;;;;-1:-1:-1;;10164:66:1;;9853:389:::1;10372:16;;;;;;;;;-1:-1:-1::0;;;;;10372:16:1::1;-1:-1:-1::0;;;;;10372:24:1::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10426:12;::::0;10354:85:::1;::::0;-1:-1:-1;;;10354:85:1;;10419:4:::1;10354:85;::::0;::::1;10270:34:11::0;-1:-1:-1;;;;;10426:12:1;;::::1;10320:18:11::0;;;10313:43;10354:56:1;::::1;::::0;::::1;::::0;10205:18:11;;10354:85:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10333:18;:106:::0;;-1:-1:-1;;;;;10333:106:1;;;::::1;-1:-1:-1::0;;;;;;10333:106:1;;::::1;::::0;::::1;::::0;;:18:::1;10450:33:::0;;;:13:::1;:33;::::0;;;;:40;;-1:-1:-1;;10450:40:1::1;10333:106:::0;10450:40:::1;::::0;;10613:21:::1;:28:::0;;-1:-1:-1;;10613:28:1::1;::::0;::::1;::::0;;9713:936::o;28269:88::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;28327:5:1::1;;;;;;;;;-1:-1:-1::0;;;;;28327:5:1::1;-1:-1:-1::0;;;;;28327:14:1::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25340:164::-:0;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;25405:15:1::1;::::0;25400:20;25392:63:::1;;;::::0;-1:-1:-1;;;25392:63:1;;11584:2:11;25392:63:1::1;::::0;::::1;11566:21:11::0;11623:2;11603:18;;;11596:30;11662:32;11642:18;;;11635:60;11712:18;;25392:63:1::1;11382:354:11::0;25392:63:1::1;25484:12;25466:15;:30:::0;25340:164::o;24148:390::-;24251:9;;-1:-1:-1;;;;;24251:9:1;736:10:2;-1:-1:-1;;;;;24235:25:1;;24227:85;;;;-1:-1:-1;;;24227:85:1;;;;;;;:::i;:::-;-1:-1:-1;;;;;24331:21:1;;24323:66;;;;-1:-1:-1;;;24323:66:1;;6046:2:11;24323:66:1;;;6028:21:11;;;6065:18;;;6058:30;6124:34;6104:18;;;6097:62;6176:18;;24323:66:1;5844:356:11;24323:66:1;24420:1;24408:9;:13;24400:65;;;;-1:-1:-1;;;24400:65:1;;11943:2:11;24400:65:1;;;11925:21:11;11982:2;11962:18;;;11955:30;12021:34;12001:18;;;11994:62;-1:-1:-1;;;12072:18:11;;;12065:37;12119:19;;24400:65:1;11741:403:11;24400:65:1;-1:-1:-1;;;;;24497:18:1;;;;;;:9;:18;;;;;;:33;;24520:9;24497:22;:33::i;:::-;-1:-1:-1;;;;;24476:18:1;;;;;;;:9;:18;;;;;:54;;;;-1:-1:-1;24148:390:1:o;27095:101::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;27166:12:1::1;:22:::0;27095:101::o;25040:137::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;25108:12:1::1;:19:::0;;-1:-1:-1;;;;;25108:19:1;;::::1;-1:-1:-1::0;;;;;;25108:19:1;;::::1;::::0;::::1;::::0;;:12:::1;25138:24:::0;;;:18:::1;:24:::0;;;;;:31;;-1:-1:-1;;25138:31:1::1;25108:19:::0;25138:31:::1;::::0;;25040:137::o;27882:109::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;27957:12:1::1;:26:::0;27882:109::o;25185:147::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;25258:17:1::1;:24:::0;;-1:-1:-1;;;;;25258:24:1;;::::1;-1:-1:-1::0;;;;;;25258:24:1;;::::1;::::0;::::1;::::0;;:17:::1;25293:24:::0;;;:18:::1;:24:::0;;;;;:31;;-1:-1:-1;;25293:31:1::1;25258:24:::0;25293:31:::1;::::0;;25185:147::o;4190:95::-;4237:13;4270:7;4263:14;;;;;:::i;27999:102::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;28065:19:1::1;:28:::0;;-1:-1:-1;;28065:28:1::1;::::0;::::1;;::::0;;;::::1;::::0;;27999:102::o;10657:478::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;10840:16:1::1;:34:::0;;-1:-1:-1;;;;;;10840:34:1;;::::1;10786:42;10840:34:::0;;::::1;::::0;;;10905:4:::1;10730:34;10885:26:::0;;;:11:::1;:26;::::0;;;;;;;:52;;;;;;;;-1:-1:-1;;10885:66:1;;10962:14:::1;:26:::0;;-1:-1:-1;;;;;10962:26:1;::::1;::::0;::::1;::::0;::::1;::::0;;10999:29;;;:13:::1;:29:::0;;;:36;;-1:-1:-1;;10999:36:1::1;10840:34:::0;10999:36:::1;::::0;;11058:7:::1;617::8::0;644:6;-1:-1:-1;;;;;644:6:8;;579:79;11058:7:1::1;11046:9;:19:::0;;-1:-1:-1;;;;;;11046:19:1::1;-1:-1:-1::0;;;;;11046:19:1;;::::1;;::::0;;11076:44:::1;-1:-1:-1::0;11076:44:1;;;:18:::1;:44:::0;;;;;:51;;-1:-1:-1;;11076:51:1::1;-1:-1:-1::0;11076:51:1::1;::::0;;-1:-1:-1;10657:478:1:o;8396:380::-;736:10:2;8489:4:1;8533:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8533:34:1;;;;;;;;;;8586:35;;;;8578:85;;;;-1:-1:-1;;;8578:85:1;;12351:2:11;8578:85:1;;;12333:21:11;12390:2;12370:18;;;12363:30;12429:34;12409:18;;;12402:62;-1:-1:-1;;;12480:18:11;;;12473:35;12525:19;;8578:85:1;12149:401:11;8578:85:1;8674:70;736:10:2;8697:7:1;8706:37;:16;8727:15;8706:20;:37::i;8674:70::-;-1:-1:-1;8764:4:1;;8396:380;-1:-1:-1;;;8396:380:1:o;24750:282::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;24848:14:1::1;::::0;-1:-1:-1;;;;;24848:14:1;;::::1;24840:22:::0;;::::1;::::0;24832:69:::1;;;::::0;-1:-1:-1;;;24832:69:1;;12757:2:11;24832:69:1::1;::::0;::::1;12739:21:11::0;12796:2;12776:18;;;12769:30;12835:34;12815:18;;;12808:62;-1:-1:-1;;;12886:18:11;;;12879:32;12928:19;;24832:69:1::1;12555:398:11::0;24832:69:1::1;24928:18;::::0;-1:-1:-1;;;;;24928:18:1;;::::1;24920:26:::0;;::::1;::::0;24912:73:::1;;;::::0;-1:-1:-1;;;24912:73:1;;13160:2:11;24912:73:1::1;::::0;::::1;13142:21:11::0;13199:2;13179:18;;;13172:30;13238:34;13218:18;;;13211:62;-1:-1:-1;;;13289:18:11;;;13282:32;13331:19;;24912:73:1::1;12958:398:11::0;24912:73:1::1;-1:-1:-1::0;;;;;24996:19:1;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;24996:28:1::1;::::0;::::1;;::::0;;;::::1;::::0;;24750:282::o;5591:175::-;5677:4;5694:42;736:10:2;5718:9:1;5729:6;5694:9;:42::i;12228:293::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;12332:9:1::1;12328:186;12347:17:::0;;::::1;12328:186;;;12422:6;12389:39;;:18;:29;12408:6;;12415:1;12408:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12389:29:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12389:29:1;;::::1;;:39;;;12386:117;;12481:6;12449:18;:29;12468:6;;12475:1;12468:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12449:29:1::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12449:29:1;:38;;-1:-1:-1;;12449:38:1::1;::::0;::::1;;::::0;;;::::1;::::0;;12386:117:::1;12366:3:::0;::::1;::::0;::::1;:::i;:::-;;;;12328:186;;27559:93:::0;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;27626:10:1::1;:18:::0;27559:93::o;28488:135::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;28581:34:1::1;::::0;-1:-1:-1;;;28581:34:1;;-1:-1:-1;;;;;7347:32:11;;;28581:34:1::1;::::0;::::1;7329:51:11::0;7396:18;;;7389:34;;;28581:22:1;::::1;::::0;::::1;::::0;7302:18:11;;28581:34:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11807:171::-:0;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;11884:21:1::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;11884:32:1;;::::1;;::::0;;11932:38:::1;::::0;::::1;::::0;::::1;::::0;11908:8;1752:14:11;1745:22;1727:41;;1715:2;1700:18;;1587:187;11932:38:1::1;;;;;;;;11807:171:::0;:::o;27660:109::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;27735:12:1::1;:26:::0;27660:109::o;12097:123::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;12179:24:1;;;::::1;;::::0;;;:18:::1;:24:::0;;;;;:33;;-1:-1:-1;;12179:33:1::1;::::0;::::1;;::::0;;;::::1;::::0;;12097:123::o;27204:119::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;27284:16:1::1;:31:::0;27204:119::o;11986:103::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;12056:14:1::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;12056:25:1;;::::1;::::0;;;::::1;::::0;;11986:103::o;28631:134::-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;28719:29:1::1;:38:::0;28631:134::o;1524:244:8:-;791:6;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;1613:22:8;::::1;1605:73;;;::::0;-1:-1:-1;;;1605:73:8;;13563:2:11;1605:73:8::1;::::0;::::1;13545:21:11::0;13602:2;13582:18;;;13575:30;13641:34;13621:18;;;13614:62;-1:-1:-1;;;13692:18:11;;;13685:36;13738:19;;1605:73:8::1;13361:402:11::0;1605:73:8::1;1715:6;::::0;;1694:38:::1;::::0;-1:-1:-1;;;;;1694:38:8;;::::1;::::0;1715:6;::::1;::::0;1694:38:::1;::::0;::::1;1743:6;:17:::0;;-1:-1:-1;;;;;;1743:17:8::1;-1:-1:-1::0;;;;;1743:17:8;;;::::1;::::0;;;::::1;::::0;;1524:244::o;25848:156:1:-;791:6:8;;-1:-1:-1;;;;;791:6:8;736:10:2;791:22:8;783:67;;;;-1:-1:-1;;;783:67:8;;;;;;;:::i;:::-;25926:1:1::1;25908:15;;:19;25900:66;;;::::0;-1:-1:-1;;;25900:66:1;;13970:2:11;25900:66:1::1;::::0;::::1;13952:21:11::0;14009:2;13989:18;;;13982:30;14048:34;14028:18;;;14021:62;-1:-1:-1;;;14099:18:11;;;14092:32;14141:19;;25900:66:1::1;13768:398:11::0;25900:66:1::1;25995:1;25977:15;:19:::0;25848:156::o;3550:175:0:-;3625:12;3657:60;3670:6;3678:4;3657:60;;;;;;;;;;;;;;;;;:12;:60::i;23279:346:1:-;-1:-1:-1;;;;;23381:19:1;;23373:68;;;;-1:-1:-1;;;23373:68:1;;14373:2:11;23373:68:1;;;14355:21:11;14412:2;14392:18;;;14385:30;14451:34;14431:18;;;14424:62;-1:-1:-1;;;14502:18:11;;;14495:34;14546:19;;23373:68:1;14171:400:11;23373:68:1;-1:-1:-1;;;;;23460:21:1;;23452:68;;;;-1:-1:-1;;;23452:68:1;;14778:2:11;23452:68:1;;;14760:21:11;14817:2;14797:18;;;14790:30;14856:34;14836:18;;;14829:62;-1:-1:-1;;;14907:18:11;;;14900:32;14949:19;;23452:68:1;14576:398:11;23452:68:1;-1:-1:-1;;;;;23533:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23585:32;;2803:25:11;;;23585:32:1;;2776:18:11;23585:32:1;;;;;;;;23279:346;;;:::o;13772:3162::-;13872:12;-1:-1:-1;;;;;13905:20:1;;13897:70;;;;-1:-1:-1;;;13897:70:1;;15181:2:11;13897:70:1;;;15163:21:11;15220:2;15200:18;;;15193:30;15259:34;15239:18;;;15232:62;-1:-1:-1;;;15310:18:11;;;15303:35;15355:19;;13897:70:1;14979:401:11;13897:70:1;-1:-1:-1;;;;;13986:23:1;;13978:71;;;;-1:-1:-1;;;13978:71:1;;15587:2:11;13978:71:1;;;15569:21:11;15626:2;15606:18;;;15599:30;15665:34;15645:18;;;15638:62;-1:-1:-1;;;15716:18:11;;;15709:33;15759:19;;13978:71:1;15385:399:11;13978:71:1;14077:1;14068:6;:10;14060:64;;;;-1:-1:-1;;;14060:64:1;;15991:2:11;14060:64:1;;;15973:21:11;16030:2;16010:18;;;16003:30;16069:34;16049:18;;;16042:62;-1:-1:-1;;;16120:18:11;;;16113:39;16169:19;;14060:64:1;15789:405:11;14060:64:1;-1:-1:-1;;;;;14144:23:1;;;;;;:15;:23;;;;;;;;14143:24;:55;;;;-1:-1:-1;;;;;;14172:26:1;;;;;;:15;:26;;;;;;;;14171:27;14143:55;14135:112;;;;-1:-1:-1;;;14135:112:1;;16401:2:11;14135:112:1;;;16383:21:11;16440:2;16420:18;;;16413:30;16479:34;16459:18;;;16452:62;-1:-1:-1;;;16530:18:11;;;16523:42;16582:19;;14135:112:1;16199:408:11;14135:112:1;-1:-1:-1;;;;;14284:17:1;;14260:21;14284:17;;;:9;:17;;;;;;14320:23;;;;14312:74;;;;-1:-1:-1;;;14312:74:1;;16814:2:11;14312:74:1;;;16796:21:11;16853:2;16833:18;;;16826:30;16892:34;16872:18;;;16865:62;-1:-1:-1;;;16943:18:11;;;16936:36;16989:19;;14312:74:1;16612:402:11;14312:74:1;-1:-1:-1;;;;;14404:26:1;;;;;;:18;:26;;;;;;;;14403:27;:61;;;;-1:-1:-1;;;;;;14435:29:1;;;;;;:18;:29;;;;;;;;14434:30;14403:61;14399:280;;;14481:21;14505:34;14533:5;14505:23;:13;14523:4;14505:17;:23::i;:::-;:27;;:34::i;:::-;14481:58;;14567:13;14558:6;:22;14554:85;;;14610:13;14601:22;;14554:85;14663:4;14653:14;;14466:213;14399:280;-1:-1:-1;;;;;14746:21:1;;14691:15;14746:21;;;:13;:21;;;;;;14691:15;;14746:21;;;:49;;-1:-1:-1;;;;;;14771:24:1;;;;;;:13;:24;;;;;;;;14746:49;14742:2099;;;-1:-1:-1;;;;;14817:26:1;;;;;;:18;:26;;;;;;;;14816:27;:61;;;;-1:-1:-1;;;;;;14848:29:1;;;;;;:18;:29;;;;;;;;14847:30;14816:61;14812:2018;;;-1:-1:-1;;;;;14902:21:1;;;;;;:13;:21;;;;;;;;14898:179;;;14961:20;:18;:20::i;:::-;14948:33;;14898:179;;;15040:17;:15;:17::i;:::-;15030:27;;14898:179;15104:15;;15099:1;:20;15095:170;;15156:15;;15152:1;:19;:47;;;;-1:-1:-1;;;;;;15175:24:1;;;;;;:13;:24;;;;;;;;15152:47;15144:101;;;;-1:-1:-1;;;15144:101:1;;17221:2:11;15144:101:1;;;17203:21:11;17260:2;17240:18;;;17233:30;17299:34;17279:18;;;17272:62;-1:-1:-1;;;17350:18:11;;;17343:39;17399:19;;15144:101:1;17019:405:11;15144:101:1;15322:15;;15302;;:36;;:19;:36::i;:::-;15287:12;:51;15283:168;;;15363:39;15376:6;15384:9;15395:6;15363:12;:39::i;:::-;15425:7;;;;13772:3162;;;:::o;15283:168::-;15495:19;;;;:65;;;;-1:-1:-1;;;;;;15539:21:1;;;;;;:13;:21;;;;;;;;15495:65;:143;;;;;15618:20;;15600:15;;:38;;;;:::i;:::-;15585:12;:53;15495:143;15469:530;;;15713:9;15701:22;;;;:11;:22;;;;;;15685:12;:38;15681:299;;15764:9;15752:22;;;;:11;:22;;;;;15777:12;15752:37;;15681:299;;;15846:9;:11;;;:9;:11;;;:::i;:::-;;;;;;15884:39;15897:6;15905:9;15916:6;15884:12;:39::i;15681:299::-;16019:15;16037:105;16131:10;;16037:89;16116:9;;16037:74;16093:17;;16037:51;16071:16;;16037:29;16053:12;;16037:11;;:15;;:29;;;;:::i;:::-;:33;;:51::i;:105::-;16286:4;16237:28;5352:18;;;:9;:18;;;;;;16362:29;;16019:123;;-1:-1:-1;5352:18:1;16338:53;;;;;;;16435:61;;-1:-1:-1;16480:16:1;;;;16479:17;16435:61;:110;;;;-1:-1:-1;;;;;;16521:24:1;;;;;;:13;:24;;;;;;;;16435:110;:156;;;;-1:-1:-1;16570:21:1;;;;;;;16435:156;16410:405;;;16657:29;;16634:52;;16748:47;16765:20;16787:7;16748:16;:47::i;:::-;14879:1951;;;14812:2018;16853:71;16868:6;16876:9;16887:6;16895:7;16904:10;16916:7;16853:14;:71::i;1257:163:10:-;1315:7;1344:1;1339;:6;;1331:42;;;;-1:-1:-1;;;1331:42:10;;17761:2:11;1331:42:10;;;17743:21:11;17800:2;17780:18;;;17773:30;17839:25;17819:18;;;17812:53;17882:18;;1331:42:10;17559:347:11;1331:42:10;1380:9;1392:5;1396:1;1392;:5;:::i;:::-;1380:17;1257:163;-1:-1:-1;;;;1257:163:10:o;1500:162::-;1558:7;;1586:5;1590:1;1586;:5;:::i;:::-;1574:17;;1611:1;1606;:6;;1598:41;;;;-1:-1:-1;;;1598:41:10;;18246:2:11;1598:41:10;;;18228:21:11;18285:2;18265:18;;;18258:30;-1:-1:-1;;;18304:18:11;;;18297:52;18366:18;;1598:41:10;18044:346:11;1867:181:10;1925:7;;1957:5;1961:1;1957;:5;:::i;:::-;1945:17;;1986:1;1981;:6;;1973:46;;;;-1:-1:-1;;;1973:46:10;;18597:2:11;1973:46:10;;;18579:21:11;18636:2;18616:18;;;18609:30;18675:29;18655:18;;;18648:57;18722:18;;1973:46:10;18395:351:11;3955:229:0;4092:12;4124:52;4146:6;4154:4;4160:1;4163:12;4124:21;:52::i;268:419:10:-;326:7;554:1;559;554:6;550:37;;-1:-1:-1;578:1:10;571:8;;550:37;595:9;607:5;611:1;607;:5;:::i;:::-;595:17;-1:-1:-1;636:1:10;627:5;631:1;595:17;627:5;:::i;:::-;:10;619:45;;;;-1:-1:-1;;;619:45:10;;19348:2:11;619:45:10;;;19330:21:11;19387:2;19367:18;;;19360:30;-1:-1:-1;;;19406:18:11;;;19399:52;19468:18;;619:45:10;19146:346:11;814:313:10;872:7;963:1;959;:5;951:48;;;;-1:-1:-1;;;951:48:10;;19699:2:11;951:48:10;;;19681:21:11;19738:2;19718:18;;;19711:30;19777:32;19757:18;;;19750:60;19827:18;;951:48:10;19497:354:11;951:48:10;1006:9;1018:5;1022:1;1018;:5;:::i;26012:485:1:-;26132:18;;26186:22;;;-1:-1:-1;;;26186:22:1;;;;26065:13;;-1:-1:-1;;;;;26132:18:1;;26065:13;;;;26132:18;;26186:20;;:22;;;;;;;;;;;;;;;26132:18;26186:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;26242:12:1;;-1:-1:-1;;;;;26162:46:1;;;;-1:-1:-1;26162:46:1;;;-1:-1:-1;;;;;;26242:12:1;26221:18;26310:4;26289:26;;26285:104;;;-1:-1:-1;26336:2:1;26285:104;;;-1:-1:-1;26375:2:1;26285:104;26412:47;;-1:-1:-1;;;26412:47:1;;-1:-1:-1;;;;;4284:32:11;;;26412:47:1;;;4266:51:11;26401:8:1;;26412:28;;;;;;4239:18:11;;26412:47:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26481:8;;;;;26012:485;-1:-1:-1;;;;;;26012:485:1:o;26505:475::-;26619:18;;26673:22;;;-1:-1:-1;;;26673:22:1;;;;26555:10;;-1:-1:-1;;;;;26619:18:1;;26555:10;;;;26619:18;;26673:20;;:22;;;;;;;;;;;;;;;26619:18;26673:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;26729:12:1;;-1:-1:-1;;;;;26649:46:1;;;;-1:-1:-1;26649:46:1;;;-1:-1:-1;;;;;;26729:12:1;26708:18;26797:4;26776:26;;26772:104;;;-1:-1:-1;26823:2:1;26772:104;;;-1:-1:-1;26862:2:1;26772:104;26899:47;;-1:-1:-1;;;26899:47:1;;-1:-1:-1;;;;;4284:32:11;;;26899:47:1;;;4266:51:11;26888:8:1;;26899:28;;;;;;4239:18:11;;26899:47:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26965:7;;;;;26505:475;-1:-1:-1;;;;;;26505:475:1:o;16942:414::-;-1:-1:-1;;;;;17089:17:1;;;;;;:9;:17;;;;;;:30;;17111:7;17089:21;:30::i;:::-;-1:-1:-1;;;;;17069:17:1;;;;;;:9;:17;;;;;:50;;;;17150:24;17170:3;17150:15;:7;17162:2;17150:11;:15::i;:24::-;17234:12;;17130:44;;-1:-1:-1;17185:96:1;;17213:6;;-1:-1:-1;;;;;17234:12:1;17130:44;17185:13;:96::i;:::-;17292:56;17306:6;17314:9;17325:22;:7;17337:9;17325:11;:22::i;:::-;17292:13;:56::i;21038:1803::-;2612:16;:23;;-1:-1:-1;;2612:23:1;2631:4;2612:23;;;21173:10:::1;::::0;21159:9:::1;::::0;2612:16;;21159:25:::1;::::0;:9;:13:::1;:25::i;:::-;21143:41:::0;-1:-1:-1;21195:16:1::1;21214:35;21241:7:::0;21214:22:::1;:11:::0;21143:41;21214:15:::1;:22::i;:35::-;21195:54:::0;-1:-1:-1;21260:20:1::1;21283:15;21195:54:::0;21296:1:::1;21283:12;:15::i;:::-;21260:38:::0;-1:-1:-1;21309:21:1::1;21333:26;:8:::0;21260:38;21333:12:::1;:26::i;:::-;21396:16;::::0;;21410:1:::1;21396:16:::0;;;;;::::1;::::0;;21309:50;;-1:-1:-1;21372:21:1::1;::::0;21396:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21396:16:1::1;21372:40;;21441:4;21423;21428:1;21423:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21423:23:1;;::::1;:7;::::0;;::::1;::::0;;;;;:23;21467:12:::1;::::0;21457:7;;21467:12;::::1;::::0;21457:4;;21467:12;;21457:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;21457:22:1;;::::1;:7;::::0;;::::1;::::0;;;;;:22;21490:16:::1;::::0;::::1;:70;21575:30;:11:::0;21591:13;21575:15:::1;:30::i;:::-;21663:5;::::0;21490:220:::1;::::0;-1:-1:-1;;;;;;21490:220:1::1;::::0;;;;;;::::1;::::0;;21620:1:::1;::::0;21636:4;;-1:-1:-1;;;;;21663:5:1::1;::::0;21684:15:::1;::::0;21490:220:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21741:25;21753:12;21763:1;21753:5;:9;;:12;;;;:::i;:::-;21741:7:::0;;:11:::1;:25::i;:::-;21800:12;::::0;21849:29:::1;::::0;-1:-1:-1;;;21849:29:1;;21872:4:::1;21849:29;::::0;::::1;4266:51:11::0;21731:35:1;;-1:-1:-1;;;;;;21800:12:1::1;::::0;21779:11:::1;::::0;21800:12;;21849:14:::1;::::0;4239:18:11;;21849:29:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21824:54;;21891:5;;;;;;;;;-1:-1:-1::0;;;;;21891:5:1::1;-1:-1:-1::0;;;;;21891:14:1::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;21942:29:1::1;::::0;-1:-1:-1;;;21942:29:1;;21965:4:::1;21942:29;::::0;::::1;4266:51:11::0;21920:19:1::1;::::0;21942:49:::1;::::0;21976:14;;-1:-1:-1;;;;;21942:14:1;::::1;::::0;::::1;::::0;4239:18:11;;21942:29:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33:::0;::::1;:49::i;:::-;21920:71;;22002:18;22023:59;22074:7;22023:46;22039:29;22055:12;;22039:11;;:15;;:29;;;;:::i;:::-;22023:11:::0;;:15:::1;:46::i;:59::-;22002:80;;22093:23;22119:69;22180:7;22119:56;22135:39;22156:17;;22135:16;;:20;;:39;;;;:::i;:::-;22119:11:::0;;:15:::1;:56::i;:69::-;22093:95:::0;-1:-1:-1;22202:14:1;;22199:86:::1;;22248:12;::::0;22234:39:::1;::::0;-1:-1:-1;;;22234:39:1;;-1:-1:-1;;;;;22248:12:1;;::::1;22234:39;::::0;::::1;7329:51:11::0;7396:18;;;7389:34;;;22234:13:1;;::::1;::::0;::::1;::::0;7302:18:11;;22234:39:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22199:86;22298:19:::0;;22295:101:::1;;22349:17;::::0;22335:49:::1;::::0;-1:-1:-1;;;22335:49:1;;-1:-1:-1;;;;;22349:17:1;;::::1;22335:49;::::0;::::1;7329:51:11::0;7396:18;;;7389:34;;;22335:13:1;;::::1;::::0;::::1;::::0;7302:18:11;;22335:49:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22295:101;22412:12:::0;;22408:426:::1;;22441:14;22458:48;22490:15:::0;22458:27:::1;:11:::0;22474:10;22458:15:::1;:27::i;:48::-;22441:65;;22534:1;22525:6;:10;:28;;;;-1:-1:-1::0;22539:14:1::1;::::0;;;::::1;;;22525:28;22521:302;;;22574:16;::::0;22641:12:::1;::::0;22684::::1;::::0;22574:158:::1;::::0;-1:-1:-1;;;22574:158:1;;22634:4:::1;22574:158;::::0;::::1;22018:34:11::0;-1:-1:-1;;;;;22641:12:1;;::::1;22068:18:11::0;;;22061:43;22120:18;;;22113:34;;;22163:18;;;22156:34;;;22574:16:1::1;22206:19:11::0;;;22199:35;;;22250:19;;;22243:35;22684:12:1;;::::1;22294:19:11::0;;;22287:44;22698:15:1::1;22347:19:11::0;;;22340:35;22574:16:1;::::1;::::0;:29:::1;::::0;21952:19:11;;22574:158:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;22756:51:1::1;::::0;;22899:25:11;;;22955:2;22940:18;;22933:34;;;22983:18;;;22976:34;;;22756:51:1::1;::::0;-1:-1:-1;22887:2:11;22872:18;22756:51:1::1;;;;;;;22521:302;22426:408;22408:426;-1:-1:-1::0;;2658:16:1;:24;;-1:-1:-1;;2658:24:1;;;-1:-1:-1;;;;;;;;;;21038:1803:1:o;17364:3442::-;-1:-1:-1;;;;;17617:17:1;;17567;17617;;;:9;:17;;;;;;:30;;17639:7;17617:21;:30::i;:::-;-1:-1:-1;;;;;17597:17:1;;;;;;:9;:17;;;;;:50;17660:3072;;;;17692:10;17688:3033;;;17736:36;17766:5;17736:25;17748:12;;17736:7;:11;;:25;;;;:::i;:36::-;17723:49;;;;:::i;:::-;;-1:-1:-1;17795:13:1;;17791:109;;17833:47;17847:6;17863:4;17870:9;17833:13;:47::i;:::-;17688:3033;;;17925:7;17921:2800;;;17966:33;17993:5;17966:22;17978:9;;17966:7;:11;;:22;;;;:::i;17921:2800::-;-1:-1:-1;;;;;18152:21:1;;;;;;:13;:21;;;;;;;;18148:2573;;;18199:18;18220:35;18249:5;18220:24;18232:11;;18220:7;:11;;:24;;;;:::i;:35::-;18199:56;;18274:23;18300:40;18334:5;18300:29;18312:16;;18300:7;:11;;:29;;;;:::i;:40::-;18274:66;;18359:16;18378:33;18405:5;18378:22;18390:9;;18378:7;:11;;:22;;;;:::i;:33::-;18359:52;-1:-1:-1;18359:52:1;18481:14;;18478:253;;18520:23;18533:10;18520:23;;:::i;:::-;18639:12;;18520:23;;-1:-1:-1;18566:145:1;;18606:6;;-1:-1:-1;;;;;18639:12:1;18678:10;18566:13;:145::i;:::-;18754:19;;18751:273;;18798:28;18811:15;18798:28;;:::i;:::-;18922:17;;18798:28;;-1:-1:-1;18849:155:1;;18889:6;;-1:-1:-1;;;;;18922:17:1;18966:15;18849:13;:155::i;:::-;19047:14;;19044:254;;19086:23;19099:10;19086:23;;:::i;:::-;;;19132:146;19172:6;19213:4;19245:10;19132:13;:146::i;:::-;18175:1141;;;;18148:2573;;;-1:-1:-1;;;;;19326:24:1;;;;;;:13;:24;;;;;;;;19322:1399;;;19377:18;19398:36;19428:5;19398:25;19410:12;;19398:7;:11;;:25;;;;:::i;:36::-;19377:57;;19453:23;19479:41;19514:5;19479:30;19491:17;;19479:7;:11;;:30;;;;:::i;:41::-;19453:67;;19539:16;19558:34;19586:5;19558:23;19570:10;;19558:7;:11;;:23;;;;:::i;19322:1399::-;20542:36;20572:5;20542:25;20554:12;;20542:7;:11;;:25;;;;:::i;:36::-;20529:49;;;;:::i;:::-;;-1:-1:-1;20601:13:1;;20597:109;;20639:47;20653:6;20669:4;20676:9;20639:13;:47::i;:::-;20742:56;20756:6;20764:9;20775:22;:7;20787:9;20775:11;:22::i;5075:510:0:-;5245:12;5303:5;5278:21;:30;;5270:81;;;;-1:-1:-1;;;5270:81:0;;23223:2:11;5270:81:0;;;23205:21:11;23262:2;23242:18;;;23235:30;23301:34;23281:18;;;23274:62;-1:-1:-1;;;23352:18:11;;;23345:36;23398:19;;5270:81:0;23021:402:11;5270:81:0;-1:-1:-1;;;;;1505:19:0;;;5362:60;;;;-1:-1:-1;;;5362:60:0;;23630:2:11;5362:60:0;;;23612:21:11;23669:2;23649:18;;;23642:30;23708:31;23688:18;;;23681:59;23757:18;;5362:60:0;23428:353:11;5362:60:0;5436:12;5450:23;5477:6;-1:-1:-1;;;;;5477:11:0;5496:5;5503:4;5477:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5435:73;;;;5526:51;5543:7;5552:10;5564:12;5526:16;:51::i;:::-;5519:58;5075:510;-1:-1:-1;;;;;;;5075:510:0:o;20814:216:1:-;-1:-1:-1;;;;;20951:13:1;;;;;;:9;:13;;;;;;:26;;20969:7;20951:17;:26::i;:::-;-1:-1:-1;;;;;20935:13:1;;;;;;;:9;:13;;;;;;;:42;;;;20993:29;;;;;;;;;;21014:7;2803:25:11;;2791:2;2776:18;;2657:177;7761:762:0;7911:12;7940:7;7936:580;;;-1:-1:-1;7971:10:0;7964:17;;7936:580;8085:17;;:21;8081:424;;8333:10;8327:17;8394:15;8381:10;8377:2;8373:19;8366:44;8081:424;8476:12;8469:20;;-1:-1:-1;;;8469:20:0;;;;;;;;:::i;14:131:11:-;-1:-1:-1;;;;;89:31:11;;79:42;;69:70;;135:1;132;125:12;150:456;227:6;235;243;296:2;284:9;275:7;271:23;267:32;264:52;;;312:1;309;302:12;264:52;351:9;338:23;370:31;395:5;370:31;:::i;:::-;420:5;-1:-1:-1;477:2:11;462:18;;449:32;490:33;449:32;490:33;:::i;:::-;150:456;;542:7;;-1:-1:-1;;;596:2:11;581:18;;;;568:32;;150:456::o;611:250::-;696:1;706:113;720:6;717:1;714:13;706:113;;;796:11;;;790:18;777:11;;;770:39;742:2;735:10;706:113;;;-1:-1:-1;;853:1:11;835:16;;828:27;611:250::o;866:396::-;1015:2;1004:9;997:21;978:4;1047:6;1041:13;1090:6;1085:2;1074:9;1070:18;1063:34;1106:79;1178:6;1173:2;1162:9;1158:18;1153:2;1145:6;1141:15;1106:79;:::i;:::-;1246:2;1225:15;-1:-1:-1;;1221:29:11;1206:45;;;;1253:2;1202:54;;866:396;-1:-1:-1;;866:396:11:o;1267:315::-;1335:6;1343;1396:2;1384:9;1375:7;1371:23;1367:32;1364:52;;;1412:1;1409;1402:12;1364:52;1451:9;1438:23;1470:31;1495:5;1470:31;:::i;:::-;1520:5;1572:2;1557:18;;;;1544:32;;-1:-1:-1;;;1267:315:11:o;1779:118::-;1865:5;1858:13;1851:21;1844:5;1841:32;1831:60;;1887:1;1884;1877:12;1902:750;1994:6;2002;2010;2063:2;2051:9;2042:7;2038:23;2034:32;2031:52;;;2079:1;2076;2069:12;2031:52;2119:9;2106:23;2148:18;2189:2;2181:6;2178:14;2175:34;;;2205:1;2202;2195:12;2175:34;2243:6;2232:9;2228:22;2218:32;;2288:7;2281:4;2277:2;2273:13;2269:27;2259:55;;2310:1;2307;2300:12;2259:55;2350:2;2337:16;2376:2;2368:6;2365:14;2362:34;;;2392:1;2389;2382:12;2362:34;2447:7;2440:4;2430:6;2427:1;2423:14;2419:2;2415:23;2411:34;2408:47;2405:67;;;2468:1;2465;2458:12;2405:67;2499:4;2491:13;;;;-1:-1:-1;2523:6:11;-1:-1:-1;;2564:20:11;;2551:34;2594:28;2551:34;2594:28;:::i;:::-;2641:5;2631:15;;;1902:750;;;;;:::o;2839:180::-;2898:6;2951:2;2939:9;2930:7;2926:23;2922:32;2919:52;;;2967:1;2964;2957:12;2919:52;-1:-1:-1;2990:23:11;;2839:180;-1:-1:-1;2839:180:11:o;3024:247::-;3083:6;3136:2;3124:9;3115:7;3111:23;3107:32;3104:52;;;3152:1;3149;3142:12;3104:52;3191:9;3178:23;3210:31;3235:5;3210:31;:::i;3465:382::-;3530:6;3538;3591:2;3579:9;3570:7;3566:23;3562:32;3559:52;;;3607:1;3604;3597:12;3559:52;3646:9;3633:23;3665:31;3690:5;3665:31;:::i;:::-;3715:5;-1:-1:-1;3772:2:11;3757:18;;3744:32;3785:30;3744:32;3785:30;:::i;:::-;3834:7;3824:17;;;3465:382;;;;;:::o;4328:241::-;4384:6;4437:2;4425:9;4416:7;4412:23;4408:32;4405:52;;;4453:1;4450;4443:12;4405:52;4492:9;4479:23;4511:28;4533:5;4511:28;:::i;4574:456::-;4651:6;4659;4667;4720:2;4708:9;4699:7;4695:23;4691:32;4688:52;;;4736:1;4733;4726:12;4688:52;4775:9;4762:23;4794:31;4819:5;4794:31;:::i;:::-;4844:5;-1:-1:-1;4896:2:11;4881:18;;4868:32;;-1:-1:-1;4952:2:11;4937:18;;4924:32;4965:33;4924:32;4965:33;:::i;5035:388::-;5103:6;5111;5164:2;5152:9;5143:7;5139:23;5135:32;5132:52;;;5180:1;5177;5170:12;5132:52;5219:9;5206:23;5238:31;5263:5;5238:31;:::i;:::-;5288:5;-1:-1:-1;5345:2:11;5330:18;;5317:32;5358:33;5317:32;5358:33;:::i;5428:411::-;5630:2;5612:21;;;5669:2;5649:18;;;5642:30;5708:34;5703:2;5688:18;;5681:62;-1:-1:-1;;;5774:2:11;5759:18;;5752:45;5829:3;5814:19;;5428:411::o;6610:184::-;6680:6;6733:2;6721:9;6712:7;6708:23;6704:32;6701:52;;;6749:1;6746;6739:12;6701:52;-1:-1:-1;6772:16:11;;6610:184;-1:-1:-1;6610:184:11:o;7434:380::-;7513:1;7509:12;;;;7556;;;7577:61;;7631:4;7623:6;7619:17;7609:27;;7577:61;7684:2;7676:6;7673:14;7653:18;7650:38;7647:161;;7730:10;7725:3;7721:20;7718:1;7711:31;7765:4;7762:1;7755:15;7793:4;7790:1;7783:15;7647:161;;7434:380;;;:::o;7819:356::-;8021:2;8003:21;;;8040:18;;;8033:30;8099:34;8094:2;8079:18;;8072:62;8166:2;8151:18;;7819:356::o;8180:127::-;8241:10;8236:3;8232:20;8229:1;8222:31;8272:4;8269:1;8262:15;8296:4;8293:1;8286:15;8312:127;8373:10;8368:3;8364:20;8361:1;8354:31;8404:4;8401:1;8394:15;8428:4;8425:1;8418:15;8444:135;8483:3;8504:17;;;8501:43;;8524:18;;:::i;:::-;-1:-1:-1;8571:1:11;8560:13;;8444:135::o;9802:251::-;9872:6;9925:2;9913:9;9904:7;9900:23;9896:32;9893:52;;;9941:1;9938;9931:12;9893:52;9973:9;9967:16;9992:31;10017:5;9992:31;:::i;11132:245::-;11199:6;11252:2;11240:9;11231:7;11227:23;11223:32;11220:52;;;11268:1;11265;11258:12;11220:52;11300:9;11294:16;11319:28;11341:5;11319:28;:::i;17429:125::-;17494:9;;;17515:10;;;17512:36;;;17528:18;;:::i;17911:128::-;17978:9;;;17999:11;;;17996:37;;;18013:18;;:::i;18751:168::-;18824:9;;;18855;;18872:15;;;18866:22;;18852:37;18842:71;;18893:18;;:::i;18924:217::-;18964:1;18990;18980:132;;19034:10;19029:3;19025:20;19022:1;19015:31;19069:4;19066:1;19059:15;19097:4;19094:1;19087:15;18980:132;-1:-1:-1;19126:9:11;;18924:217::o;19856:188::-;19935:13;;-1:-1:-1;;;;;19977:42:11;;19967:53;;19957:81;;20034:1;20031;20024:12;19957:81;19856:188;;;:::o;20049:450::-;20136:6;20144;20152;20205:2;20193:9;20184:7;20180:23;20176:32;20173:52;;;20221:1;20218;20211:12;20173:52;20244:40;20274:9;20244:40;:::i;:::-;20234:50;;20303:49;20348:2;20337:9;20333:18;20303:49;:::i;:::-;20293:59;;20395:2;20384:9;20380:18;20374:25;20439:10;20432:5;20428:22;20421:5;20418:33;20408:61;;20465:1;20462;20455:12;20636:980;20898:4;20946:3;20935:9;20931:19;20977:6;20966:9;20959:25;21003:2;21041:6;21036:2;21025:9;21021:18;21014:34;21084:3;21079:2;21068:9;21064:18;21057:31;21108:6;21143;21137:13;21174:6;21166;21159:22;21212:3;21201:9;21197:19;21190:26;;21251:2;21243:6;21239:15;21225:29;;21272:1;21282:195;21296:6;21293:1;21290:13;21282:195;;;21361:13;;-1:-1:-1;;;;;21357:39:11;21345:52;;21452:15;;;;21417:12;;;;21393:1;21311:9;21282:195;;;-1:-1:-1;;;;;;;21533:32:11;;;;21528:2;21513:18;;21506:60;-1:-1:-1;;;21597:3:11;21582:19;21575:35;21494:3;20636:980;-1:-1:-1;;;20636:980:11:o;22386:306::-;22474:6;22482;22490;22543:2;22531:9;22522:7;22518:23;22514:32;22511:52;;;22559:1;22556;22549:12;22511:52;22588:9;22582:16;22572:26;;22638:2;22627:9;22623:18;22617:25;22607:35;;22682:2;22671:9;22667:18;22661:25;22651:35;;22386:306;;;;;:::o;23786:287::-;23915:3;23953:6;23947:13;23969:66;24028:6;24023:3;24016:4;24008:6;24004:17;23969:66;:::i;:::-;24051:16;;;;;23786:287;-1:-1:-1;;23786:287:11:o

Swarm Source

ipfs://14016a271a3f62f787bec7eed8b6bae0de127719f36cee7098661dd84cd1e972
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.