ETH Price: $2,430.91 (+5.91%)

Token

hent.ai (hentai)
 

Overview

Max Total Supply

690,000,000 hentai

Holders

55

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
hentai

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-08
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Protections {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract hentai is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 690_000_000;
    string constant private _name = "hent.ai";
    string constant private _symbol = "hentai";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    Fees public _taxRates = Fees({
        buyFee: 1000,
        sellFee: 2500,
        transferFee: 1000
    });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant public maxRoundtripTax = 2500;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0xb8e7eeE98F137358DfB22E483f4BceD038f00f6b);
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 2) / 100;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Protections protections;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;

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

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else if (block.chainid == 42161) {
            dexRouter = IRouter02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
        } else {
            revert();
        }


        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    
    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

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

    function approveContractContingency() external onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            protections.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            require(!lpPairs[pair], "Pair already added to list.");
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            protections.setLpPair(pair, true);
        }
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!tradingEnabled);
        require(initializer != address(this), "Can't be self.");
        protections = Protections(initializer);
    }

    function isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

    function removeSniper(address account) external onlyOwner {
        protections.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        protections.setProtections(_antiSnipe, _antiBlock);
    }

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed roundtrip maximum.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setWallets(address payable marketing) external onlyOwner {
        require(marketing != address(0), "Cannot be zero address.");
        marketingWallet = payable(marketing);
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    function getMaxTX() external view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() external view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "Just don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(presale, true);
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
            presaleAddresses[router] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(router, true);
            setExcludedFromFees(presale, true);
        }
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(protections)
            && to != address(protections);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
            if (buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if (to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled
                   && !presaleAddresses[to]
                   && !presaleAddresses[from]
                ) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 amtBalance = address(this).balance;
        bool success;
        (success,) = marketingWallet.call{value: address(this).balance, gas: 55000}("");
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            if (address(protections) == address(0)){
                protections = Protections(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(protections) == address(0)){
            protections = Protections(address(this));
        }
        try protections.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try protections.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
        launchStamp = block.timestamp;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    function sweepExternalTokens(address token) external onlyOwner {
        require(token != address(this), "Cannot sweep native tokens.");
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try protections.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        if (address(protections) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006002556009805460ff1916600117905560e06040526103e860808190526109c460a05260c052600a80546503e809c403e865ffffffffffff19909116178155600d8054600161ff0160a01b03191673b8e7eee98f137358dfb22e483f4bced038f00f6b17905560118190556064906200007d9060129062000795565b6200008d906329209080620007ad565b6200009a906002620007ad565b620000a69190620007c7565b60125560646012600a620000bb919062000795565b620000cb906329209080620007ad565b620000d8906002620007ad565b620000e49190620007c7565b6013556014805461ffff19169055601680546001600160a01b03191633179055620001126012600a62000795565b62000122906329209080620007ad565b601680546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001766012600a62000795565b62000186906329209080620007ad565b60405190815260200160405180910390a346603803620001ce57600b8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e001790556200030d565b466061036200020557600b8054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d1001790556200030d565b4660011480620002155750466004145b80620002215750466003145b806200022d5750466005145b156200026157600b8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d001790556200030d565b4661a86a036200029957600b8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d4001790556200030d565b4660fa03620002d057600b8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c29001790556200030d565b4661a4b1036200030857600b8054610100600160a81b031916741b02da8cb0d097eb8d57a175b88c7d8b47997506001790556200030d565b600080fd5b600b60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000361573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003879190620007ea565b6001600160a01b031663c9c65396600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040f9190620007ea565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200045c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004829190620007ea565b600c80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055601654600b54620004dc9291821691610100909104166000196200057f565b600b54620004fd90309061010090046001600160a01b03166000196200057f565b601680546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548216831790559554909416835260049091529020805490921617905562000815565b6001600160a01b038316620005d15760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200061f5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620005c8565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006d7578160001904821115620006bb57620006bb62000680565b80851615620006c957918102915b93841c93908002906200069b565b509250929050565b600082620006f0575060016200078f565b81620006ff575060006200078f565b8160018114620007185760028114620007235762000743565b60019150506200078f565b60ff84111562000737576200073762000680565b50506001821b6200078f565b5060208310610133831016604e8410600b841016171562000768575081810a6200078f565b62000774838362000696565b80600019048211156200078b576200078b62000680565b0290505b92915050565b6000620007a660ff841683620006df565b9392505050565b80820281158282048414176200078f576200078f62000680565b600082620007e557634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007fd57600080fd5b81516001600160a01b0381168114620007a657600080fd5b61408280620008256000396000f3fe6080604052600436106103905760003560e01c80634fb2e45d116101dc5780638a8c523c11610102578063bfc2fc35116100a0578063ee5d9c2d1161006f578063ee5d9c2d14610aac578063fb78680d14610ac1578063fdb78c0e14610ae1578063feadde9c14610b0257600080fd5b8063bfc2fc3514610a06578063dd62ed3e14610a26578063eafb5a3c14610a6c578063eb50e70e14610a8c57600080fd5b8063ab558e4d116100dc578063ab558e4d146109cc578063b1b08f7114610621578063b3d514fb14610621578063b7df8b36146109ec57600080fd5b80638a8c523c1461096857806395d89b411461097d578063a9059cbb146109ac57600080fd5b80636ebd00781161017a57806378648edf1161014957806378648edf1461090057806380c581d114610915578063893d20e8146109355780638a63bd9b1461095357600080fd5b80636ebd00781461088057806370a0823114610895578063715018a6146108cb57806375f0a874146108e057600080fd5b8063590ffdce116101b6578063590ffdce146107f15780635a6f0918146108115780635c24b074146108275780635cce86cd1461084757600080fd5b80634fb2e45d146107795780634fbee1931461079957806350a8e016146107d257600080fd5b80632610eaca116102c157806333251a0b1161025f57806346ea7ac81161022e57806346ea7ac8146107095780634ada218b1461071f5780634bbb93eb146107395780634e718e481461075957600080fd5b806333251a0b1461068957806336fddb04146106a95780633f3cf56c146106c9578063452ed4f1146106e957600080fd5b80632b28fc7a1161029b5780632b28fc7a146106215780632e8fa82114610637578063313ce5671461064d57806332cde6641461066957600080fd5b80632610eaca146105d657806328577751146105f65780632b112e491461060c57600080fd5b8063095ea7b31161032e57806313b4a7f41161030857806313b4a7f41461056157806318160ddd1461058157806323b872dd1461059657806326003957146105b657600080fd5b8063095ea7b3146104f35780630dcbcf1c146105135780630fa604e41461054c57600080fd5b8063069d955f1161036a578063069d955f1461041557806306fdde031461046b5780630758d924146104a457806307dd79e0146104c957600080fd5b806303fd2a451461039c5780630445b667146103cf578063044df726146103f357600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103db57600080fd5b506103e5600e5481565b6040519081526020016103c6565b3480156103ff57600080fd5b5061041361040e3660046139b2565b610b22565b005b34801561042157600080fd5b50600a546104469061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103c6565b34801561047757600080fd5b5060408051808201909152600781526668656e742e616960c81b60208201525b6040516103c691906139eb565b3480156104b057600080fd5b50600b546103b29061010090046001600160a01b031681565b3480156104d557600080fd5b50600b546104e39060ff1681565b60405190151581526020016103c6565b3480156104ff57600080fd5b506104e361050e366004613a4e565b610be0565b34801561051f57600080fd5b506104e361052e366004613a7a565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055857600080fd5b506103e5610bf7565b34801561056d57600080fd5b5061041361057c366004613a97565b610c17565b34801561058d57600080fd5b506103e5610dd5565b3480156105a257600080fd5b506104e36105b1366004613ac5565b610df1565b3480156105c257600080fd5b506104136105d1366004613b06565b610e69565b3480156105e257600080fd5b506104136105f1366004613bfe565b610fb2565b34801561060257600080fd5b506103e560115481565b34801561061857600080fd5b506103e5611167565b34801561062d57600080fd5b506103e56107d081565b34801561064357600080fd5b506103e5600f5481565b34801561065957600080fd5b50604051601281526020016103c6565b34801561067557600080fd5b50610413610684366004613cd7565b6111e5565b34801561069557600080fd5b506104136106a4366004613a7a565b611398565b3480156106b557600080fd5b506104136106c4366004613d1a565b611449565b3480156106d557600080fd5b506104136106e4366004613b06565b6114bc565b3480156106f557600080fd5b50600c546103b2906001600160a01b031681565b34801561071557600080fd5b506103e56109c481565b34801561072b57600080fd5b506014546104e39060ff1681565b34801561074557600080fd5b506103e5610754366004613d38565b611611565b34801561076557600080fd5b50610413610774366004613d38565b611645565b34801561078557600080fd5b50610413610794366004613a7a565b6116e3565b3480156107a557600080fd5b506104e36107b4366004613a7a565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107de57600080fd5b506014546104e390610100900460ff1681565b3480156107fd57600080fd5b5061041361080c366004613d1a565b6118e5565b34801561081d57600080fd5b506103e560155481565b34801561083357600080fd5b50610413610842366004613a7a565b611958565b34801561085357600080fd5b506104e3610862366004613a7a565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561088c57600080fd5b506103e5611a32565b3480156108a157600080fd5b506103e56108b0366004613a7a565b6001600160a01b031660009081526020819052604090205490565b3480156108d757600080fd5b50610413611a4d565b3480156108ec57600080fd5b50600d546103b2906001600160a01b031681565b34801561090c57600080fd5b50610413611afa565b34801561092157600080fd5b50610413610930366004613d1a565b611b51565b34801561094157600080fd5b506016546001600160a01b03166103b2565b34801561095f57600080fd5b506104e3611d3b565b34801561097457600080fd5b50610413611dab565b34801561098957600080fd5b5060408051808201909152600681526568656e74616960d01b6020820152610497565b3480156109b857600080fd5b506104e36109c7366004613a4e565b612001565b3480156109d857600080fd5b506104136109e7366004613a7a565b612018565b3480156109f857600080fd5b506010546104e39060ff1681565b348015610a1257600080fd5b50610413610a213660046139b2565b6121a2565b348015610a3257600080fd5b506103e5610a41366004613a97565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a7857600080fd5b50610413610a87366004613a7a565b61224d565b348015610a9857600080fd5b50610413610aa7366004613a7a565b61264e565b348015610ab857600080fd5b5061041361270e565b348015610acd57600080fd5b50610413610adc366004613d51565b6127ea565b348015610aed57600080fd5b50600d546104e390600160a81b900460ff1681565b348015610b0e57600080fd5b50610413610b1d366004613d1a565b612aac565b6016546001600160a01b03163314610b6f5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d83398151915260448201526064015b60405180910390fd5b60145460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610bc457600080fd5b505af1158015610bd8573d6000803e3d6000fd5b505050505050565b6000610bed338484612b1f565b5060015b92915050565b6000610c056012600a613e7d565b601354610c129190613e8c565b905090565b6016546001600160a01b03163314610c5f5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b60095460ff16610c6e57600080fd5b6001600160a01b0382163014801590610c9057506001600160a01b0381163014155b8015610caa5750600c546001600160a01b03838116911614155b8015610cc45750600c546001600160a01b03828116911614155b610cfe5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610b66565b806001600160a01b0316826001600160a01b031603610d60576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610d5c9082906118e5565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610dca9083906118e5565b610d5c8160016118e5565b6000610de36012600a613e7d565b610c12906329209080613eae565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610e56576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610e50908490613ec5565b90915550505b610e61848484612c18565b949350505050565b6016546001600160a01b03163314610eb15760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6064610ebf6012600a613e7d565b610ecd906329209080613eae565b610ed79190613e8c565b8183610ee56012600a613e7d565b610ef3906329209080613eae565b610efd9190613eae565b610f079190613e8c565b1015610f7b5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610b66565b8082610f896012600a613e7d565b610f97906329209080613eae565b610fa19190613eae565b610fab9190613e8c565b6013555050565b6016546001600160a01b03163314610ffa5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b805182511461104b5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b66565b60005b82518161ffff161015611162576110676012600a613e7d565b828261ffff168151811061107d5761107d613ed8565b602002602001015161108f9190613eae565b3360009081526020819052604090205410156110ed5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610b66565b61114f33848361ffff168151811061110757611107613ed8565b60200260200101516012600a61111d9190613e7d565b858561ffff168151811061113357611133613ed8565b60200260200101516111459190613eae565b6000806001613138565b508061115a81613eee565b91505061104e565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546111c19190613f0f565b6111cd6012600a613e7d565b6111db906329209080613eae565b610c129190613ec5565b6016546001600160a01b0316331461122d5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b600b5460ff16156112805760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610b66565b6107d08361ffff161115801561129c57506107d08261ffff1611155b80156112ae57506107d08161ffff1611155b6112fa5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b66565b6109c46113078385613f22565b61ffff1611156113595760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610b66565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6016546001600160a01b031633146113e05760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6014546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561142e57600080fd5b505af1158015611442573d6000803e3d6000fd5b5050505050565b6016546001600160a01b031633146114915760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146115045760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6103e86115136012600a613e7d565b611521906329209080613eae565b61152c906005613eae565b6115369190613e8c565b81836115446012600a613e7d565b611552906329209080613eae565b61155c9190613eae565b6115669190613e8c565b10156115da5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b66565b80826115e86012600a613e7d565b6115f6906329209080613eae565b6116009190613eae565b61160a9190613e8c565b6012555050565b600c546001600160a01b03166000908152602081905260408120546127109061163b908490613eae565b610bf19190613e8c565b6016546001600160a01b0316331461168d5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b60968111156116de5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610b66565b601155565b6016546001600160a01b0316331461172b5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6001600160a01b0381166117a75760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b66565b61deac196001600160a01b038216016118285760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b66565b60165461183f906001600160a01b031660006118e5565b61184a8160016118e5565b6016546001600160a01b031660009081526020819052604090205415611893576016546001600160a01b031660008181526020819052604090205461189191908390611145565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b0316331461192d5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146119a05760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b60145460ff16156119b057600080fd5b306001600160a01b03821603611a085760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b66565b601480546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000611a406012600a613e7d565b601254610c129190613e8c565b6016546001600160a01b03163314611a955760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b601654611aac906001600160a01b031660006118e5565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b03163314611b425760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b600b805460ff19166001179055565b6016546001600160a01b03163314611b995760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b80611c0c576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610bc457600080fd5b60025415611c73576203f48060025442611c269190613ec5565b11611c735760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610b66565b6001600160a01b03821660009081526001602052604090205460ff1615611cdc5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b66565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610baa565b6016546000906001600160a01b03163314611d865760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b600b54611da590309061010090046001600160a01b0316600019612b1f565b50600190565b6016546001600160a01b03163314611df35760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b60145460ff1615611e465760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b66565b601454610100900460ff16611e9d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b66565b6014546201000090046001600160a01b0316611ecd576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611f3f57600080fd5b505af1925050508015611f50575060015b50601454600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611fd3575060408051601f3d908101601f19168201909252611fd091810190613f44565b60015b15611fe257600e91909155600f555b6014805460ff1990811660011790915560098054909116905542601555565b600061200e338484612c18565b5060019392505050565b6016546001600160a01b031633146120605760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b306001600160a01b038216036120b85760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b66565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561210f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121339190613f68565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561217e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111629190613f81565b6016546001600160a01b031633146121ea5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146122955760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b601454610100900460ff16156122ed5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b66565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123569190613f9e565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c79190613f9e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612412573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124369190613f9e565b600c546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166125cc57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613f9e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125369190613f9e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612583573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a79190613f9e565b600c80546001600160a01b0319166001600160a01b03929092169190911790556125e8565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff191690911790559154611162923092910416600019612b1f565b6016546001600160a01b031633146126965760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6001600160a01b0381166126ec5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b66565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b031633146127565760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b601454610100900460ff16156127ae5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b66565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156127e7573d6000803e3d6000fd5b50565b6016546001600160a01b031633146128325760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b82846128406012600a613e7d565b61284e906329209080613eae565b6128589190613eae565b6128629190613e8c565b600e5580826128736012600a613e7d565b612881906329209080613eae565b61288b9190613eae565b6128959190613e8c565b600f819055600e5411156128f55760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b66565b600c546001600160a01b03166000908152602081905260409020546127109061291f906096613eae565b6129299190613e8c565b600f5411156129865760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b66565b620f42406129966012600a613e7d565b6129a4906329209080613eae565b6129ae9190613e8c565b600f541015612a165760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b66565b620f4240612a266012600a613e7d565b612a34906329209080613eae565b612a3e9190613e8c565b600e541015612aa65760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b66565b50505050565b6016546001600160a01b03163314612af45760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612b6b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b66565b6001600160a01b038216612bb75760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b66565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612c7e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b66565b6001600160a01b038316612ce05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b66565b60008211612d425760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b66565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612d705760019250612d9e565b6001600160a01b03861660009081526001602052604090205460ff1615612d9a5760019150612d9e565b5060015b612da887876133eb565b156130355760145460ff16612ea95780612e045760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b66565b6001600160a01b03871660009081526005602052604090205460ff16158015612e4657506001600160a01b03861660009081526005602052604090205460ff16155b15612ea95760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b66565b8280612eb25750815b15612f61576001600160a01b03871660009081526007602052604090205460ff16158015612ef957506001600160a01b03861660009081526007602052604090205460ff16155b15612f6157601254851115612f615760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b66565b600b546001600160a01b038781166101009092041614801590612f82575081155b15613035576001600160a01b03861660009081526007602052604090205460ff166130355760135485612fca886001600160a01b031660009081526020819052604090205490565b612fd49190613f0f565b11156130355760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b66565b811561311f57600d54600160a01b900460ff1661311f57600d54600160a81b900460ff16801561307e57506001600160a01b03861660009081526008602052604090205460ff16155b80156130a357506001600160a01b03871660009081526008602052604090205460ff16155b1561311f5730600090815260208190526040902054600e54811061311d57600f5460105460ff161561310757601154600c546001600160a01b0316600090815260208190526040902054612710916130fa91613eae565b6131049190613e8c565b90505b808210613112578091505b61311b82613502565b505b505b61312d878787868686613138565b979650505050505050565b600061314487876133eb565b156131de5760145460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156131c7575060408051601f3d908101601f191682019092526131c491810190613f81565b60015b6131d057600080fd5b9050806131dc57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061322057506001600160a01b03871660009081526006602052604090205460ff165b15613229575060005b6001600160a01b03881660009081526020819052604081208054889290613251908490613ec5565b9091555060009050816132645786613270565b6132708987878a61374b565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546132a69190613f0f565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132f291815260200190565b60405180910390a3601454610100900460ff166133dc576133138989613860565b601454610100900460ff16158015613330575061333089896133eb565b801561335557506001600160a01b03891660009081526005602052604090205460ff16155b801561337a57506001600160a01b03881660009081526005602052604090205460ff16155b8015613384575083155b156133dc5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b66565b50600198975050505050505050565b6016546000906001600160a01b0384811691161480159061341a57506016546001600160a01b03838116911614155b801561343157506016546001600160a01b03163214155b801561345657506001600160a01b03821660009081526004602052604090205460ff16155b801561347b57506001600160a01b03831660009081526004602052604090205460ff16155b801561349257506001600160a01b03821661dead14155b80156134a657506001600160a01b03821615155b80156134bb57506001600160a01b0383163014155b80156134db57506014546001600160a01b03848116620100009092041614155b80156134fb57506014546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461357857306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106135ad576135ad613ed8565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136449190613f9e565b8160018151811061365757613657613ed8565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac947906136a4908590600090869030904290600401613fbb565b600060405180830381600087803b1580156136be57600080fd5b505af19250505080156136cf575060015b6136d9575061373b565b600d5460405147916000916001600160a01b039091169061d6d890479084818181858888f193505050503d806000811461372f576040519150601f19603f3d011682016040523d82523d6000602084013e613734565b606091505b5050505050505b50600d805460ff60a01b19169055565b60008084156137615750600a5461ffff1661378b565b831561377a5750600a5462010000900461ffff1661378b565b50600a54640100000000900461ffff165b8060000361379c5782915050610e61565b6014546201000090046001600160a01b0316301480156137c6575046600114806137c65750466038145b156137d057506111945b60006127106137df8386613eae565b6137e99190613e8c565b90508015613856573060009081526020819052604081208054839290613810908490613f0f565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61312d8185613ec5565b601454610100900460ff16156138c45760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b66565b6138ce82826133eb565b1580156138e85750600c546001600160a01b038281169116145b15610d5c576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613960576014805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612241565b80151581146127e757600080fd5b600080604083850312156139c557600080fd5b82356139d0816139a4565b915060208301356139e0816139a4565b809150509250929050565b600060208083528351808285015260005b81811015613a18578581018301518582016040015282016139fc565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146127e757600080fd5b60008060408385031215613a6157600080fd5b8235613a6c81613a39565b946020939093013593505050565b600060208284031215613a8c57600080fd5b81356134fb81613a39565b60008060408385031215613aaa57600080fd5b8235613ab581613a39565b915060208301356139e081613a39565b600080600060608486031215613ada57600080fd5b8335613ae581613a39565b92506020840135613af581613a39565b929592945050506040919091013590565b60008060408385031215613b1957600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613b6757613b67613b28565b604052919050565b600067ffffffffffffffff821115613b8957613b89613b28565b5060051b60200190565b600082601f830112613ba457600080fd5b81356020613bb9613bb483613b6f565b613b3e565b82815260059290921b84018101918181019086841115613bd857600080fd5b8286015b84811015613bf35780358352918301918301613bdc565b509695505050505050565b60008060408385031215613c1157600080fd5b823567ffffffffffffffff80821115613c2957600080fd5b818501915085601f830112613c3d57600080fd5b81356020613c4d613bb483613b6f565b82815260059290921b84018101918181019089841115613c6c57600080fd5b948201945b83861015613c93578535613c8481613a39565b82529482019490820190613c71565b96505086013592505080821115613ca957600080fd5b50613cb685828601613b93565b9150509250929050565b803561ffff81168114613cd257600080fd5b919050565b600080600060608486031215613cec57600080fd5b613cf584613cc0565b9250613d0360208501613cc0565b9150613d1160408501613cc0565b90509250925092565b60008060408385031215613d2d57600080fd5b82356139d081613a39565b600060208284031215613d4a57600080fd5b5035919050565b60008060008060808587031215613d6757600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613dd4578160001904821115613dba57613dba613d83565b80851615613dc757918102915b93841c9390800290613d9e565b509250929050565b600082613deb57506001610bf1565b81613df857506000610bf1565b8160018114613e0e5760028114613e1857613e34565b6001915050610bf1565b60ff841115613e2957613e29613d83565b50506001821b610bf1565b5060208310610133831016604e8410600b8410161715613e57575081810a610bf1565b613e618383613d99565b8060001904821115613e7557613e75613d83565b029392505050565b60006134fb60ff841683613ddc565b600082613ea957634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610bf157610bf1613d83565b81810381811115610bf157610bf1613d83565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613f0557613f05613d83565b6001019392505050565b80820180821115610bf157610bf1613d83565b61ffff818116838216019080821115613f3d57613f3d613d83565b5092915050565b60008060408385031215613f5757600080fd5b505080516020909101519092909150565b600060208284031215613f7a57600080fd5b5051919050565b600060208284031215613f9357600080fd5b81516134fb816139a4565b600060208284031215613fb057600080fd5b81516134fb81613a39565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561400b5784516001600160a01b031683529383019391830191600101613fe6565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a264697066735822122077b758e34a81707f9280613084cab33cd81ac24941dc37c3691c12e74b6b87d464736f6c63430008120033

Deployed Bytecode

0x6080604052600436106103905760003560e01c80634fb2e45d116101dc5780638a8c523c11610102578063bfc2fc35116100a0578063ee5d9c2d1161006f578063ee5d9c2d14610aac578063fb78680d14610ac1578063fdb78c0e14610ae1578063feadde9c14610b0257600080fd5b8063bfc2fc3514610a06578063dd62ed3e14610a26578063eafb5a3c14610a6c578063eb50e70e14610a8c57600080fd5b8063ab558e4d116100dc578063ab558e4d146109cc578063b1b08f7114610621578063b3d514fb14610621578063b7df8b36146109ec57600080fd5b80638a8c523c1461096857806395d89b411461097d578063a9059cbb146109ac57600080fd5b80636ebd00781161017a57806378648edf1161014957806378648edf1461090057806380c581d114610915578063893d20e8146109355780638a63bd9b1461095357600080fd5b80636ebd00781461088057806370a0823114610895578063715018a6146108cb57806375f0a874146108e057600080fd5b8063590ffdce116101b6578063590ffdce146107f15780635a6f0918146108115780635c24b074146108275780635cce86cd1461084757600080fd5b80634fb2e45d146107795780634fbee1931461079957806350a8e016146107d257600080fd5b80632610eaca116102c157806333251a0b1161025f57806346ea7ac81161022e57806346ea7ac8146107095780634ada218b1461071f5780634bbb93eb146107395780634e718e481461075957600080fd5b806333251a0b1461068957806336fddb04146106a95780633f3cf56c146106c9578063452ed4f1146106e957600080fd5b80632b28fc7a1161029b5780632b28fc7a146106215780632e8fa82114610637578063313ce5671461064d57806332cde6641461066957600080fd5b80632610eaca146105d657806328577751146105f65780632b112e491461060c57600080fd5b8063095ea7b31161032e57806313b4a7f41161030857806313b4a7f41461056157806318160ddd1461058157806323b872dd1461059657806326003957146105b657600080fd5b8063095ea7b3146104f35780630dcbcf1c146105135780630fa604e41461054c57600080fd5b8063069d955f1161036a578063069d955f1461041557806306fdde031461046b5780630758d924146104a457806307dd79e0146104c957600080fd5b806303fd2a451461039c5780630445b667146103cf578063044df726146103f357600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103db57600080fd5b506103e5600e5481565b6040519081526020016103c6565b3480156103ff57600080fd5b5061041361040e3660046139b2565b610b22565b005b34801561042157600080fd5b50600a546104469061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103c6565b34801561047757600080fd5b5060408051808201909152600781526668656e742e616960c81b60208201525b6040516103c691906139eb565b3480156104b057600080fd5b50600b546103b29061010090046001600160a01b031681565b3480156104d557600080fd5b50600b546104e39060ff1681565b60405190151581526020016103c6565b3480156104ff57600080fd5b506104e361050e366004613a4e565b610be0565b34801561051f57600080fd5b506104e361052e366004613a7a565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055857600080fd5b506103e5610bf7565b34801561056d57600080fd5b5061041361057c366004613a97565b610c17565b34801561058d57600080fd5b506103e5610dd5565b3480156105a257600080fd5b506104e36105b1366004613ac5565b610df1565b3480156105c257600080fd5b506104136105d1366004613b06565b610e69565b3480156105e257600080fd5b506104136105f1366004613bfe565b610fb2565b34801561060257600080fd5b506103e560115481565b34801561061857600080fd5b506103e5611167565b34801561062d57600080fd5b506103e56107d081565b34801561064357600080fd5b506103e5600f5481565b34801561065957600080fd5b50604051601281526020016103c6565b34801561067557600080fd5b50610413610684366004613cd7565b6111e5565b34801561069557600080fd5b506104136106a4366004613a7a565b611398565b3480156106b557600080fd5b506104136106c4366004613d1a565b611449565b3480156106d557600080fd5b506104136106e4366004613b06565b6114bc565b3480156106f557600080fd5b50600c546103b2906001600160a01b031681565b34801561071557600080fd5b506103e56109c481565b34801561072b57600080fd5b506014546104e39060ff1681565b34801561074557600080fd5b506103e5610754366004613d38565b611611565b34801561076557600080fd5b50610413610774366004613d38565b611645565b34801561078557600080fd5b50610413610794366004613a7a565b6116e3565b3480156107a557600080fd5b506104e36107b4366004613a7a565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107de57600080fd5b506014546104e390610100900460ff1681565b3480156107fd57600080fd5b5061041361080c366004613d1a565b6118e5565b34801561081d57600080fd5b506103e560155481565b34801561083357600080fd5b50610413610842366004613a7a565b611958565b34801561085357600080fd5b506104e3610862366004613a7a565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561088c57600080fd5b506103e5611a32565b3480156108a157600080fd5b506103e56108b0366004613a7a565b6001600160a01b031660009081526020819052604090205490565b3480156108d757600080fd5b50610413611a4d565b3480156108ec57600080fd5b50600d546103b2906001600160a01b031681565b34801561090c57600080fd5b50610413611afa565b34801561092157600080fd5b50610413610930366004613d1a565b611b51565b34801561094157600080fd5b506016546001600160a01b03166103b2565b34801561095f57600080fd5b506104e3611d3b565b34801561097457600080fd5b50610413611dab565b34801561098957600080fd5b5060408051808201909152600681526568656e74616960d01b6020820152610497565b3480156109b857600080fd5b506104e36109c7366004613a4e565b612001565b3480156109d857600080fd5b506104136109e7366004613a7a565b612018565b3480156109f857600080fd5b506010546104e39060ff1681565b348015610a1257600080fd5b50610413610a213660046139b2565b6121a2565b348015610a3257600080fd5b506103e5610a41366004613a97565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a7857600080fd5b50610413610a87366004613a7a565b61224d565b348015610a9857600080fd5b50610413610aa7366004613a7a565b61264e565b348015610ab857600080fd5b5061041361270e565b348015610acd57600080fd5b50610413610adc366004613d51565b6127ea565b348015610aed57600080fd5b50600d546104e390600160a81b900460ff1681565b348015610b0e57600080fd5b50610413610b1d366004613d1a565b612aac565b6016546001600160a01b03163314610b6f5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d83398151915260448201526064015b60405180910390fd5b60145460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610bc457600080fd5b505af1158015610bd8573d6000803e3d6000fd5b505050505050565b6000610bed338484612b1f565b5060015b92915050565b6000610c056012600a613e7d565b601354610c129190613e8c565b905090565b6016546001600160a01b03163314610c5f5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b60095460ff16610c6e57600080fd5b6001600160a01b0382163014801590610c9057506001600160a01b0381163014155b8015610caa5750600c546001600160a01b03838116911614155b8015610cc45750600c546001600160a01b03828116911614155b610cfe5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610b66565b806001600160a01b0316826001600160a01b031603610d60576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610d5c9082906118e5565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610dca9083906118e5565b610d5c8160016118e5565b6000610de36012600a613e7d565b610c12906329209080613eae565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610e56576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610e50908490613ec5565b90915550505b610e61848484612c18565b949350505050565b6016546001600160a01b03163314610eb15760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6064610ebf6012600a613e7d565b610ecd906329209080613eae565b610ed79190613e8c565b8183610ee56012600a613e7d565b610ef3906329209080613eae565b610efd9190613eae565b610f079190613e8c565b1015610f7b5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610b66565b8082610f896012600a613e7d565b610f97906329209080613eae565b610fa19190613eae565b610fab9190613e8c565b6013555050565b6016546001600160a01b03163314610ffa5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b805182511461104b5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b66565b60005b82518161ffff161015611162576110676012600a613e7d565b828261ffff168151811061107d5761107d613ed8565b602002602001015161108f9190613eae565b3360009081526020819052604090205410156110ed5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610b66565b61114f33848361ffff168151811061110757611107613ed8565b60200260200101516012600a61111d9190613e7d565b858561ffff168151811061113357611133613ed8565b60200260200101516111459190613eae565b6000806001613138565b508061115a81613eee565b91505061104e565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546111c19190613f0f565b6111cd6012600a613e7d565b6111db906329209080613eae565b610c129190613ec5565b6016546001600160a01b0316331461122d5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b600b5460ff16156112805760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610b66565b6107d08361ffff161115801561129c57506107d08261ffff1611155b80156112ae57506107d08161ffff1611155b6112fa5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b66565b6109c46113078385613f22565b61ffff1611156113595760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610b66565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6016546001600160a01b031633146113e05760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6014546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561142e57600080fd5b505af1158015611442573d6000803e3d6000fd5b5050505050565b6016546001600160a01b031633146114915760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146115045760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6103e86115136012600a613e7d565b611521906329209080613eae565b61152c906005613eae565b6115369190613e8c565b81836115446012600a613e7d565b611552906329209080613eae565b61155c9190613eae565b6115669190613e8c565b10156115da5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b66565b80826115e86012600a613e7d565b6115f6906329209080613eae565b6116009190613eae565b61160a9190613e8c565b6012555050565b600c546001600160a01b03166000908152602081905260408120546127109061163b908490613eae565b610bf19190613e8c565b6016546001600160a01b0316331461168d5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b60968111156116de5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610b66565b601155565b6016546001600160a01b0316331461172b5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6001600160a01b0381166117a75760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b66565b61deac196001600160a01b038216016118285760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b66565b60165461183f906001600160a01b031660006118e5565b61184a8160016118e5565b6016546001600160a01b031660009081526020819052604090205415611893576016546001600160a01b031660008181526020819052604090205461189191908390611145565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b0316331461192d5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146119a05760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b60145460ff16156119b057600080fd5b306001600160a01b03821603611a085760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b66565b601480546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000611a406012600a613e7d565b601254610c129190613e8c565b6016546001600160a01b03163314611a955760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b601654611aac906001600160a01b031660006118e5565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b03163314611b425760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b600b805460ff19166001179055565b6016546001600160a01b03163314611b995760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b80611c0c576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610bc457600080fd5b60025415611c73576203f48060025442611c269190613ec5565b11611c735760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610b66565b6001600160a01b03821660009081526001602052604090205460ff1615611cdc5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b66565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610baa565b6016546000906001600160a01b03163314611d865760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b600b54611da590309061010090046001600160a01b0316600019612b1f565b50600190565b6016546001600160a01b03163314611df35760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b60145460ff1615611e465760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b66565b601454610100900460ff16611e9d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b66565b6014546201000090046001600160a01b0316611ecd576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611f3f57600080fd5b505af1925050508015611f50575060015b50601454600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611fd3575060408051601f3d908101601f19168201909252611fd091810190613f44565b60015b15611fe257600e91909155600f555b6014805460ff1990811660011790915560098054909116905542601555565b600061200e338484612c18565b5060019392505050565b6016546001600160a01b031633146120605760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b306001600160a01b038216036120b85760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b66565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561210f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121339190613f68565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561217e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111629190613f81565b6016546001600160a01b031633146121ea5760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146122955760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b601454610100900460ff16156122ed5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b66565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123569190613f9e565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c79190613f9e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612412573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124369190613f9e565b600c546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166125cc57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c59190613f9e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125369190613f9e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612583573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a79190613f9e565b600c80546001600160a01b0319166001600160a01b03929092169190911790556125e8565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff191690911790559154611162923092910416600019612b1f565b6016546001600160a01b031633146126965760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6001600160a01b0381166126ec5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b66565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b031633146127565760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b601454610100900460ff16156127ae5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b66565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156127e7573d6000803e3d6000fd5b50565b6016546001600160a01b031633146128325760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b82846128406012600a613e7d565b61284e906329209080613eae565b6128589190613eae565b6128629190613e8c565b600e5580826128736012600a613e7d565b612881906329209080613eae565b61288b9190613eae565b6128959190613e8c565b600f819055600e5411156128f55760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b66565b600c546001600160a01b03166000908152602081905260409020546127109061291f906096613eae565b6129299190613e8c565b600f5411156129865760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b66565b620f42406129966012600a613e7d565b6129a4906329209080613eae565b6129ae9190613e8c565b600f541015612a165760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b66565b620f4240612a266012600a613e7d565b612a34906329209080613eae565b612a3e9190613e8c565b600e541015612aa65760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b66565b50505050565b6016546001600160a01b03163314612af45760405162461bcd60e51b8152602060048201526011602482015260008051602061402d8339815191526044820152606401610b66565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612b6b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b66565b6001600160a01b038216612bb75760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b66565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612c7e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b66565b6001600160a01b038316612ce05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b66565b60008211612d425760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b66565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612d705760019250612d9e565b6001600160a01b03861660009081526001602052604090205460ff1615612d9a5760019150612d9e565b5060015b612da887876133eb565b156130355760145460ff16612ea95780612e045760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b66565b6001600160a01b03871660009081526005602052604090205460ff16158015612e4657506001600160a01b03861660009081526005602052604090205460ff16155b15612ea95760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b66565b8280612eb25750815b15612f61576001600160a01b03871660009081526007602052604090205460ff16158015612ef957506001600160a01b03861660009081526007602052604090205460ff16155b15612f6157601254851115612f615760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b66565b600b546001600160a01b038781166101009092041614801590612f82575081155b15613035576001600160a01b03861660009081526007602052604090205460ff166130355760135485612fca886001600160a01b031660009081526020819052604090205490565b612fd49190613f0f565b11156130355760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b66565b811561311f57600d54600160a01b900460ff1661311f57600d54600160a81b900460ff16801561307e57506001600160a01b03861660009081526008602052604090205460ff16155b80156130a357506001600160a01b03871660009081526008602052604090205460ff16155b1561311f5730600090815260208190526040902054600e54811061311d57600f5460105460ff161561310757601154600c546001600160a01b0316600090815260208190526040902054612710916130fa91613eae565b6131049190613e8c565b90505b808210613112578091505b61311b82613502565b505b505b61312d878787868686613138565b979650505050505050565b600061314487876133eb565b156131de5760145460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156131c7575060408051601f3d908101601f191682019092526131c491810190613f81565b60015b6131d057600080fd5b9050806131dc57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061322057506001600160a01b03871660009081526006602052604090205460ff165b15613229575060005b6001600160a01b03881660009081526020819052604081208054889290613251908490613ec5565b9091555060009050816132645786613270565b6132708987878a61374b565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546132a69190613f0f565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132f291815260200190565b60405180910390a3601454610100900460ff166133dc576133138989613860565b601454610100900460ff16158015613330575061333089896133eb565b801561335557506001600160a01b03891660009081526005602052604090205460ff16155b801561337a57506001600160a01b03881660009081526005602052604090205460ff16155b8015613384575083155b156133dc5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b66565b50600198975050505050505050565b6016546000906001600160a01b0384811691161480159061341a57506016546001600160a01b03838116911614155b801561343157506016546001600160a01b03163214155b801561345657506001600160a01b03821660009081526004602052604090205460ff16155b801561347b57506001600160a01b03831660009081526004602052604090205460ff16155b801561349257506001600160a01b03821661dead14155b80156134a657506001600160a01b03821615155b80156134bb57506001600160a01b0383163014155b80156134db57506014546001600160a01b03848116620100009092041614155b80156134fb57506014546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461357857306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106135ad576135ad613ed8565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613620573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136449190613f9e565b8160018151811061365757613657613ed8565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac947906136a4908590600090869030904290600401613fbb565b600060405180830381600087803b1580156136be57600080fd5b505af19250505080156136cf575060015b6136d9575061373b565b600d5460405147916000916001600160a01b039091169061d6d890479084818181858888f193505050503d806000811461372f576040519150601f19603f3d011682016040523d82523d6000602084013e613734565b606091505b5050505050505b50600d805460ff60a01b19169055565b60008084156137615750600a5461ffff1661378b565b831561377a5750600a5462010000900461ffff1661378b565b50600a54640100000000900461ffff165b8060000361379c5782915050610e61565b6014546201000090046001600160a01b0316301480156137c6575046600114806137c65750466038145b156137d057506111945b60006127106137df8386613eae565b6137e99190613e8c565b90508015613856573060009081526020819052604081208054839290613810908490613f0f565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61312d8185613ec5565b601454610100900460ff16156138c45760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b66565b6138ce82826133eb565b1580156138e85750600c546001600160a01b038281169116145b15610d5c576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613960576014805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612241565b80151581146127e757600080fd5b600080604083850312156139c557600080fd5b82356139d0816139a4565b915060208301356139e0816139a4565b809150509250929050565b600060208083528351808285015260005b81811015613a18578581018301518582016040015282016139fc565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146127e757600080fd5b60008060408385031215613a6157600080fd5b8235613a6c81613a39565b946020939093013593505050565b600060208284031215613a8c57600080fd5b81356134fb81613a39565b60008060408385031215613aaa57600080fd5b8235613ab581613a39565b915060208301356139e081613a39565b600080600060608486031215613ada57600080fd5b8335613ae581613a39565b92506020840135613af581613a39565b929592945050506040919091013590565b60008060408385031215613b1957600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613b6757613b67613b28565b604052919050565b600067ffffffffffffffff821115613b8957613b89613b28565b5060051b60200190565b600082601f830112613ba457600080fd5b81356020613bb9613bb483613b6f565b613b3e565b82815260059290921b84018101918181019086841115613bd857600080fd5b8286015b84811015613bf35780358352918301918301613bdc565b509695505050505050565b60008060408385031215613c1157600080fd5b823567ffffffffffffffff80821115613c2957600080fd5b818501915085601f830112613c3d57600080fd5b81356020613c4d613bb483613b6f565b82815260059290921b84018101918181019089841115613c6c57600080fd5b948201945b83861015613c93578535613c8481613a39565b82529482019490820190613c71565b96505086013592505080821115613ca957600080fd5b50613cb685828601613b93565b9150509250929050565b803561ffff81168114613cd257600080fd5b919050565b600080600060608486031215613cec57600080fd5b613cf584613cc0565b9250613d0360208501613cc0565b9150613d1160408501613cc0565b90509250925092565b60008060408385031215613d2d57600080fd5b82356139d081613a39565b600060208284031215613d4a57600080fd5b5035919050565b60008060008060808587031215613d6757600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613dd4578160001904821115613dba57613dba613d83565b80851615613dc757918102915b93841c9390800290613d9e565b509250929050565b600082613deb57506001610bf1565b81613df857506000610bf1565b8160018114613e0e5760028114613e1857613e34565b6001915050610bf1565b60ff841115613e2957613e29613d83565b50506001821b610bf1565b5060208310610133831016604e8410600b8410161715613e57575081810a610bf1565b613e618383613d99565b8060001904821115613e7557613e75613d83565b029392505050565b60006134fb60ff841683613ddc565b600082613ea957634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610bf157610bf1613d83565b81810381811115610bf157610bf1613d83565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613f0557613f05613d83565b6001019392505050565b80820180821115610bf157610bf1613d83565b61ffff818116838216019080821115613f3d57613f3d613d83565b5092915050565b60008060408385031215613f5757600080fd5b505080516020909101519092909150565b600060208284031215613f7a57600080fd5b5051919050565b600060208284031215613f9357600080fd5b81516134fb816139a4565b600060208284031215613fb057600080fd5b81516134fb81613a39565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561400b5784516001600160a01b031683529383019391830191600101613fe6565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a264697066735822122077b758e34a81707f9280613084cab33cd81ac24941dc37c3691c12e74b6b87d464736f6c63430008120033

Deployed Bytecode Sourcemap

4027:22206:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5481:73;;;;;;;;;;;;5512:42;5481:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5481:73:0;;;;;;;;5730:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5730:28:0;245:177:1;14466:153:0;;;;;;;;;;-1:-1:-1;14466:153:0;;;;;:::i;:::-;;:::i;:::-;;5010:112;;;;;;;;;;-1:-1:-1;5010:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5010:112:0;931:365:1;10248:80:0;;;;;;;;;;-1:-1:-1;10320:5:0;;;;;;;;;;;;-1:-1:-1;;;10320:5:0;;;;10248:80;;;;;;;:::i;5420:26::-;;;;;;;;;;-1:-1:-1;5420:26:0;;;;;;;-1:-1:-1;;;;;5420:26:0;;;5387;;;;;;;;;;-1:-1:-1;5387:26:0;;;;;;;;;;;2267:14:1;;2260:22;2242:41;;2230:2;2215:18;5387:26:0;2102:187:1;10856:161:0;;;;;;;;;;-1:-1:-1;10856:161:0;;;;;:::i;:::-;;:::i;13895:140::-;;;;;;;;;;-1:-1:-1;13895:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13993:34:0;13969:4;13993:34;;;:25;:34;;;;;;;;;13895:140;16237:114;;;;;;;;;;;;;:::i;17759:809::-;;;;;;;;;;-1:-1:-1;17759:809:0;;;;;:::i;:::-;;:::i;9983:83::-;;;;;;;;;;;;;:::i;11526:306::-;;;;;;;;;;-1:-1:-1;11526:306:0;;;;;:::i;:::-;;:::i;15849:264::-;;;;;;;;;;-1:-1:-1;15849:264:0;;;;;:::i;:::-;;:::i;23908:447::-;;;;;;;;;;-1:-1:-1;23908:447:0;;;;;:::i;:::-;;:::i;5838:33::-;;;;;;;;;;;;;;;;14199:141;;;;;;;;;;;;;:::i;5131:42::-;;;;;;;;;;;;5169:4;5131:42;;5765:25;;;;;;;;;;;;;;;;10072:80;;;;;;;;;;-1:-1:-1;10072:80:0;;4821:2;6761:36:1;;6749:2;6734:18;10072:80:0;6619:184:1;14817:544:0;;;;;;;;;;-1:-1:-1;14817:544:0;;;;;:::i;:::-;;:::i;14348:110::-;;;;;;;;;;-1:-1:-1;14348:110:0;;;;;:::i;:::-;;:::i;13470:140::-;;;;;;;;;;-1:-1:-1;13470:140:0;;;;;:::i;:::-;;:::i;15568:273::-;;;;;;;;;;-1:-1:-1;15568:273:0;;;;;:::i;:::-;;:::i;5453:21::-;;;;;;;;;;-1:-1:-1;5453:21:0;;;;-1:-1:-1;;;;;5453:21:0;;;5284:46;;;;;;;;;;;;5326:4;5284:46;;6002:34;;;;;;;;;;-1:-1:-1;6002:34:0;;;;;;;;16359:189;;;;;;;;;;-1:-1:-1;16359:189:0;;;;;:::i;:::-;;:::i;17263:217::-;;;;;;;;;;-1:-1:-1;17263:217:0;;;;;:::i;:::-;;:::i;8700:654::-;;;;;;;;;;-1:-1:-1;8700:654:0;;;;;:::i;:::-;;:::i;13618:127::-;;;;;;;;;;-1:-1:-1;13618:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13709:28:0;13685:4;13709:28;;;:19;:28;;;;;;;;;13618:127;6043:36;;;;;;;;;;-1:-1:-1;6043:36:0;;;;;;;;;;;13753:134;;;;;;;;;;-1:-1:-1;13753:134:0;;;;;:::i;:::-;;:::i;6116:26::-;;;;;;;;;;;;;;;;13100:222;;;;;;;;;;-1:-1:-1;13100:222:0;;;;;:::i;:::-;;:::i;13330:132::-;;;;;;;;;;-1:-1:-1;13330:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;13424:30:0;13400:4;13424:30;;;:21;:30;;;;;;;;;13330:132;16121:108;;;;;;;;;;;;;:::i;10558:117::-;;;;;;;;;;-1:-1:-1;10558:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10651:16:0;10624:7;10651:16;;;;;;;;;;;;10558:117;9362:225;;;;;;;;;;;;;:::i;5561:92::-;;;;;;;;;;-1:-1:-1;5561:92:0;;;;-1:-1:-1;;;;;5561:92:0;;;14627:182;;;;;;;;;;;;;:::i;12528:564::-;;;;;;;;;;-1:-1:-1;12528:564:0;;;;;:::i;:::-;;:::i;10334:79::-;;;;;;;;;;-1:-1:-1;10404:6:0;;-1:-1:-1;;;;;10404:6:0;10334:79;;11343:175;;;;;;;;;;;;;:::i;22717:737::-;;;;;;;;;;;;;:::i;10158:84::-;;;;;;;;;;-1:-1:-1;10232:7:0;;;;;;;;;;;;-1:-1:-1;;;10232:7:0;;;;10158:84;;10683:165;;;;;;;;;;-1:-1:-1;10683:165:0;;;;;:::i;:::-;;:::i;23652:248::-;;;;;;;;;;-1:-1:-1;23652:248:0;;;;;:::i;:::-;;:::i;5797:34::-;;;;;;;;;;-1:-1:-1;5797:34:0;;;;;;;;17488:263;;;;;;;;;;-1:-1:-1;17488:263:0;;;;;:::i;:::-;;:::i;10419:133::-;;;;;;;;;;-1:-1:-1;10419:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10521:19:0;;;10503:7;10521:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10419:133;11840:680;;;;;;;;;;-1:-1:-1;11840:680:0;;;;;:::i;:::-;;:::i;15369:191::-;;;;;;;;;;-1:-1:-1;15369:191:0;;;;;:::i;:::-;;:::i;23462:182::-;;;;;;;;;;;;;:::i;16556:699::-;;;;;;;;;;-1:-1:-1;16556:699:0;;;;;:::i;:::-;;:::i;5684:39::-;;;;;;;;;;-1:-1:-1;5684:39:0;;;;-1:-1:-1;;;5684:39:0;;;;;;14043:148;;;;;;;;;;-1:-1:-1;14043:148:0;;;;;:::i;:::-;;:::i;14466:153::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;;;;;;;;;14561:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;14561:50:0;;9307:14:1;;9300:22;14561:50:0::1;::::0;::::1;9282:41:1::0;9366:14;;9359:22;9339:18;;;9332:50;14561:11:0;;;::::1;-1:-1:-1::0;;;;;14561:11:0::1;::::0;:26:::1;::::0;9255:18:1;;14561:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14466:153:::0;;:::o;10856:161::-;10933:4;10950:37;10959:10;10971:7;10980:6;10950:8;:37::i;:::-;-1:-1:-1;11005:4:0;10856:161;;;;;:::o;16237:114::-;16284:7;16329:13;4821:2;16329;:13;:::i;:::-;16311:14;;:32;;;;:::i;:::-;16304:39;;16237:114;:::o;17759:809::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;17863:23:::1;::::0;::::1;;17855:32;;;::::0;::::1;;-1:-1:-1::0;;;;;17906:23:0;::::1;17924:4;17906:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;17951:24:0;::::1;17970:4;17951:24;;17906:69;:107;;;;-1:-1:-1::0;17997:6:0::1;::::0;-1:-1:-1;;;;;17997:16:0;;::::1;:6:::0;::::1;:16;;17906:107;:146;;;;-1:-1:-1::0;18035:6:0::1;::::0;-1:-1:-1;;;;;18035:17:0;;::::1;:6:::0;::::1;:17;;17906:146;17898:170;;;::::0;-1:-1:-1;;;17898:170:0;;11332:2:1;17898:170:0::1;::::0;::::1;11314:21:1::0;11371:2;11351:18;;;11344:30;-1:-1:-1;;;11390:18:1;;;11383:41;11441:18;;17898:170:0::1;11130:335:1::0;17898:170:0::1;18093:7;-1:-1:-1::0;;;;;18083:17:0::1;:6;-1:-1:-1::0;;;;;18083:17:0::1;::::0;18079:482:::1;;-1:-1:-1::0;;;;;18117:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;18146:4:::1;-1:-1:-1::0;;18117:33:0;;::::1;::::0;::::1;::::0;;;18165:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;18212:34:::1;::::0;18117:26;;18212:19:::1;:34::i;:::-;17759:809:::0;;:::o;18079:482::-:1;-1:-1:-1::0;;;;;18279:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;18307:4:::1;-1:-1:-1::0;;18279:32:0;;::::1;::::0;::::1;::::0;;;18326:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;18374:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;18420:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;18467:33:::1;::::0;18279:25;;18467:19:::1;:33::i;:::-;18515:34;18535:7;18544:4;18515:19;:34::i;9983:83::-:0;10038:7;4882:13;4821:2;4882;:13;:::i;:::-;4865:30;;4671:11;4865:30;:::i;11526:306::-;-1:-1:-1;;;;;11647:19:0;;11626:4;11647:19;;;:11;:19;;;;;;;;11667:10;11647:31;;;;;;;;-1:-1:-1;;11647:52:0;11643:126;;-1:-1:-1;;;;;11716:19:0;;;;;;:11;:19;;;;;;;;11736:10;11716:31;;;;;;;:41;;11751:6;;11716:19;:41;;11751:6;;11716:41;:::i;:::-;;;;-1:-1:-1;;11643:126:0;11788:36;11798:6;11806:9;11817:6;11788:9;:36::i;:::-;11781:43;11526:306;-1:-1:-1;;;;11526:306:0:o;15849:264::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;15991:3:::1;4882:13;4821:2;4882;:13;:::i;:::-;4865:30;::::0;4671:11:::1;4865:30;:::i;:::-;15981:13;;;;:::i;:::-;15969:7:::0;15958;4882:13:::1;4821:2;4882;:13;:::i;:::-;4865:30;::::0;4671:11:::1;4865:30;:::i;:::-;15948:17;;;;:::i;:::-;15947:29;;;;:::i;:::-;:48;;15939:109;;;::::0;-1:-1:-1;;;15939:109:0;;11978:2:1;15939:109:0::1;::::0;::::1;11960:21:1::0;12017:2;11997:18;;;11990:30;12056:34;12036:18;;;12029:62;12127:18;12107;;;12100:46;12163:19;;15939:109:0::1;11776:412:1::0;15939:109:0::1;16098:7:::0;16087;4882:13:::1;4821:2;4882;:13;:::i;:::-;4865:30;::::0;4671:11:::1;4865:30;:::i;:::-;16077:17;;;;:::i;:::-;16076:29;;;;:::i;:::-;16059:14;:46:::0;-1:-1:-1;;15849:264:0:o;23908:447::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;24043:7:::1;:14;24024:8;:15;:33;24016:67;;;::::0;-1:-1:-1;;;24016:67:0;;12395:2:1;24016:67:0::1;::::0;::::1;12377:21:1::0;12434:2;12414:18;;;12407:30;12473:23;12453:18;;;12446:51;12514:18;;24016:67:0::1;12193:345:1::0;24016:67:0::1;24099:8;24094:254;24117:8;:15;24113:1;:19;;;24094:254;;;24198:13;4821:2;24198;:13;:::i;:::-;24187:7;24195:1;24187:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24172:10;10624:7:::0;10651:16;;;;;;;;;;;24162:49:::1;;24154:80;;;::::0;-1:-1:-1;;;24154:80:0;;12877:2:1;24154:80:0::1;::::0;::::1;12859:21:1::0;12916:2;12896:18;;;12889:30;12955:20;12935:18;;;12928:48;12993:18;;24154:80:0::1;12675:342:1::0;24154:80:0::1;24249:87;24266:10;24278:8;24287:1;24278:11;;;;;;;;;;:::i;:::-;;;;;;;4821:2;24302;:13;;;;:::i;:::-;24291:7;24299:1;24291:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24317:5;24324::::0;24331:4:::1;24249:16;:87::i;:::-;-1:-1:-1::0;24134:3:0;::::1;::::0;::::1;:::i;:::-;;;;24094:254;;;;23908:447:::0;;:::o;14199:141::-;14252:7;10651:16;;;;;;5512:42;10651:16;;;;14291:39;;10651:16;14291:39;:::i;:::-;4882:13;4821:2;4882;:13;:::i;:::-;4865:30;;4671:11;4865:30;:::i;:::-;14280:51;;;;:::i;14817:544::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;14925:14:::1;::::0;::::1;;14924:15;14916:45;;;::::0;-1:-1:-1;;;14916:45:0;;13556:2:1;14916:45:0::1;::::0;::::1;13538:21:1::0;13595:2;13575:18;;;13568:30;13634:19;13614:18;;;13607:47;13671:18;;14916:45:0::1;13354:341:1::0;14916:45:0::1;5169:4;14980:6;:21;;;;:65;;;;;5219:4;15022:7;:23;;;;14980:65;:117;;;;;5273:4;15066:11;:31;;;;14980:117;14972:170;;;::::0;-1:-1:-1;;;14972:170:0;;13902:2:1;14972:170:0::1;::::0;::::1;13884:21:1::0;13941:2;13921:18;;;13914:30;13980:25;13960:18;;;13953:53;14023:18;;14972:170:0::1;13700:347:1::0;14972:170:0::1;5326:4;15161:16;15170:7:::0;15161:6;:16:::1;:::i;:::-;:35;;;;15153:80;;;::::0;-1:-1:-1;;;15153:80:0;;14427:2:1;15153:80:0::1;::::0;::::1;14409:21:1::0;;;14446:18;;;14439:30;14505:34;14485:18;;;14478:62;14557:18;;15153:80:0::1;14225:356:1::0;15153:80:0::1;15244:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15280:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15318:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14817:544::o;14348:110::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;14417:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;14417:33:0;;-1:-1:-1;;;;;178:55:1;;;14417:33:0::1;::::0;::::1;160:74:1::0;14417:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;14417:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14348:110:::0;:::o;13470:140::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;-1:-1:-1;;;;;13562:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13562:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13470:140::o;15568:273::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;15713:4:::1;4882:13;4821:2;4882;:13;:::i;:::-;4865:30;::::0;4671:11:::1;4865:30;:::i;:::-;15699:11;::::0;15709:1:::1;15699:11;:::i;:::-;:18;;;;:::i;:::-;15687:7:::0;15676;4882:13:::1;4821:2;4882;:13;:::i;:::-;4865:30;::::0;4671:11:::1;4865:30;:::i;:::-;15666:17;;;;:::i;:::-;15665:29;;;;:::i;:::-;:53;;15657:121;;;::::0;-1:-1:-1;;;15657:121:0;;14788:2:1;15657:121:0::1;::::0;::::1;14770:21:1::0;14827:2;14807:18;;;14800:30;14866:34;14846:18;;;14839:62;14937:25;14917:18;;;14910:53;14980:19;;15657:121:0::1;14586:419:1::0;15657:121:0::1;15826:7:::0;15815;4882:13:::1;4821:2;4882;:13;:::i;:::-;4865:30;::::0;4671:11:::1;4865:30;:::i;:::-;15805:17;;;;:::i;:::-;15804:29;;;;:::i;:::-;15789:12;:44:::0;-1:-1:-1;;15568:273:0:o;16359:189::-;16488:6;;-1:-1:-1;;;;;16488:6:0;16450:7;10651:16;;;;;;;;;;;5373:5;;16478:41;;16498:21;;16478:41;:::i;:::-;16477:62;;;;:::i;17263:217::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;17393:3:::1;17367:22;:29;;17359:64;;;::::0;-1:-1:-1;;;17359:64:0;;15212:2:1;17359:64:0::1;::::0;::::1;15194:21:1::0;15251:2;15231:18;;;15224:30;15290:24;15270:18;;;15263:52;15332:18;;17359:64:0::1;15010:346:1::0;17359:64:0::1;17434:13;:38:::0;17263:217::o;8700:654::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;-1:-1:-1;;;;;8779:22:0;::::1;8771:96;;;::::0;-1:-1:-1;;;8771:96:0;;15563:2:1;8771:96:0::1;::::0;::::1;15545:21:1::0;15602:2;15582:18;;;15575:30;15641:34;15621:18;;;15614:62;15712:31;15692:18;;;15685:59;15761:19;;8771:96:0::1;15361:425:1::0;8771:96:0::1;-1:-1:-1::0;;;;;;;8886:16:0;::::1;::::0;8878:90:::1;;;::::0;-1:-1:-1;;;8878:90:0;;15563:2:1;8878:90:0::1;::::0;::::1;15545:21:1::0;15602:2;15582:18;;;15575:30;15641:34;15621:18;;;15614:62;15712:31;15692:18;;;15685:59;15761:19;;8878:90:0::1;15361:425:1::0;8878:90:0::1;8999:6;::::0;8979:34:::1;::::0;-1:-1:-1;;;;;8999:6:0::1;;8979:19;:34::i;:::-;9024:35;9044:8;9054:4;9024:19;:35::i;:::-;9094:6;::::0;-1:-1:-1;;;;;9094:6:0::1;9104:1;10651:16:::0;;;;;;;;;;;9084:21;9080:127:::1;;9139:6;::::0;-1:-1:-1;;;;;9139:6:0::1;10624:7:::0;10651:16;;;;;;;;;;;9122:73:::1;::::0;9139:6;9147:8;;9157:17:::1;10558:117:::0;9122:73:::1;;9080:127;9246:6;::::0;;-1:-1:-1;;;;;9263:17:0;;::::1;-1:-1:-1::0;;;;;;9263:17:0;::::1;::::0;::::1;::::0;;;9296:40:::1;::::0;9246:6;::::1;::::0;9263:17;9246:6;;9296:40:::1;::::0;9227:16:::1;::::0;9296:40:::1;8760:594;8700:654:::0;:::o;13753:134::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;-1:-1:-1;;;;;13841:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13841:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13753:134::o;13100:222::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;13184:14:::1;::::0;::::1;;13183:15;13175:24;;;::::0;::::1;;13241:4;-1:-1:-1::0;;;;;13218:28:0;::::1;::::0;13210:55:::1;;;::::0;-1:-1:-1;;;13210:55:0;;15993:2:1;13210:55:0::1;::::0;::::1;15975:21:1::0;16032:2;16012:18;;;16005:30;16071:16;16051:18;;;16044:44;16105:18;;13210:55:0::1;15791:338:1::0;13210:55:0::1;13276:11;:38:::0;;-1:-1:-1;;;;;13276:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;13276:38:0;;::::1;::::0;;;::::1;::::0;;13100:222::o;16121:108::-;16164:7;16207:13;4821:2;16207;:13;:::i;:::-;16191:12;;:30;;;;:::i;9362:225::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;9441:6:::1;::::0;9421:34:::1;::::0;-1:-1:-1;;;;;9441:6:0::1;;9421:19;:34::i;:::-;9485:6;::::0;;-1:-1:-1;;;;;;9502:19:0;::::1;::::0;;;9537:42:::1;::::0;-1:-1:-1;;;;;9485:6:0;;::::1;::::0;9466:16:::1;::::0;9485:6;;9537:42:::1;::::0;9466:16;;9537:42:::1;9410:177;9362:225::o:0;14627:182::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;14780:14:::1;:21:::0;;-1:-1:-1;;14780:21:0::1;14797:4;14780:21;::::0;;14627:182::o;12528:564::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;12610:7:::1;12605:480;;-1:-1:-1::0;;;;;12634:13:0;;::::1;12650:5;12634:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12634:21:0::1;::::0;;12670:11:::1;::::0;:34;;-1:-1:-1;;;12670:34:0;;::::1;::::0;::::1;16302:74:1::0;;;;16392:18;;;16385:50;;;;12670:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16275:18:1;;12670:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;12605:480;12741:17;::::0;:22;12737:135:::1;;12830:6;12810:17;;12792:15;:35;;;;:::i;:::-;:44;12784:72;;;::::0;-1:-1:-1;;;12784:72:0;;16648:2:1;12784:72:0::1;::::0;::::1;16630:21:1::0;16687:2;16667:18;;;16660:30;16726:17;16706:18;;;16699:45;16761:18;;12784:72:0::1;16446:339:1::0;12784:72:0::1;-1:-1:-1::0;;;;;12895:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12894:14;12886:54;;;::::0;-1:-1:-1;;;12886:54:0;;16992:2:1;12886:54:0::1;::::0;::::1;16974:21:1::0;17031:2;17011:18;;;17004:30;17070:29;17050:18;;;17043:57;17117:18;;12886:54:0::1;16790:351:1::0;12886:54:0::1;-1:-1:-1::0;;;;;12955:13:0;;::::1;;::::0;;;12971:4:::1;12955:13;::::0;;;;;;;;:20;;-1:-1:-1;;12955:20:0::1;::::0;::::1;::::0;;13010:15:::1;12990:17;:35:::0;13040:11:::1;::::0;:33;;-1:-1:-1;;;13040:33:0;;::::1;::::0;::::1;16302:74:1::0;;;;16392:18;;;16385:50;13040:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16275:18:1;;13040:33:0::1;16134:307:1::0;11343:175:0;8554:6;;11409:4;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;11458:9:::1;::::0;11426:62:::1;::::0;11443:4:::1;::::0;11458:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11458:9:0::1;-1:-1:-1::0;;11426:8:0::1;:62::i;:::-;-1:-1:-1::0;11506:4:0::1;11343:175:::0;:::o;22717:737::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;22779:14:::1;::::0;::::1;;22778:15;22770:52;;;::::0;-1:-1:-1;;;22770:52:0;;17348:2:1;22770:52:0::1;::::0;::::1;17330:21:1::0;17387:2;17367:18;;;17360:30;17426:26;17406:18;;;17399:54;17470:18;;22770:52:0::1;17146:348:1::0;22770:52:0::1;22841:16;::::0;::::1;::::0;::::1;;;22833:53;;;::::0;-1:-1:-1;;;22833:53:0;;17701:2:1;22833:53:0::1;::::0;::::1;17683:21:1::0;17740:2;17720:18;;;17713:30;17779:26;17759:18;;;17752:54;17823:18;;22833:53:0::1;17499:348:1::0;22833:53:0::1;22909:11;::::0;;;::::1;-1:-1:-1::0;;;;;22909:11:0::1;22897:106;;22951:11;:40:::0;;-1:-1:-1;;;;;;22951:40:0::1;22985:4;22951:40:::0;::::1;;::::0;;22897:106:::1;23017:11;::::0;23039:6:::1;::::0;23017:87:::1;::::0;-1:-1:-1;;;23017:87:0;;-1:-1:-1;;;;;23039:6:0;;::::1;23017:87;::::0;::::1;18075:74:1::0;18197:10;23054:12:0::1;18185:23:1::0;18165:18;;;18158:51;18257:18;23076:15:0::1;18245:31:1::0;18225:18;;;18218:59;4821:2:0::1;18293:18:1::0;;;18286:45;23017:11:0;;;::::1;;::::0;:21:::1;::::0;18047:19:1;;23017:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;23130:11:0::1;::::0;23161:6:::1;::::0;-1:-1:-1;;;;;23161:6:0;;::::1;10624:7:::0;10651:16;;;;;;;;;;;;;23130:39;;-1:-1:-1;;;23130:39:0;;::::1;::::0;::::1;391:25:1::0;;;;23130:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;23130:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;23130:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;23130:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;23126:207:::0;::::1;;23241:13;:29:::0;;;;23285:10:::1;:27:::0;23126:207:::1;23343:14;:21:::0;;-1:-1:-1;;23343:21:0;;::::1;23360:4;23343:21;::::0;;;23375:23:::1;:31:::0;;;;::::1;::::0;;23431:15:::1;23417:11;:29:::0;22717:737::o;10683:165::-;10761:4;10778:40;10788:10;10800:9;10811:6;10778:9;:40::i;:::-;-1:-1:-1;10836:4:0;;10683:165;-1:-1:-1;;;10683:165:0:o;23652:248::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;23751:4:::1;-1:-1:-1::0;;;;;23734:22:0;::::1;::::0;23726:62:::1;;;::::0;-1:-1:-1;;;23726:62:0;;18794:2:1;23726:62:0::1;::::0;::::1;18776:21:1::0;18833:2;18813:18;;;18806:30;18872:29;18852:18;;;18845:57;18919:18;;23726:62:0::1;18592:351:1::0;23726:62:0::1;23853:6;::::0;23861:30:::1;::::0;-1:-1:-1;;;23861:30:0;;23885:4:::1;23861:30;::::0;::::1;160:74:1::0;23821:5:0;;-1:-1:-1;;;;;23838:14:0;;::::1;::::0;::::1;::::0;23853:6;;;::::1;::::0;23838:14;;23861:15:::1;::::0;133:18:1;;23861:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23838:54;::::0;-1:-1:-1;;;;;;23838:54:0::1;::::0;;;;;;-1:-1:-1;;;;;19329:55:1;;;23838:54:0::1;::::0;::::1;19311:74:1::0;19401:18;;;19394:34;19284:18;;23838:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17488:263::-:0;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;17597:19:::1;:33:::0;;-1:-1:-1;;;;17597:33:0::1;-1:-1:-1::0;;;17597:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;17641:22:::1;:47:::0;;-1:-1:-1;;17641:47:0::1;::::0;::::1;;;::::0;;17704:39:::1;::::0;2242:41:1;;;17704:39:0::1;::::0;2230:2:1;2215:18;17704:39:0::1;;;;;;;;17488:263:::0;;:::o;11840:680::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;11920:16:::1;::::0;::::1;::::0;::::1;;;11919:17;11911:60;;;::::0;-1:-1:-1;;;11911:60:0;;19891:2:1;11911:60:0::1;::::0;::::1;19873:21:1::0;19930:2;19910:18;;;19903:30;19969:32;19949:18;;;19942:60;20019:18;;11911:60:0::1;19689:354:1::0;11911:60:0::1;11982:20;12015:9;11982:43;;12036:16;12066:10;-1:-1:-1::0;;;;;12066:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12055:40:0::1;;12104:4;12111:10;-1:-1:-1::0;;;;;12111:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12055:74;::::0;-1:-1:-1;;;;;;12055:74:0::1;::::0;;;;;;-1:-1:-1;;;;;20557:15:1;;;12055:74:0::1;::::0;::::1;20539:34:1::0;20609:15;;20589:18;;;20582:43;20451:18;;12055:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12148:6;::::0;-1:-1:-1;;;;;12148:6:0;;::::1;12158:5;12140:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;12140:23:0::1;::::0;;12036:93;;-1:-1:-1;12178:22:0;::::1;12174:200;;12237:10;-1:-1:-1::0;;;;;12237:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12226:43:0::1;;12278:4;12285:10;-1:-1:-1::0;;;;;12285:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12226:77;::::0;-1:-1:-1;;;;;;12226:77:0::1;::::0;;;;;;-1:-1:-1;;;;;20557:15:1;;;12226:77:0::1;::::0;::::1;20539:34:1::0;20609:15;;20589:18;;;20582:43;20451:18;;12226:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12217:6;:86:::0;;-1:-1:-1;;;;;;12217:86:0::1;-1:-1:-1::0;;;;;12217:86:0;;;::::1;::::0;;;::::1;::::0;;12174:200:::1;;;12345:6;:17:::0;;-1:-1:-1;;;;;;12345:17:0::1;-1:-1:-1::0;;;;;12345:17:0;::::1;;::::0;;12174:200:::1;12384:9;:22:::0;;-1:-1:-1;;12384:22:0::1;;-1:-1:-1::0;;;;;12384:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12425:6:::1;::::0;;::::1;-1:-1:-1::0;12417:15:0;;;-1:-1:-1;12417:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12417:22:0::1;::::0;;::::1;::::0;;12482:9;;12450:62:::1;::::0;12467:4:::1;::::0;12482:9;::::1;;-1:-1:-1::0;;12450:8:0::1;:62::i;15369:191::-:0;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;-1:-1:-1;;;;;15454:23:0;::::1;15446:59;;;::::0;-1:-1:-1;;;15446:59:0;;20838:2:1;15446:59:0::1;::::0;::::1;20820:21:1::0;20877:2;20857:18;;;20850:30;20916:25;20896:18;;;20889:53;20959:18;;15446:59:0::1;20636:347:1::0;15446:59:0::1;15516:15;:36:::0;;-1:-1:-1;;;;;;15516:36:0::1;-1:-1:-1::0;;;;;15516:36:0;;;::::1;::::0;;;::::1;::::0;;15369:191::o;23462:182::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;23529:16:::1;::::0;::::1;::::0;::::1;;;23528:17;23520:58;;;::::0;-1:-1:-1;;;23520:58:0;;21190:2:1;23520:58:0::1;::::0;::::1;21172:21:1::0;21229:2;21209:18;;;21202:30;21268;21248:18;;;21241:58;21316:18;;23520:58:0::1;20988:352:1::0;23520:58:0::1;23597:6;::::0;23589:47:::1;::::0;-1:-1:-1;;;;;23597:6:0;;::::1;::::0;23614:21:::1;23589:47:::0;::::1;;;::::0;23597:6:::1;23589:47:::0;23597:6;23589:47;23614:21;23597:6;23589:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23462:182::o:0;16556:699::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;16756:16;16736;4882:13:::1;4821:2;4882;:13;:::i;:::-;4865:30;::::0;4671:11:::1;4865:30;:::i;:::-;16726:26;;;;:::i;:::-;16725:47;;;;:::i;:::-;16709:13;:63:::0;16824:13;16807;4882::::1;4821:2;4882;:13;:::i;:::-;4865:30;::::0;4671:11:::1;4865:30;:::i;:::-;16797:23;;;;:::i;:::-;16796:41;;;;:::i;:::-;16783:10;:54:::0;;;16856:13:::1;::::0;:27:::1;;16848:73;;;::::0;-1:-1:-1;;;16848:73:0;;21547:2:1;16848:73:0::1;::::0;::::1;21529:21:1::0;21586:2;21566:18;;;21559:30;21625:34;21605:18;;;21598:62;-1:-1:-1;;;21676:18:1;;;21669:31;21717:19;;16848:73:0::1;21345:397:1::0;16848:73:0::1;16965:6;::::0;-1:-1:-1;;;;;16965:6:0::1;10624:7:::0;10651:16;;;;;;;;;;;5373:5:::1;::::0;16955:23:::1;::::0;16975:3:::1;16955:23;:::i;:::-;16954:44;;;;:::i;:::-;16940:10;;:58;;16932:106;;;::::0;-1:-1:-1;;;16932:106:0;;21949:2:1;16932:106:0::1;::::0;::::1;21931:21:1::0;21988:2;21968:18;;;21961:30;22027:34;22007:18;;;22000:62;-1:-1:-1;;;22078:18:1;;;22071:33;22121:19;;16932:106:0::1;21747:399:1::0;16932:106:0::1;17081:9;4882:13;4821:2;4882;:13;:::i;:::-;4865:30;::::0;4671:11:::1;4865:30;:::i;:::-;17071:19;;;;:::i;:::-;17057:10;;:33;;17049:92;;;::::0;-1:-1:-1;;;17049:92:0;;22353:2:1;17049:92:0::1;::::0;::::1;22335:21:1::0;22392:2;22372:18;;;22365:30;22431:34;22411:18;;;22404:62;-1:-1:-1;;;22482:18:1;;;22475:44;22536:19;;17049:92:0::1;22151:410:1::0;17049:92:0::1;17187:9;4882:13;4821:2;4882;:13;:::i;:::-;4865:30;::::0;4671:11:::1;4865:30;:::i;:::-;17177:19;;;;:::i;:::-;17160:13;;:36;;17152:95;;;::::0;-1:-1:-1;;;17152:95:0;;22353:2:1;17152:95:0::1;::::0;::::1;22335:21:1::0;22392:2;22372:18;;;22365:30;22431:34;22411:18;;;22404:62;-1:-1:-1;;;22482:18:1;;;22475:44;22536:19;;17152:95:0::1;22151:410:1::0;17152:95:0::1;16556:699:::0;;;;:::o;14043:148::-;8554:6;;-1:-1:-1;;;;;8554:6:0;8564:10;8554:20;8546:50;;;;-1:-1:-1;;;8546:50:0;;8976:2:1;8546:50:0;;;8958:21:1;9015:2;8995:18;;;8988:30;-1:-1:-1;;;;;;;;;;;9034:18:1;;;9027:47;9091:18;;8546:50:0;8774:341:1;8546:50:0;-1:-1:-1;;;;;14139:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14139:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14043:148::o;11025:310::-;-1:-1:-1;;;;;11120:20:0;;11112:52;;;;-1:-1:-1;;;11112:52:0;;22768:2:1;11112:52:0;;;22750:21:1;22807:2;22787:18;;;22780:30;-1:-1:-1;;;22826:18:1;;;22819:49;22885:18;;11112:52:0;22566:343:1;11112:52:0;-1:-1:-1;;;;;11183:21:0;;11175:53;;;;-1:-1:-1;;;11175:53:0;;22768:2:1;11175:53:0;;;22750:21:1;22807:2;22787:18;;;22780:30;-1:-1:-1;;;22826:18:1;;;22819:49;22885:18;;11175:53:0;22566:343:1;11175:53:0;-1:-1:-1;;;;;11241:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11294:33;;391:25:1;;;11294:33:0;;364:18:1;11294:33:0;;;;;;;11025:310;;;:::o;19030:2286::-;19109:4;-1:-1:-1;;;;;19134:18:0;;19126:68;;;;-1:-1:-1;;;19126:68:0;;23116:2:1;19126:68:0;;;23098:21:1;23155:2;23135:18;;;23128:30;23194:34;23174:18;;;23167:62;-1:-1:-1;;;23245:18:1;;;23238:35;23290:19;;19126:68:0;22914:401:1;19126:68:0;-1:-1:-1;;;;;19213:16:0;;19205:64;;;;-1:-1:-1;;;19205:64:0;;23522:2:1;19205:64:0;;;23504:21:1;23561:2;23541:18;;;23534:30;23600:34;23580:18;;;23573:62;-1:-1:-1;;;23651:18:1;;;23644:33;23694:19;;19205:64:0;23320:399:1;19205:64:0;19297:1;19288:6;:10;19280:64;;;;-1:-1:-1;;;19280:64:0;;23926:2:1;19280:64:0;;;23908:21:1;23965:2;23945:18;;;23938:30;24004:34;23984:18;;;23977:62;-1:-1:-1;;;24055:18:1;;;24048:39;24104:19;;19280:64:0;23724:405:1;19280:64:0;-1:-1:-1;;;;;19443:13:0;;19355:8;19443:13;;;:7;:13;;;;;;19355:8;;;;19443:13;;19439:162;;;19479:4;19473:10;;19439:162;;;-1:-1:-1;;;;;19505:11:0;;;;;;:7;:11;;;;;;;;19501:100;;;19540:4;19533:11;;19501:100;;;-1:-1:-1;19585:4:0;19501:100;19615:20;19626:4;19632:2;19615:10;:20::i;:::-;19611:874;;;19656:14;;;;19652:319;;19696:5;19691:265;;19726:34;;-1:-1:-1;;;19726:34:0;;24336:2:1;19726:34:0;;;24318:21:1;24375:2;24355:18;;;24348:30;24414:26;24394:18;;;24387:54;24458:18;;19726:34:0;24134:348:1;19691:265:0;-1:-1:-1;;;;;19791:31:0;;;;;;:25;:31;;;;;;;;19790:32;:66;;;;-1:-1:-1;;;;;;19827:29:0;;;;;;:25;:29;;;;;;;;19826:30;19790:66;19786:170;;;19881:55;;-1:-1:-1;;;19881:55:0;;24689:2:1;19881:55:0;;;24671:21:1;24728:2;24708:18;;;24701:30;24767:34;24747:18;;;24740:62;-1:-1:-1;;;24818:18:1;;;24811:43;24871:19;;19881:55:0;24487:409:1;19786:170:0;19989:3;:11;;;;19996:4;19989:11;19985:232;;;-1:-1:-1;;;;;20025:27:0;;;;;;:21;:27;;;;;;;;20024:28;:58;;;;-1:-1:-1;;;;;;20057:25:0;;;;;;:21;:25;;;;;;;;20056:26;20024:58;20020:182;;;20125:12;;20115:6;:22;;20107:75;;;;-1:-1:-1;;;20107:75:0;;25103:2:1;20107:75:0;;;25085:21:1;25142:2;25122:18;;;25115:30;25181:34;25161:18;;;25154:62;-1:-1:-1;;;25232:18:1;;;25225:38;25280:19;;20107:75:0;24901:404:1;20107:75:0;20249:9;;-1:-1:-1;;;;;20235:24:0;;;20249:9;;;;;20235:24;;;;:33;;;20264:4;20263:5;20235:33;20231:243;;;-1:-1:-1;;;;;20294:25:0;;;;;;:21;:25;;;;;;;;20289:170;;20378:14;;20368:6;20352:13;20362:2;-1:-1:-1;;;;;10651:16:0;10624:7;10651:16;;;;;;;;;;;;10558:117;20352:13;:22;;;;:::i;:::-;:40;;20344:95;;;;-1:-1:-1;;;20344:95:0;;25512:2:1;20344:95:0;;;25494:21:1;25551:2;25531:18;;;25524:30;25590:34;25570:18;;;25563:62;-1:-1:-1;;;25641:18:1;;;25634:40;25691:19;;20344:95:0;25310:406:1;20344:95:0;20501:4;20497:742;;;20527:6;;-1:-1:-1;;;20527:6:0;;;;20522:706;;20558:19;;-1:-1:-1;;;20558:19:0;;;;:64;;;;-1:-1:-1;;;;;;20602:20:0;;;;;;:16;:20;;;;;;;;20601:21;20558:64;:111;;;;-1:-1:-1;;;;;;20647:22:0;;;;;;:16;:22;;;;;;;;20646:23;20558:111;20554:659;;;20761:4;20712:28;10651:16;;;;;;;;;;;20818:13;;20794:37;;20790:404;;20878:10;;20919:22;;;;20915:97;;;20976:13;;20966:6;;-1:-1:-1;;;;;20966:6:0;10624:7;10651:16;;;;;;;;;;;5373:5;;20956:33;;;:::i;:::-;20955:54;;;;:::i;:::-;20945:64;;20915:97;21066:7;21042:20;:31;21038:72;;21100:7;21077:30;;21038:72;21136:34;21149:20;21136:12;:34::i;:::-;20833:361;20790:404;20689:524;20554:659;21256:52;21273:4;21279:2;21283:6;21291:3;21296:4;21302:5;21256:16;:52::i;:::-;21249:59;19030:2286;-1:-1:-1;;;;;;;19030:2286:0:o;24363:1055::-;24482:4;24503:20;24514:4;24520:2;24503:10;:20::i;:::-;24499:228;;;24558:11;;:39;;-1:-1:-1;;;24558:39:0;;-1:-1:-1;;;;;26002:15:1;;;24558:39:0;;;25984:34:1;26054:15;;;26034:18;;;26027:43;26086:18;;;26079:34;;;24527:12:0;;24558:11;;;;;:21;;25896:18:1;;24558:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24558:39:0;;;;;;;;-1:-1:-1;;24558:39:0;;;;;;;;;;;;:::i;:::-;;;24554:122;;24665:8;;;24554:122;24648:5;-1:-1:-1;24694:7:0;24690:26;;24705:8;;;24690:26;24525:202;24499:228;-1:-1:-1;;;;;24771:25:0;;24737:12;24771:25;;;:19;:25;;;;;;24752:4;;24771:25;;;:52;;-1:-1:-1;;;;;;24800:23:0;;;;;;:19;:23;;;;;;;;24771:52;24767:99;;;-1:-1:-1;24849:5:0;24767:99;-1:-1:-1;;;;;24876:13:0;;:7;:13;;;;;;;;;;:23;;24893:6;;24876:7;:23;;24893:6;;24876:23;:::i;:::-;;;;-1:-1:-1;24910:22:0;;-1:-1:-1;24936:7:0;24935:55;;24984:6;24935:55;;;24947:34;24957:4;24963:3;24968:4;24974:6;24947:9;:34::i;:::-;24910:80;;25016:14;25001:7;:11;25009:2;-1:-1:-1;;;;;25001:11:0;-1:-1:-1;;;;;25001:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;25061:2;-1:-1:-1;;;;;25046:34:0;25055:4;-1:-1:-1;;;;;25046:34:0;;25065:14;25046:34;;;;391:25:1;;379:2;364:18;;245:177;25046:34:0;;;;;;;;25096:16;;;;;;;25091:298;;25129:28;25148:4;25154:2;25129:18;:28::i;:::-;25177:16;;;;;;;25176:17;:41;;;;;25197:20;25208:4;25214:2;25197:10;:20::i;:::-;25176:77;;;;-1:-1:-1;;;;;;25222:31:0;;;;;;:25;:31;;;;;;;;25221:32;25176:77;:111;;;;-1:-1:-1;;;;;;25258:29:0;;;;;;:25;:29;;;;;;;;25257:30;25176:111;:121;;;;;25292:5;25291:6;25176:121;25172:206;;;25318:44;;-1:-1:-1;;;25318:44:0;;26326:2:1;25318:44:0;;;26308:21:1;26365:2;26345:18;;;26338:30;26404:34;26384:18;;;26377:62;-1:-1:-1;;;26455:18:1;;;26448:32;26497:19;;25318:44:0;26124:398:1;25172:206:0;-1:-1:-1;25406:4:0;;24363:1055;-1:-1:-1;;;;;;;;24363:1055:0:o;18576:446::-;18677:6;;18645:4;;-1:-1:-1;;;;;18669:14:0;;;18677:6;;18669:14;;;;:43;;-1:-1:-1;18706:6:0;;-1:-1:-1;;;;;18700:12:0;;;18706:6;;18700:12;;18669:43;:79;;;;-1:-1:-1;18742:6:0;;-1:-1:-1;;;;;18742:6:0;18729:9;:19;;18669:79;:118;;;;-1:-1:-1;;;;;;18766:21:0;;;;;;:17;:21;;;;;;;;18765:22;18669:118;:159;;;;-1:-1:-1;;;;;;18805:23:0;;;;;;:17;:23;;;;;;;;18804:24;18669:159;:186;;;;-1:-1:-1;;;;;;18845:10:0;;5512:42;18845:10;;18669:186;:219;;;;-1:-1:-1;;;;;;18872:16:0;;;;18669:219;:257;;;;-1:-1:-1;;;;;;18905:21:0;;18921:4;18905:21;;18669:257;:302;;;;-1:-1:-1;18959:11:0;;-1:-1:-1;;;;;18943:28:0;;;18959:11;;;;;18943:28;;18669:302;:345;;;;-1:-1:-1;19002:11:0;;-1:-1:-1;;;;;18988:26:0;;;19002:11;;;;;18988:26;;18669:345;18662:352;18576:446;-1:-1:-1;;;18576:446:0:o;21324:814::-;6307:6;:13;;-1:-1:-1;;;;6307:13:0;-1:-1:-1;;;6307:13:0;;;21431:4:::1;6307:13:::0;21411:26;;;:11:::1;:26;::::0;;;;;;;21446:9:::1;::::0;6307:13;21446:9;::::1;-1:-1:-1::0;;;;;21446:9:0::1;21411:46:::0;;;;;;;;-1:-1:-1;;21411:67:0::1;21407:166;;21515:4;21495:26;::::0;;;:11:::1;:26;::::0;;;;;;;21530:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21530:9:0::1;21495:46:::0;;;;;;;-1:-1:-1;;21495:66:0;;21407:166:::1;21617:16;::::0;;21631:1:::1;21617:16:::0;;;;;::::1;::::0;;21593:21:::1;::::0;21617:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21617:16:0::1;21593:40;;21662:4;21644;21649:1;21644:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;21644:23:0::1;;;-1:-1:-1::0;;;;;21644:23:0::1;;;::::0;::::1;21688:9;;;;;;;;;-1:-1:-1::0;;;;;21688:9:0::1;-1:-1:-1::0;;;;;21688:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21678:4;21683:1;21678:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21678:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21721:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;21721:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;21796:20;;21831:1:::1;::::0;21847:4;;21874::::1;::::0;21894:15:::1;::::0;21721:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21717:246;;21945:7;;;21717:246;22064:15;::::0;:66:::1;::::0;21996:21:::1;::::0;21975:18:::1;::::0;-1:-1:-1;;;;;22064:15:0;;::::1;::::0;22120:5:::1;::::0;22092:21:::1;::::0;21975:18;22064:66;21975:18;22064:66;22092:21;22064:15;22120:5;22064:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;6331:1:0::1;-1:-1:-1::0;6343:6:0;:14;;-1:-1:-1;;;;6343:14:0;;;21324:814::o;25426:804::-;25514:7;25534:18;25567:3;25563:205;;;-1:-1:-1;25600:9:0;:16;;;25563:205;;;25638:4;25634:134;;;-1:-1:-1;25672:9:0;:17;;;;;;25634:134;;;-1:-1:-1;25735:9:0;:21;;;;;;25634:134;25782:10;25796:1;25782:15;25778:39;;25808:6;25801:13;;;;;25778:39;25839:11;;;;;-1:-1:-1;;;;;25839:11:0;25863:4;25831:37;:110;;;;;25886:13;25903:1;25886:18;:54;;;;25921:13;25938:2;25921:19;25886:54;25827:138;;;-1:-1:-1;25958:4:0;25827:138;25975:17;5373:5;25995:19;26004:10;25995:6;:19;:::i;:::-;:38;;;;:::i;:::-;25975:58;-1:-1:-1;26048:13:0;;26044:141;;26094:4;26078:7;:22;;;;;;;;;;:35;;26104:9;;26078:7;:35;;26104:9;;26078:35;:::i;:::-;;;;-1:-1:-1;;26133:40:0;;391:25:1;;;26156:4:0;;-1:-1:-1;;;;;26133:40:0;;;;;379:2:1;364:18;26133:40:0;;;;;;;26044:141;26204:18;26213:9;26204:6;:18;:::i;22146:563::-;22229:16;;;;;;;22228:17;22220:65;;;;-1:-1:-1;;;22220:65:0;;27970:2:1;22220:65:0;;;27952:21:1;28009:2;27989:18;;;27982:30;28048:34;28028:18;;;28021:62;-1:-1:-1;;;28099:18:1;;;28092:33;28142:19;;22220:65:0;27768:399:1;22220:65:0;22301:20;22312:4;22318:2;22301:10;:20::i;:::-;22300:21;:37;;;;-1:-1:-1;22331:6:0;;-1:-1:-1;;;;;22325:12:0;;;22331:6;;22325:12;22300:37;22296:406;;;-1:-1:-1;;;;;22354:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;22354:30:0;;;22380:4;22354:30;;;;;;22399:19;:25;;;;;:32;;;;;;;;;;22446:16;:23;;-1:-1:-1;;22446:23:0;22354:30;22446:23;;;;;22496:11;;;;22484:114;;22542:11;:40;;-1:-1:-1;;;;;;22542:40:0;22576:4;22542:40;;;;;22484:114;22612:19;:26;;-1:-1:-1;;;;22612:26:0;-1:-1:-1;;;22612:26:0;;;22658:32;;-1:-1:-1;2242:41:1;;22658:32:0;;2230:2:1;2215:18;22658:32:0;2102:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:548::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1585:3;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1840:2;1833;1829:7;1824:2;1816:6;1812:15;1808:29;1797:9;1793:45;1789:54;1781:62;;;;1301:548;;;;:::o;2294:154::-;-1:-1:-1;;;;;2373:5:1;2369:54;2362:5;2359:65;2349:93;;2438:1;2435;2428:12;2453:315;2521:6;2529;2582:2;2570:9;2561:7;2557:23;2553:32;2550:52;;;2598:1;2595;2588:12;2550:52;2637:9;2624:23;2656:31;2681:5;2656:31;:::i;:::-;2706:5;2758:2;2743:18;;;;2730:32;;-1:-1:-1;;;2453:315:1:o;2773:247::-;2832:6;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;3025:388::-;3093:6;3101;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3209:9;3196:23;3228:31;3253:5;3228:31;:::i;:::-;3278:5;-1:-1:-1;3335:2:1;3320:18;;3307:32;3348:33;3307:32;3348:33;:::i;3418:456::-;3495:6;3503;3511;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;-1:-1:-1;3745:2:1;3730:18;;3717:32;3758:33;3717:32;3758:33;:::i;:::-;3418:456;;3810:7;;-1:-1:-1;;;3864:2:1;3849:18;;;;3836:32;;3418:456::o;3879:248::-;3947:6;3955;4008:2;3996:9;3987:7;3983:23;3979:32;3976:52;;;4024:1;4021;4014:12;3976:52;-1:-1:-1;;4047:23:1;;;4117:2;4102:18;;;4089:32;;-1:-1:-1;3879:248:1:o;4132:127::-;4193:10;4188:3;4184:20;4181:1;4174:31;4224:4;4221:1;4214:15;4248:4;4245:1;4238:15;4264:275;4335:2;4329:9;4400:2;4381:13;;-1:-1:-1;;4377:27:1;4365:40;;4435:18;4420:34;;4456:22;;;4417:62;4414:88;;;4482:18;;:::i;:::-;4518:2;4511:22;4264:275;;-1:-1:-1;4264:275:1:o;4544:183::-;4604:4;4637:18;4629:6;4626:30;4623:56;;;4659:18;;:::i;:::-;-1:-1:-1;4704:1:1;4700:14;4716:4;4696:25;;4544:183::o;4732:662::-;4786:5;4839:3;4832:4;4824:6;4820:17;4816:27;4806:55;;4857:1;4854;4847:12;4806:55;4893:6;4880:20;4919:4;4943:60;4959:43;4999:2;4959:43;:::i;:::-;4943:60;:::i;:::-;5037:15;;;5123:1;5119:10;;;;5107:23;;5103:32;;;5068:12;;;;5147:15;;;5144:35;;;5175:1;5172;5165:12;5144:35;5211:2;5203:6;5199:15;5223:142;5239:6;5234:3;5231:15;5223:142;;;5305:17;;5293:30;;5343:12;;;;5256;;5223:142;;;-1:-1:-1;5383:5:1;4732:662;-1:-1:-1;;;;;;4732:662:1:o;5399:1215::-;5517:6;5525;5578:2;5566:9;5557:7;5553:23;5549:32;5546:52;;;5594:1;5591;5584:12;5546:52;5634:9;5621:23;5663:18;5704:2;5696:6;5693:14;5690:34;;;5720:1;5717;5710:12;5690:34;5758:6;5747:9;5743:22;5733:32;;5803:7;5796:4;5792:2;5788:13;5784:27;5774:55;;5825:1;5822;5815:12;5774:55;5861:2;5848:16;5883:4;5907:60;5923:43;5963:2;5923:43;:::i;5907:60::-;6001:15;;;6083:1;6079:10;;;;6071:19;;6067:28;;;6032:12;;;;6107:19;;;6104:39;;;6139:1;6136;6129:12;6104:39;6163:11;;;;6183:217;6199:6;6194:3;6191:15;6183:217;;;6279:3;6266:17;6296:31;6321:5;6296:31;:::i;:::-;6340:18;;6216:12;;;;6378;;;;6183:217;;;6419:5;-1:-1:-1;;6462:18:1;;6449:32;;-1:-1:-1;;6493:16:1;;;6490:36;;;6522:1;6519;6512:12;6490:36;;6545:63;6600:7;6589:8;6578:9;6574:24;6545:63;:::i;:::-;6535:73;;;5399:1215;;;;;:::o;6808:159::-;6875:20;;6935:6;6924:18;;6914:29;;6904:57;;6957:1;6954;6947:12;6904:57;6808:159;;;:::o;6972:328::-;7046:6;7054;7062;7115:2;7103:9;7094:7;7090:23;7086:32;7083:52;;;7131:1;7128;7121:12;7083:52;7154:28;7172:9;7154:28;:::i;:::-;7144:38;;7201:37;7234:2;7223:9;7219:18;7201:37;:::i;:::-;7191:47;;7257:37;7290:2;7279:9;7275:18;7257:37;:::i;:::-;7247:47;;6972:328;;;;;:::o;7305:382::-;7370:6;7378;7431:2;7419:9;7410:7;7406:23;7402:32;7399:52;;;7447:1;7444;7437:12;7399:52;7486:9;7473:23;7505:31;7530:5;7505:31;:::i;7692:180::-;7751:6;7804:2;7792:9;7783:7;7779:23;7775:32;7772:52;;;7820:1;7817;7810:12;7772:52;-1:-1:-1;7843:23:1;;7692:180;-1:-1:-1;7692:180:1:o;8384:385::-;8470:6;8478;8486;8494;8547:3;8535:9;8526:7;8522:23;8518:33;8515:53;;;8564:1;8561;8554:12;8515:53;-1:-1:-1;;8587:23:1;;;8657:2;8642:18;;8629:32;;-1:-1:-1;8708:2:1;8693:18;;8680:32;;8759:2;8744:18;8731:32;;-1:-1:-1;8384:385:1;-1:-1:-1;8384:385:1:o;9393:127::-;9454:10;9449:3;9445:20;9442:1;9435:31;9485:4;9482:1;9475:15;9509:4;9506:1;9499:15;9525:422;9614:1;9657:5;9614:1;9671:270;9692:7;9682:8;9679:21;9671:270;;;9751:4;9747:1;9743:6;9739:17;9733:4;9730:27;9727:53;;;9760:18;;:::i;:::-;9810:7;9800:8;9796:22;9793:55;;;9830:16;;;;9793:55;9909:22;;;;9869:15;;;;9671:270;;;9675:3;9525:422;;;;;:::o;9952:806::-;10001:5;10031:8;10021:80;;-1:-1:-1;10072:1:1;10086:5;;10021:80;10120:4;10110:76;;-1:-1:-1;10157:1:1;10171:5;;10110:76;10202:4;10220:1;10215:59;;;;10288:1;10283:130;;;;10195:218;;10215:59;10245:1;10236:10;;10259:5;;;10283:130;10320:3;10310:8;10307:17;10304:43;;;10327:18;;:::i;:::-;-1:-1:-1;;10383:1:1;10369:16;;10398:5;;10195:218;;10497:2;10487:8;10484:16;10478:3;10472:4;10469:13;10465:36;10459:2;10449:8;10446:16;10441:2;10435:4;10432:12;10428:35;10425:77;10422:159;;;-1:-1:-1;10534:19:1;;;10566:5;;10422:159;10613:34;10638:8;10632:4;10613:34;:::i;:::-;10683:6;10679:1;10675:6;10671:19;10662:7;10659:32;10656:58;;;10694:18;;:::i;:::-;10732:20;;9952:806;-1:-1:-1;;;9952:806:1:o;10763:140::-;10821:5;10850:47;10891:4;10881:8;10877:19;10871:4;10850:47;:::i;10908:217::-;10948:1;10974;10964:132;;11018:10;11013:3;11009:20;11006:1;10999:31;11053:4;11050:1;11043:15;11081:4;11078:1;11071:15;10964:132;-1:-1:-1;11110:9:1;;10908:217::o;11470:168::-;11543:9;;;11574;;11591:15;;;11585:22;;11571:37;11561:71;;11612:18;;:::i;11643:128::-;11710:9;;;11731:11;;;11728:37;;;11745:18;;:::i;12543:127::-;12604:10;12599:3;12595:20;12592:1;12585:31;12635:4;12632:1;12625:15;12659:4;12656:1;12649:15;13022:197;13060:3;13088:6;13129:2;13122:5;13118:14;13156:2;13147:7;13144:15;13141:41;;13162:18;;:::i;:::-;13211:1;13198:15;;13022:197;-1:-1:-1;;;13022:197:1:o;13224:125::-;13289:9;;;13310:10;;;13307:36;;;13323:18;;:::i;14052:168::-;14119:6;14145:10;;;14157;;;14141:27;;14180:11;;;14177:37;;;14194:18;;:::i;:::-;14177:37;14052:168;;;;:::o;18342:245::-;18421:6;18429;18482:2;18470:9;18461:7;18457:23;18453:32;18450:52;;;18498:1;18495;18488:12;18450:52;-1:-1:-1;;18521:16:1;;18577:2;18562:18;;;18556:25;18521:16;;18556:25;;-1:-1:-1;18342:245:1:o;18948:184::-;19018:6;19071:2;19059:9;19050:7;19046:23;19042:32;19039:52;;;19087:1;19084;19077:12;19039:52;-1:-1:-1;19110:16:1;;18948:184;-1:-1:-1;18948:184:1:o;19439:245::-;19506:6;19559:2;19547:9;19538:7;19534:23;19530:32;19527:52;;;19575:1;19572;19565:12;19527:52;19607:9;19601:16;19626:28;19648:5;19626:28;:::i;20048:251::-;20118:6;20171:2;20159:9;20150:7;20146:23;20142:32;20139:52;;;20187:1;20184;20177:12;20139:52;20219:9;20213:16;20238:31;20263:5;20238:31;:::i;26527:1026::-;26789:4;26837:3;26826:9;26822:19;26868:6;26857:9;26850:25;26894:2;26932:6;26927:2;26916:9;26912:18;26905:34;26975:3;26970:2;26959:9;26955:18;26948:31;26999:6;27034;27028:13;27065:6;27057;27050:22;27103:3;27092:9;27088:19;27081:26;;27142:2;27134:6;27130:15;27116:29;;27163:1;27173:218;27187:6;27184:1;27181:13;27173:218;;;27252:13;;-1:-1:-1;;;;;27248:62:1;27236:75;;27366:15;;;;27331:12;;;;27209:1;27202:9;27173:218;;;-1:-1:-1;;;;;;;27447:55:1;;;;27442:2;27427:18;;27420:83;-1:-1:-1;;;27534:3:1;27519:19;27512:35;27408:3;26527:1026;-1:-1:-1;;;26527:1026:1:o

Swarm Source

ipfs://77b758e34a81707f9280613084cab33cd81ac24941dc37c3691c12e74b6b87d4
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.