ETH Price: $3,890.50 (-0.86%)

Token

ERC-20: Fire $ Ice (FireIce)
 

Overview

Max Total Supply

931,859.762631359 FireIce

Holders

105

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
defialloddssimp.eth
Balance
1,535.428547917 FireIce

Value
$0.00
0x6CFE0f1Cfc110be97C4D5Cc838F26c8f5Ca08f17
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:
FireIce

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-07
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.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);
}

contract FireIce is IERC20 {
    mapping (address => uint256) private _rOwned;
    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 _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private bots;

   
    uint256 constant private startingSupply = 1_000_000;
    string constant private _name = "Fire $ Ice";
    string constant private _symbol = "FireIce";
    uint8 constant private _decimals = 9;

    uint256 private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 development;
        uint16 burn;
        uint16 buyback;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        liquidity: 200,
        marketing: 1100,
        development: 1100,
        burn: 300,
        buyback: 300,
        totalSwap: 3000
    });

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

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable development;
        address payable liquidity;
        address payable buyback;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x883fA20cE0f859436bb847dD3459c7a5844De28e), 
        development: payable(0xAF0A9285F6244dCb6083E0A52CF865e6c873d617),
        liquidity: payable(0xD31882b24E09e515d58E0cb722F27a6459565Fcf),
        buyback: payable(DEAD)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 25) / 10000;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;

    address public buyback = address(this);

    uint256 public _totalBuyback;
    uint256 public _totalBurned;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }

    constructor () payable {
        // Set the owner.
        _owner = _taxWallets.development;

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

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

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

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // 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;

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

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

    function totalSupply() external view 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 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 isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

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

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

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

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        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 setRatios(uint16 liquidity, uint16 marketing, uint16 development, uint16 burn, uint16 _buyBack) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.development = development;
        _ratios.burn = burn;
        _ratios.buyback = _buyBack;
        _ratios.totalSwap = liquidity + marketing + development + _buyBack;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap + _ratios.burn <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable marketing, address payable development, address payable liquidity) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
        _taxWallets.development = payable(development);
        _taxWallets.liquidity = payable(liquidity);
    }

    function setPurchaseDestinations(address payable _buyBack) external onlyOwner {
        _taxWallets.buyback = payable(_buyBack);
    }

    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 getTotalBoughtBack() external view returns (uint256 buybackBoughtTotal) {
        buybackBoughtTotal = _totalBuyback;
    }

    function getTotalBurned() external view returns (uint256 burnedTotal) {
        burnedTotal = _totalBurned;
    }

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

    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");
        require(!bots[from] && !bots[to]);

        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) {
                revert("Trading not yet enabled!");
            }
            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) {
                    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 {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                _taxWallets.liquidity,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 buybackBalance = (buyback != address(0)) ? (amtBalance * ratios.buyback) / ratios.totalSwap : 0;
        uint256 marketingBalance = amtBalance - (developmentBalance + buybackBalance);
        if (marketingBalance > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 35000}("");
        }
        if (developmentBalance > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 35000}("");
        }
        if (buybackBalance > 0) {
            path[0] = dexRouter.WETH();
            path[1] = buyback;
            buyTokens(path, buybackBalance, _taxWallets.buyback);
        }
    }

    function buyTokens(address[] memory path, uint256 amount, address payable destination) internal {
        try dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}
        (
            0,
            path,
            destination,
            block.timestamp
        ) {
            if (path[1] ==  buyback) {
                _totalBuyback += amount;
            }
        } catch {
            return;
        }
    }

    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;
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
        _approve(address(this), address(dexRouter), type(uint256).max);

    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }

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

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        Ratios memory ratios = _ratios;
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 burnAmount = (feeAmount * ratios.burn) / (ratios.burn + ratios.totalSwap);
        uint256 swapAmt = feeAmount - burnAmount;
        if (swapAmt > 0) {
            _tOwned[address(this)] += swapAmt;
            emit Transfer(from, address(this), swapAmt);
        }
        if (burnAmount > 0) {
            _tTotal -= burnAmount;
            _totalBurned += burnAmount;
            emit Transfer(from, address(0), burnAmount);
        }
        
        

        return amount - feeAmount;
    }

    function blacklist (address _address) external onlyOwner {
        bots[_address] = true;
    }
    
    function removeFromBlacklist (address _address) external onlyOwner {
        bots[_address] = false;
    }
    
    function getIsBlacklistedStatus (address _address) external view returns (bool) {
        return bots[_address];
    }

}

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":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"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":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"liquidity","type":"address"},{"internalType":"address payable","name":"buyback","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBuyback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyback","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getIsBlacklistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"getTotalBoughtBack","outputs":[{"internalType":"uint256","name":"buybackBoughtTotal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBurned","outputs":[{"internalType":"uint256","name":"burnedTotal","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":[],"name":"lpPair","outputs":[{"internalType":"address","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":[],"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":"_address","type":"address"}],"name":"removeFromBlacklist","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":"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":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_buyBack","type":"address"}],"name":"setPurchaseDestinations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"_buyBack","type":"uint16"}],"name":"setRatios","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"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"liquidity","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":"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":"view","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"}]

60806040526000600355620000176009600a62000832565b6200002690620f42406200091d565b600981905560408051606080820183526103e88083526107d0602080850191909152928401819052600a805461ffff1990811690921763ffff0000199081166307d000001761ffff60201b199081166503e800000000178355865160c08101885260c880825261044c828901819052828a015261012c828801819052608080840191909152610bb860a090930192909252600b80549096161790921663044c0000171665044c000000001761ffff60301b191667012c0000000000001761ffff60401b191669012c00000000000000001761ffff60501b19166b0bb800000000000000000000179092558451918201855273883fa20ce0f859436bb847dd3459c7a5844de28e80835273af0a9285f6244dcb6083e0a52cf865e6c873d61794830185905273d31882b24e09e515d58e0cb722f27a6459565fcf95830186905261dead92909301829052600e80546001600160a01b03199081169094179055600f80548416909417909355601080548316909417909355601180549091169092179091556012805461ff001916905560165561271090620001c89060196200091d565b620001d49190620007c4565b60175560646009546002620001ea91906200091d565b620001f69190620007c4565b601855601980546001600160b01b031916306201000002179055600f54601c80546001600160a01b039092166001600160a01b031990921691909117905546603814156200026c57600c8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e001790556200037e565b4660611415620002b857600c805474d99d1c33f9fc3444f8101754abc46c52416550d100610100600160a81b0319909116179055601c80546001600160a01b031916331790556200037e565b4660011480620002c85750466004145b80620002d45750466003145b156200030857600c8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d001790556200037e565b4661a86a14156200034157600c8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d4001790556200037e565b4660fa14156200037957600c8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c29001790556200037e565b600080fd5b600954601c80546001600160a01b0390811660009081526001602052604080822085905592549251929091169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620003da91620007bb565b60405180910390a3600c60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043157600080fd5b505afa15801562000446573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046c91906200073a565b6001600160a01b031663c9c65396600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004c957600080fd5b505afa158015620004de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050491906200073a565b306040518363ffffffff1660e01b8152600401620005249291906200076a565b602060405180830381600087803b1580156200053f57600080fd5b505af115801562000554573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057a91906200073a565b600d80546001600160a01b0319166001600160a01b03928316179081905581166000908152600260205260409020805460ff19166001179055601c54600c54620005d292918216916101009091041660001962000675565b600c54620005f390309061010090046001600160a01b031660001962000675565b601c80546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548216831790559554909416835260059091529020805490921617905562000955565b6001600160a01b038316620006a75760405162461bcd60e51b81526004016200069e9062000784565b60405180910390fd5b6001600160a01b038216620006d05760405162461bcd60e51b81526004016200069e9062000784565b6001600160a01b0380841660008181526004602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906200072d908590620007bb565b60405180910390a3505050565b6000602082840312156200074c578081fd5b81516001600160a01b038116811462000763578182fd5b9392505050565b6001600160a01b0392831681529116602082015260400190565b60208082526013908201527f45524332303a205a65726f204164647265737300000000000000000000000000604082015260600190565b90815260200190565b600082620007e057634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611620007f9575062000829565b8187048211156200080e576200080e6200093f565b808616156200081c57918102915b9490941c938002620007e8565b94509492505050565b60006200076360001960ff851684600082620008515750600162000763565b81620008605750600062000763565b81600181146200087957600281146200088457620008b8565b600191505062000763565b60ff8411156200089857620008986200093f565b6001841b915084821115620008b157620008b16200093f565b5062000763565b5060208310610133831016604e8410600b8410161715620008f0575081810a83811115620008ea57620008ea6200093f565b62000763565b620008ff8484846001620007e5565b8086048211156200091457620009146200093f565b02949350505050565b60008160001904831182151516156200093a576200093a6200093f565b500290565b634e487b7160e01b600052601160045260246000fd5b6133d680620009656000396000f3fe60806040526004361061036f5760003560e01c80634fbee193116101c6578063b1b08f71116100f7578063f08f43a211610095578063f9f92be41161006f578063f9f92be4146108f9578063fb78680d14610919578063fd01bd4c14610939578063fdb78c0e1461094e57610376565b8063f08f43a21461089f578063f8ec6911146108bf578063f94aa1b4146108d457610376565b8063b7df8b36116100d1578063b7df8b3614610823578063bfc2fc3514610838578063cf84770614610858578063dd62ed3e1461087f57610376565b8063b1b08f711461051b578063b3d514fb1461051b578063b55cd04b1461080e57610376565b806370a0823111610164578063893d20e81161013e578063893d20e8146107af5780638a8c523c146107c457806395d89b41146107d9578063a9059cbb146107ee57610376565b806370a082311461075a578063715018a61461077a57806375cb1bd11461078f57610376565b8063590ffdce116101a0578063590ffdce146106e55780635cce86cd146107055780636e182809146107255780636ebd00781461074557610376565b80634fbee1931461069057806350a8e016146106b0578063537df3b6146106c557610376565b80632b28fc7a116102a057806346ea7ac81161023e5780634b3c109a116102185780634b3c109a1461061b5780634bbb93eb146106305780634e718e48146106505780634fb2e45d1461067057610376565b806346ea7ac8146105dc57806348726021146105f15780634ada218b1461060657610376565b806332cde6641161027a57806332cde6641461056757806336fddb04146105875780633f3cf56c146105a7578063452ed4f1146105c757610376565b80632b28fc7a1461051b5780632e8fa82114610530578063313ce5671461054557610376565b8063095ea7b31161030d57806323b872dd116102e757806323b872dd146104af57806326003957146104cf57806328577751146104f15780632b112e491461050657610376565b8063095ea7b3146104655780630fa604e41461048557806318160ddd1461049a57610376565b806306fdde031161034957806306fdde03146103ec5780630758d9241461040e57806307dd79e014610423578063084e4f8a1461044557610376565b806303fd2a451461037b5780630445b667146103a6578063069d955f146103c857610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610963565b60405161039d9190612a3f565b60405180910390f35b3480156103b257600080fd5b506103bb610969565b60405161039d9190613143565b3480156103d457600080fd5b506103dd61096f565b60405161039d939291906130f0565b3480156103f857600080fd5b5061040161098e565b60405161039d9190612af9565b34801561041a57600080fd5b506103906109b2565b34801561042f57600080fd5b506104386109c6565b60405161039d9190612ab9565b34801561045157600080fd5b50610438610460366004612748565b6109cf565b34801561047157600080fd5b50610438610480366004612876565b6109f1565b34801561049157600080fd5b506103bb610a07565b3480156104a657600080fd5b506103bb610a27565b3480156104bb57600080fd5b506104386104ca366004612802565b610a2d565b3480156104db57600080fd5b506104ef6104ea36600461297a565b610aa7565b005b3480156104fd57600080fd5b506103bb610b40565b34801561051257600080fd5b506103bb610b46565b34801561052757600080fd5b506103bb610b74565b34801561053c57600080fd5b506103bb610b7a565b34801561055157600080fd5b5061055a610b80565b60405161039d9190613196565b34801561057357600080fd5b506104ef6105823660046128bc565b610b85565b34801561059357600080fd5b506104ef6105a2366004612842565b610c69565b3480156105b357600080fd5b506104ef6105c236600461297a565b610cbe565b3480156105d357600080fd5b50610390610d5b565b3480156105e857600080fd5b506103bb610d6a565b3480156105fd57600080fd5b506103bb610d70565b34801561061257600080fd5b50610438610d76565b34801561062757600080fd5b506103bb610d7f565b34801561063c57600080fd5b506103bb61064b366004612962565b610d85565b34801561065c57600080fd5b506104ef61066b366004612962565b610dbd565b34801561067c57600080fd5b506104ef61068b366004612748565b610e0d565b34801561069c57600080fd5b506104386106ab366004612748565b610f40565b3480156106bc57600080fd5b50610438610f5e565b3480156106d157600080fd5b506104ef6106e0366004612748565b610f6c565b3480156106f157600080fd5b506104ef610700366004612842565b610fb7565b34801561071157600080fd5b50610438610720366004612748565b61100c565b34801561073157600080fd5b506104ef610740366004612748565b61102a565b34801561075157600080fd5b506103bb611076565b34801561076657600080fd5b506103bb610775366004612748565b611091565b34801561078657600080fd5b506104ef6110ac565b34801561079b57600080fd5b506104ef6107aa366004612780565b61113b565b3480156107bb57600080fd5b506103906111a4565b3480156107d057600080fd5b506104ef6111b3565b3480156107e557600080fd5b506104016112b7565b3480156107fa57600080fd5b50610438610809366004612876565b6112d8565b34801561081a57600080fd5b506103bb6112ef565b34801561082f57600080fd5b506104386112f5565b34801561084457600080fd5b506104ef6108533660046128a1565b6112fe565b34801561086457600080fd5b5061086d611385565b60405161039d9695949392919061310e565b34801561088b57600080fd5b506103bb61089a3660046127ca565b6113c1565b3480156108ab57600080fd5b506104ef6108ba3660046128fe565b6113ec565b3480156108cb57600080fd5b50610390611524565b3480156108e057600080fd5b506108e9611539565b60405161039d9493929190612a53565b34801561090557600080fd5b506104ef610914366004612748565b61155d565b34801561092557600080fd5b506104ef6109343660046129c8565b6115ab565b34801561094557600080fd5b506103bb6116ea565b34801561095a57600080fd5b506104386116f0565b61dead81565b60135481565b600a5461ffff80821691620100008104821691600160201b9091041683565b60408051808201909152600a8152694669726520242049636560b01b602082015290565b600c5461010090046001600160a01b031681565b600c5460ff1681565b6001600160a01b03811660009081526008602052604090205460ff165b919050565b60006109fe3384846116fe565b50600192915050565b6000610a156009600a613248565b601854610a2291906131e2565b905090565b60095490565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a92576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a8c90849061335b565b90915550505b610a9d8484846117b2565b90505b9392505050565b601c546001600160a01b03163314610ada5760405162461bcd60e51b8152600401610ad190612c16565b60405180910390fd5b6064600954610ae991906131e2565b8183600954610af89190613319565b610b0291906131e2565b1015610b205760405162461bcd60e51b8152600401610ad190612bc6565b8082600954610b2f9190613319565b610b3991906131e2565b6018555050565b60165481565b6000610b526000611091565b610b5d61dead611091565b610b6791906131ca565b600954610a22919061335b565b6107d081565b60145481565b600990565b601c546001600160a01b03163314610baf5760405162461bcd60e51b8152600401610ad190612c16565b6107d08361ffff1611158015610bcb57506107d08261ffff1611155b8015610bdd57506107d08161ffff1611155b610bf95760405162461bcd60e51b8152600401610ad190612cc6565b610bb8610c0683856131a4565b61ffff161115610c285760405162461bcd60e51b8152600401610ad190612d81565b600a805461ffff191661ffff9485161763ffff0000191662010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b601c546001600160a01b03163314610c935760405162461bcd60e51b8152600401610ad190612c16565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610ce85760405162461bcd60e51b8152600401610ad190612c16565b6103e86009546005610cfa9190613319565b610d0491906131e2565b8183600954610d139190613319565b610d1d91906131e2565b1015610d3b5760405162461bcd60e51b8152600401610ad190612f3c565b8082600954610d4a9190613319565b610d5491906131e2565b6017555050565b600d546001600160a01b031681565b610bb881565b601a5490565b60195460ff1681565b601a5481565b600d54600090612710908390610da3906001600160a01b0316611091565b610dad9190613319565b610db791906131e2565b92915050565b601c546001600160a01b03163314610de75760405162461bcd60e51b8152600401610ad190612c16565b6096811115610e085760405162461bcd60e51b8152600401610ad1906130c0565b601655565b601c546001600160a01b03163314610e375760405162461bcd60e51b8152600401610ad190612c16565b6001600160a01b038116610e5d5760405162461bcd60e51b8152600401610ad190613063565b6001600160a01b03811661dead1415610e885760405162461bcd60e51b8152600401610ad190613063565b601c54610e9f906001600160a01b03166000610fb7565b610eaa816001610fb7565b601c54600090610ec2906001600160a01b0316611091565b1115610eee57601c54610eec906001600160a01b031682610ee282611091565b6000806001611a93565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b031660009081526006602052604090205460ff1690565b601954610100900460ff1681565b601c546001600160a01b03163314610f965760405162461bcd60e51b8152600401610ad190612c16565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b03163314610fe15760405162461bcd60e51b8152600401610ad190612c16565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526007602052604090205460ff1690565b601c546001600160a01b031633146110545760405162461bcd60e51b8152600401610ad190612c16565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60006110846009600a613248565b601754610a2291906131e2565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146110d65760405162461bcd60e51b8152600401610ad190612c16565b601c546110ed906001600160a01b03166000610fb7565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b031633146111655760405162461bcd60e51b8152600401610ad190612c16565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031690565b601c546001600160a01b031633146111dd5760405162461bcd60e51b8152600401610ad190612c16565b60195460ff16156112005760405162461bcd60e51b8152600401610ad19061302c565b601954610100900460ff166112275760405162461bcd60e51b8152600401610ad190612dfe565b6019805460ff19166001179055600d546127109061124d906001600160a01b0316611091565b61125890600a613319565b61126291906131e2565b601355600d546127109061127e906001600160a01b0316611091565b61128990601e613319565b61129391906131e2565b601455600c546112b590309061010090046001600160a01b03166000196116fe565b565b6040805180820190915260078152664669726549636560c81b602082015290565b60006112e53384846117b2565b5060019392505050565b601b5490565b60155460ff1681565b601c546001600160a01b031633146113285760405162461bcd60e51b8152600401610ad190612c16565b6012805461ff001916610100841515021790556015805460ff19168215151790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611379908490612ab9565b60405180910390a15050565b600b5461ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b601c546001600160a01b031633146114165760405162461bcd60e51b8152600401610ad190612c16565b600b805461ffff191661ffff8781169190911763ffff0000191662010000878316021765ffff000000001916600160201b868316021767ffff0000000000001916600160301b858316021769ffff00000000000000001916600160401b91841691909102179055808361148986886131a4565b61149391906131a4565b61149d91906131a4565b600b805461ffff60501b1916600160501b61ffff93841602179055600a546000916114d191620100008104821691166131a4565b600b5461ffff918216925082916114fa91600160301b8104821691600160501b909104166131a4565b61ffff16111561151c5760405162461bcd60e51b8152600401610ad190612eac565b505050505050565b6019546201000090046001600160a01b031681565b600e54600f546010546011546001600160a01b039384169392831692918216911684565b601c546001600160a01b031633146115875760405162461bcd60e51b8152600401610ad190612c16565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b031633146115d55760405162461bcd60e51b8152600401610ad190612c16565b82846009546115e49190613319565b6115ee91906131e2565b6013556009548190611601908490613319565b61160b91906131e2565b601481905560135411156116315760405162461bcd60e51b8152600401610ad190612d40565b600d546127109061164a906001600160a01b0316611091565b611655906096613319565b61165f91906131e2565b60145411156116805760405162461bcd60e51b8152600401610ad190612cfd565b620f424060095461169191906131e2565b60145410156116b25760405162461bcd60e51b8152600401610ad190612f99565b620f42406009546116c391906131e2565b60135410156116e45760405162461bcd60e51b8152600401610ad190612f99565b50505050565b601b5481565b601254610100900460ff1681565b6001600160a01b0383166117245760405162461bcd60e51b8152600401610ad190612e7f565b6001600160a01b03821661174a5760405162461bcd60e51b8152600401610ad190612e7f565b6001600160a01b0380841660008181526004602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906117a5908590613143565b60405180910390a3505050565b60006001600160a01b0384166117da5760405162461bcd60e51b8152600401610ad190612fe7565b6001600160a01b0383166118005760405162461bcd60e51b8152600401610ad190612b4c565b600082116118205760405162461bcd60e51b8152600401610ad190612ef3565b6001600160a01b03841660009081526008602052604090205460ff1615801561186257506001600160a01b03831660009081526008602052604090205460ff16155b61186b57600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff161561189957600192506118c7565b6001600160a01b03861660009081526002602052604090205460ff16156118c357600191506118c7565b5060015b6118d18787611c13565b156119ea5760195460ff166118f85760405162461bcd60e51b8152600401610ad190612b8f565b82806119015750815b1561196f576001600160a01b03871660009081526007602052604090205460ff1615801561194857506001600160a01b03861660009081526007602052604090205460ff16155b1561196f5760175485111561196f5760405162461bcd60e51b8152600401610ad190612db6565b600c546001600160a01b038781166101009092041614801590611990575081155b156119ea576001600160a01b03861660009081526007602052604090205460ff166119ea57601854856119c288611091565b6119cc91906131ca565b11156119ea5760405162461bcd60e51b8152600401610ad190612e35565b8115611a7a5760125460ff16611a7a57601254610100900460ff1615611a7a576000611a1530611091565b90506013548110611a785760145460155460ff1615611a6257601654600d546127109190611a4b906001600160a01b0316611091565b611a559190613319565b611a5f91906131e2565b90505b808210611a6d578091505b611a7682611ce9565b505b505b611a88878787868686611a93565b979650505050505050565b601954600090610100900460ff16611af357611aaf878761235f565b601954610100900460ff16158015611acc5750611acc8787611c13565b8015611ad6575081155b15611af35760405162461bcd60e51b8152600401610ad190612c84565b6001600160a01b03871660009081526006602052604090205460019060ff1680611b3557506001600160a01b03871660009081526006602052604090205460ff165b15611b3e575060005b6001600160a01b03881660009081526001602052604081208054889290611b6690849061335b565b909155506000905081611b795786611b85565b611b858987878a61243c565b6001600160a01b038916600090815260016020526040812080549293508392909190611bb29084906131ca565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bfc9190613143565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b03848116911614801590611c425750601c546001600160a01b03838116911614155b8015611c595750601c546001600160a01b03163214155b8015611c7e57506001600160a01b03821660009081526005602052604090205460ff16155b8015611ca357506001600160a01b03831660009081526005602052604090205460ff16155b8015611cba57506001600160a01b03821661dead14155b8015611cce57506001600160a01b03821615155b8015610aa057506001600160a01b0383163014159392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201819052611d5f5750612352565b306000908152600460209081526040808320600c5461010090046001600160a01b0316845290915290205460001914611dc257306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff1685611de39190613319565b611ded91906131e2565b611df791906131e2565b90506000611e05828561335b565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611e4d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ebb57600080fd5b505afa158015611ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef39190612764565b81600181518110611f1457634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac94790611f6190859060009086903090429060040161314c565b600060405180830381600087803b158015611f7b57600080fd5b505af1925050508015611f8c575060015b611f995750505050612352565b47600083611fa78684613319565b611fb191906131e2565b9050841561209457600c5460105460405163f305d71960e01b81526001600160a01b0361010090930483169263f305d719928592611ffe9230928c92600092839216904290600401612a7e565b6060604051808303818588803b15801561201757600080fd5b505af193505050508015612048575060408051601f3d908101601f191682019092526120459181019061299b565b60015b61205757505050505050612352565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506818660405161208b929190613188565b60405180910390a15b61209e818361335b565b915085600001518660a0018181516120b69190613338565b61ffff90811690915260a08801516040890151600093508392918216916120de911686613319565b6120e891906131e2565b6019549091506000906201000090046001600160a01b031661210b576000612132565b8860a0015161ffff16896080015161ffff16866121289190613319565b61213291906131e2565b9050600061214082846131ca565b61214a908761335b565b905080156121bc57600e546040516001600160a01b03909116906188b890839061217390612a3c565b600060405180830381858888f193505050503d80600081146121b1576040519150601f19603f3d011682016040523d82523d6000602084013e6121b6565b606091505b50909450505b821561222c57600f546040516001600160a01b03909116906188b89085906121e390612a3c565b600060405180830381858888f193505050503d8060008114612221576040519150601f19603f3d011682016040523d82523d6000602084013e612226565b606091505b50909450505b811561234757600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561228057600080fd5b505afa158015612294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b89190612764565b876000815181106122d957634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061232057634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601154612347918991859116612641565b505050505050505050505b506012805460ff19169055565b601954610100900460ff16156123875760405162461bcd60e51b8152600401610ad190612c41565b6123918282611c13565b1580156123ab5750600d546001600160a01b038281169116145b15612438576001600160a01b03821660009081526005602090815260408083208054600160ff199182168117909255600690935292819020805490921683179091556019805461010061ff00199182168117909255601280549091169091179055517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579161137991612ab9565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156124b05750600a5461ffff166124d9565b84156124c95750600a5462010000900461ffff166124d9565b50600a54600160201b900461ffff165b60006127106124e88387613319565b6124f291906131e2565b905060008360a00151846060015161250a91906131a4565b61ffff16846060015161ffff16836125229190613319565b61252c91906131e2565b9050600061253a828461335b565b905080156125ac5730600090815260016020526040812080548392906125619084906131ca565b909155505060405130906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125a3908590613143565b60405180910390a35b81156126295781600960008282546125c4919061335b565b9250508190555081601b60008282546125dd91906131ca565b90915550506040516000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612620908690613143565b60405180910390a35b612633838861335b565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de9590849061267e90600090889087904290600401612ac4565b6000604051808303818588803b15801561269757600080fd5b505af1935050505080156126a9575060015b6126b257612721565b601960029054906101000a90046001600160a01b03166001600160a01b0316836001815181106126f257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614156127215781601a600082825461271b91906131ca565b90915550505b505050565b803580151581146109ec57600080fd5b803561ffff811681146109ec57600080fd5b600060208284031215612759578081fd5b8135610aa081613388565b600060208284031215612775578081fd5b8151610aa081613388565b600080600060608486031215612794578182fd5b833561279f81613388565b925060208401356127af81613388565b915060408401356127bf81613388565b809150509250925092565b600080604083850312156127dc578182fd5b82356127e781613388565b915060208301356127f781613388565b809150509250929050565b600080600060608486031215612816578283fd5b833561282181613388565b9250602084013561283181613388565b929592945050506040919091013590565b60008060408385031215612854578182fd5b823561285f81613388565b915061286d60208401612726565b90509250929050565b60008060408385031215612888578182fd5b823561289381613388565b946020939093013593505050565b600080604083850312156128b3578182fd5b61285f83612726565b6000806000606084860312156128d0578283fd5b6128d984612736565b92506128e760208501612736565b91506128f560408501612736565b90509250925092565b600080600080600060a08688031215612915578081fd5b61291e86612736565b945061292c60208701612736565b935061293a60408701612736565b925061294860608701612736565b915061295660808701612736565b90509295509295909350565b600060208284031215612973578081fd5b5035919050565b6000806040838503121561298c578182fd5b50508035926020909101359150565b6000806000606084860312156129af578283fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156129dd578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b83811015612a315781516001600160a01b031687529582019590820190600101612a0c565b509495945050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401529083166040830152909116606082015260800190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b600085825260806020830152612add60808301866129f9565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b81811015612b2557858101830151858201604001528201612b09565b81811115612b365783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526018908201527f54726164696e67206e6f742079657420656e61626c6564210000000000000000604082015260600190565b60208082526030908201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060408201526f37b3103a37ba30b61039bab838363c9760811b606082015260800190565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60408201526232b21760e91b606082015260800190565b60208082526022908201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604082015261371760f11b606082015260800190565b60208082526017908201527f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000604082015260600190565b60208082526023908201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060408201526228249760e91b606082015260800190565b60208082526021908201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746040820152601760f91b606082015260800190565b6020808252818101527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e604082015260600190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526018908201527f4c6971756964697479206d7573742062652061646465642e0000000000000000604082015260600190565b6020808252602a908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526930b63632ba29b4bd329760b11b606082015260800190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60208082526027908201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60408201526636103332b2b99760c91b606082015260800190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526037908201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660408201527f6520302e3525206f6620746f74616c20737570706c792e000000000000000000606082015260800190565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f54726164696e6720616c726561647920656e61626c6564210000000000000000604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60208082526016908201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b604082015260600190565b61ffff93841681529183166020830152909116604082015260600190565b61ffff96871681529486166020860152928516604085015290841660608401528316608083015290911660a082015260c00190565b90815260200190565b600086825285602083015260a0604083015261316b60a08301866129f9565b6001600160a01b0394909416606083015250608001529392505050565b918252602082015260400190565b60ff91909116815260200190565b600061ffff8083168185168083038211156131c1576131c1613372565b01949350505050565b600082198211156131dd576131dd613372565b500190565b6000826131fd57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611613214575061323f565b81870482111561322657613226613372565b8086161561323357918102915b9490941c938002613205565b94509492505050565b6000610aa060001960ff85168460008261326457506001610aa0565b8161327157506000610aa0565b81600181146132875760028114613291576132be565b6001915050610aa0565b60ff8411156132a2576132a2613372565b6001841b9150848211156132b8576132b8613372565b50610aa0565b5060208310610133831016604e8410600b84101617156132f1575081810a838111156132ec576132ec613372565b610aa0565b6132fe8484846001613202565b80860482111561331057613310613372565b02949350505050565b600081600019048311821515161561333357613333613372565b500290565b600061ffff8381169083168181101561335357613353613372565b039392505050565b60008282101561336d5761336d613372565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461339d57600080fd5b5056fea2646970667358221220800da958cdeafffeba25f735de83db89a96d0c68add8f80096d725b700a065b464736f6c63430008000033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c80634fbee193116101c6578063b1b08f71116100f7578063f08f43a211610095578063f9f92be41161006f578063f9f92be4146108f9578063fb78680d14610919578063fd01bd4c14610939578063fdb78c0e1461094e57610376565b8063f08f43a21461089f578063f8ec6911146108bf578063f94aa1b4146108d457610376565b8063b7df8b36116100d1578063b7df8b3614610823578063bfc2fc3514610838578063cf84770614610858578063dd62ed3e1461087f57610376565b8063b1b08f711461051b578063b3d514fb1461051b578063b55cd04b1461080e57610376565b806370a0823111610164578063893d20e81161013e578063893d20e8146107af5780638a8c523c146107c457806395d89b41146107d9578063a9059cbb146107ee57610376565b806370a082311461075a578063715018a61461077a57806375cb1bd11461078f57610376565b8063590ffdce116101a0578063590ffdce146106e55780635cce86cd146107055780636e182809146107255780636ebd00781461074557610376565b80634fbee1931461069057806350a8e016146106b0578063537df3b6146106c557610376565b80632b28fc7a116102a057806346ea7ac81161023e5780634b3c109a116102185780634b3c109a1461061b5780634bbb93eb146106305780634e718e48146106505780634fb2e45d1461067057610376565b806346ea7ac8146105dc57806348726021146105f15780634ada218b1461060657610376565b806332cde6641161027a57806332cde6641461056757806336fddb04146105875780633f3cf56c146105a7578063452ed4f1146105c757610376565b80632b28fc7a1461051b5780632e8fa82114610530578063313ce5671461054557610376565b8063095ea7b31161030d57806323b872dd116102e757806323b872dd146104af57806326003957146104cf57806328577751146104f15780632b112e491461050657610376565b8063095ea7b3146104655780630fa604e41461048557806318160ddd1461049a57610376565b806306fdde031161034957806306fdde03146103ec5780630758d9241461040e57806307dd79e014610423578063084e4f8a1461044557610376565b806303fd2a451461037b5780630445b667146103a6578063069d955f146103c857610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610963565b60405161039d9190612a3f565b60405180910390f35b3480156103b257600080fd5b506103bb610969565b60405161039d9190613143565b3480156103d457600080fd5b506103dd61096f565b60405161039d939291906130f0565b3480156103f857600080fd5b5061040161098e565b60405161039d9190612af9565b34801561041a57600080fd5b506103906109b2565b34801561042f57600080fd5b506104386109c6565b60405161039d9190612ab9565b34801561045157600080fd5b50610438610460366004612748565b6109cf565b34801561047157600080fd5b50610438610480366004612876565b6109f1565b34801561049157600080fd5b506103bb610a07565b3480156104a657600080fd5b506103bb610a27565b3480156104bb57600080fd5b506104386104ca366004612802565b610a2d565b3480156104db57600080fd5b506104ef6104ea36600461297a565b610aa7565b005b3480156104fd57600080fd5b506103bb610b40565b34801561051257600080fd5b506103bb610b46565b34801561052757600080fd5b506103bb610b74565b34801561053c57600080fd5b506103bb610b7a565b34801561055157600080fd5b5061055a610b80565b60405161039d9190613196565b34801561057357600080fd5b506104ef6105823660046128bc565b610b85565b34801561059357600080fd5b506104ef6105a2366004612842565b610c69565b3480156105b357600080fd5b506104ef6105c236600461297a565b610cbe565b3480156105d357600080fd5b50610390610d5b565b3480156105e857600080fd5b506103bb610d6a565b3480156105fd57600080fd5b506103bb610d70565b34801561061257600080fd5b50610438610d76565b34801561062757600080fd5b506103bb610d7f565b34801561063c57600080fd5b506103bb61064b366004612962565b610d85565b34801561065c57600080fd5b506104ef61066b366004612962565b610dbd565b34801561067c57600080fd5b506104ef61068b366004612748565b610e0d565b34801561069c57600080fd5b506104386106ab366004612748565b610f40565b3480156106bc57600080fd5b50610438610f5e565b3480156106d157600080fd5b506104ef6106e0366004612748565b610f6c565b3480156106f157600080fd5b506104ef610700366004612842565b610fb7565b34801561071157600080fd5b50610438610720366004612748565b61100c565b34801561073157600080fd5b506104ef610740366004612748565b61102a565b34801561075157600080fd5b506103bb611076565b34801561076657600080fd5b506103bb610775366004612748565b611091565b34801561078657600080fd5b506104ef6110ac565b34801561079b57600080fd5b506104ef6107aa366004612780565b61113b565b3480156107bb57600080fd5b506103906111a4565b3480156107d057600080fd5b506104ef6111b3565b3480156107e557600080fd5b506104016112b7565b3480156107fa57600080fd5b50610438610809366004612876565b6112d8565b34801561081a57600080fd5b506103bb6112ef565b34801561082f57600080fd5b506104386112f5565b34801561084457600080fd5b506104ef6108533660046128a1565b6112fe565b34801561086457600080fd5b5061086d611385565b60405161039d9695949392919061310e565b34801561088b57600080fd5b506103bb61089a3660046127ca565b6113c1565b3480156108ab57600080fd5b506104ef6108ba3660046128fe565b6113ec565b3480156108cb57600080fd5b50610390611524565b3480156108e057600080fd5b506108e9611539565b60405161039d9493929190612a53565b34801561090557600080fd5b506104ef610914366004612748565b61155d565b34801561092557600080fd5b506104ef6109343660046129c8565b6115ab565b34801561094557600080fd5b506103bb6116ea565b34801561095a57600080fd5b506104386116f0565b61dead81565b60135481565b600a5461ffff80821691620100008104821691600160201b9091041683565b60408051808201909152600a8152694669726520242049636560b01b602082015290565b600c5461010090046001600160a01b031681565b600c5460ff1681565b6001600160a01b03811660009081526008602052604090205460ff165b919050565b60006109fe3384846116fe565b50600192915050565b6000610a156009600a613248565b601854610a2291906131e2565b905090565b60095490565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a92576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a8c90849061335b565b90915550505b610a9d8484846117b2565b90505b9392505050565b601c546001600160a01b03163314610ada5760405162461bcd60e51b8152600401610ad190612c16565b60405180910390fd5b6064600954610ae991906131e2565b8183600954610af89190613319565b610b0291906131e2565b1015610b205760405162461bcd60e51b8152600401610ad190612bc6565b8082600954610b2f9190613319565b610b3991906131e2565b6018555050565b60165481565b6000610b526000611091565b610b5d61dead611091565b610b6791906131ca565b600954610a22919061335b565b6107d081565b60145481565b600990565b601c546001600160a01b03163314610baf5760405162461bcd60e51b8152600401610ad190612c16565b6107d08361ffff1611158015610bcb57506107d08261ffff1611155b8015610bdd57506107d08161ffff1611155b610bf95760405162461bcd60e51b8152600401610ad190612cc6565b610bb8610c0683856131a4565b61ffff161115610c285760405162461bcd60e51b8152600401610ad190612d81565b600a805461ffff191661ffff9485161763ffff0000191662010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b601c546001600160a01b03163314610c935760405162461bcd60e51b8152600401610ad190612c16565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610ce85760405162461bcd60e51b8152600401610ad190612c16565b6103e86009546005610cfa9190613319565b610d0491906131e2565b8183600954610d139190613319565b610d1d91906131e2565b1015610d3b5760405162461bcd60e51b8152600401610ad190612f3c565b8082600954610d4a9190613319565b610d5491906131e2565b6017555050565b600d546001600160a01b031681565b610bb881565b601a5490565b60195460ff1681565b601a5481565b600d54600090612710908390610da3906001600160a01b0316611091565b610dad9190613319565b610db791906131e2565b92915050565b601c546001600160a01b03163314610de75760405162461bcd60e51b8152600401610ad190612c16565b6096811115610e085760405162461bcd60e51b8152600401610ad1906130c0565b601655565b601c546001600160a01b03163314610e375760405162461bcd60e51b8152600401610ad190612c16565b6001600160a01b038116610e5d5760405162461bcd60e51b8152600401610ad190613063565b6001600160a01b03811661dead1415610e885760405162461bcd60e51b8152600401610ad190613063565b601c54610e9f906001600160a01b03166000610fb7565b610eaa816001610fb7565b601c54600090610ec2906001600160a01b0316611091565b1115610eee57601c54610eec906001600160a01b031682610ee282611091565b6000806001611a93565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b031660009081526006602052604090205460ff1690565b601954610100900460ff1681565b601c546001600160a01b03163314610f965760405162461bcd60e51b8152600401610ad190612c16565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b03163314610fe15760405162461bcd60e51b8152600401610ad190612c16565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526007602052604090205460ff1690565b601c546001600160a01b031633146110545760405162461bcd60e51b8152600401610ad190612c16565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60006110846009600a613248565b601754610a2291906131e2565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146110d65760405162461bcd60e51b8152600401610ad190612c16565b601c546110ed906001600160a01b03166000610fb7565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b031633146111655760405162461bcd60e51b8152600401610ad190612c16565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031690565b601c546001600160a01b031633146111dd5760405162461bcd60e51b8152600401610ad190612c16565b60195460ff16156112005760405162461bcd60e51b8152600401610ad19061302c565b601954610100900460ff166112275760405162461bcd60e51b8152600401610ad190612dfe565b6019805460ff19166001179055600d546127109061124d906001600160a01b0316611091565b61125890600a613319565b61126291906131e2565b601355600d546127109061127e906001600160a01b0316611091565b61128990601e613319565b61129391906131e2565b601455600c546112b590309061010090046001600160a01b03166000196116fe565b565b6040805180820190915260078152664669726549636560c81b602082015290565b60006112e53384846117b2565b5060019392505050565b601b5490565b60155460ff1681565b601c546001600160a01b031633146113285760405162461bcd60e51b8152600401610ad190612c16565b6012805461ff001916610100841515021790556015805460ff19168215151790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611379908490612ab9565b60405180910390a15050565b600b5461ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b601c546001600160a01b031633146114165760405162461bcd60e51b8152600401610ad190612c16565b600b805461ffff191661ffff8781169190911763ffff0000191662010000878316021765ffff000000001916600160201b868316021767ffff0000000000001916600160301b858316021769ffff00000000000000001916600160401b91841691909102179055808361148986886131a4565b61149391906131a4565b61149d91906131a4565b600b805461ffff60501b1916600160501b61ffff93841602179055600a546000916114d191620100008104821691166131a4565b600b5461ffff918216925082916114fa91600160301b8104821691600160501b909104166131a4565b61ffff16111561151c5760405162461bcd60e51b8152600401610ad190612eac565b505050505050565b6019546201000090046001600160a01b031681565b600e54600f546010546011546001600160a01b039384169392831692918216911684565b601c546001600160a01b031633146115875760405162461bcd60e51b8152600401610ad190612c16565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b031633146115d55760405162461bcd60e51b8152600401610ad190612c16565b82846009546115e49190613319565b6115ee91906131e2565b6013556009548190611601908490613319565b61160b91906131e2565b601481905560135411156116315760405162461bcd60e51b8152600401610ad190612d40565b600d546127109061164a906001600160a01b0316611091565b611655906096613319565b61165f91906131e2565b60145411156116805760405162461bcd60e51b8152600401610ad190612cfd565b620f424060095461169191906131e2565b60145410156116b25760405162461bcd60e51b8152600401610ad190612f99565b620f42406009546116c391906131e2565b60135410156116e45760405162461bcd60e51b8152600401610ad190612f99565b50505050565b601b5481565b601254610100900460ff1681565b6001600160a01b0383166117245760405162461bcd60e51b8152600401610ad190612e7f565b6001600160a01b03821661174a5760405162461bcd60e51b8152600401610ad190612e7f565b6001600160a01b0380841660008181526004602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906117a5908590613143565b60405180910390a3505050565b60006001600160a01b0384166117da5760405162461bcd60e51b8152600401610ad190612fe7565b6001600160a01b0383166118005760405162461bcd60e51b8152600401610ad190612b4c565b600082116118205760405162461bcd60e51b8152600401610ad190612ef3565b6001600160a01b03841660009081526008602052604090205460ff1615801561186257506001600160a01b03831660009081526008602052604090205460ff16155b61186b57600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff161561189957600192506118c7565b6001600160a01b03861660009081526002602052604090205460ff16156118c357600191506118c7565b5060015b6118d18787611c13565b156119ea5760195460ff166118f85760405162461bcd60e51b8152600401610ad190612b8f565b82806119015750815b1561196f576001600160a01b03871660009081526007602052604090205460ff1615801561194857506001600160a01b03861660009081526007602052604090205460ff16155b1561196f5760175485111561196f5760405162461bcd60e51b8152600401610ad190612db6565b600c546001600160a01b038781166101009092041614801590611990575081155b156119ea576001600160a01b03861660009081526007602052604090205460ff166119ea57601854856119c288611091565b6119cc91906131ca565b11156119ea5760405162461bcd60e51b8152600401610ad190612e35565b8115611a7a5760125460ff16611a7a57601254610100900460ff1615611a7a576000611a1530611091565b90506013548110611a785760145460155460ff1615611a6257601654600d546127109190611a4b906001600160a01b0316611091565b611a559190613319565b611a5f91906131e2565b90505b808210611a6d578091505b611a7682611ce9565b505b505b611a88878787868686611a93565b979650505050505050565b601954600090610100900460ff16611af357611aaf878761235f565b601954610100900460ff16158015611acc5750611acc8787611c13565b8015611ad6575081155b15611af35760405162461bcd60e51b8152600401610ad190612c84565b6001600160a01b03871660009081526006602052604090205460019060ff1680611b3557506001600160a01b03871660009081526006602052604090205460ff165b15611b3e575060005b6001600160a01b03881660009081526001602052604081208054889290611b6690849061335b565b909155506000905081611b795786611b85565b611b858987878a61243c565b6001600160a01b038916600090815260016020526040812080549293508392909190611bb29084906131ca565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bfc9190613143565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b03848116911614801590611c425750601c546001600160a01b03838116911614155b8015611c595750601c546001600160a01b03163214155b8015611c7e57506001600160a01b03821660009081526005602052604090205460ff16155b8015611ca357506001600160a01b03831660009081526005602052604090205460ff16155b8015611cba57506001600160a01b03821661dead14155b8015611cce57506001600160a01b03821615155b8015610aa057506001600160a01b0383163014159392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201819052611d5f5750612352565b306000908152600460209081526040808320600c5461010090046001600160a01b0316845290915290205460001914611dc257306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff1685611de39190613319565b611ded91906131e2565b611df791906131e2565b90506000611e05828561335b565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611e4d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ebb57600080fd5b505afa158015611ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef39190612764565b81600181518110611f1457634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac94790611f6190859060009086903090429060040161314c565b600060405180830381600087803b158015611f7b57600080fd5b505af1925050508015611f8c575060015b611f995750505050612352565b47600083611fa78684613319565b611fb191906131e2565b9050841561209457600c5460105460405163f305d71960e01b81526001600160a01b0361010090930483169263f305d719928592611ffe9230928c92600092839216904290600401612a7e565b6060604051808303818588803b15801561201757600080fd5b505af193505050508015612048575060408051601f3d908101601f191682019092526120459181019061299b565b60015b61205757505050505050612352565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506818660405161208b929190613188565b60405180910390a15b61209e818361335b565b915085600001518660a0018181516120b69190613338565b61ffff90811690915260a08801516040890151600093508392918216916120de911686613319565b6120e891906131e2565b6019549091506000906201000090046001600160a01b031661210b576000612132565b8860a0015161ffff16896080015161ffff16866121289190613319565b61213291906131e2565b9050600061214082846131ca565b61214a908761335b565b905080156121bc57600e546040516001600160a01b03909116906188b890839061217390612a3c565b600060405180830381858888f193505050503d80600081146121b1576040519150601f19603f3d011682016040523d82523d6000602084013e6121b6565b606091505b50909450505b821561222c57600f546040516001600160a01b03909116906188b89085906121e390612a3c565b600060405180830381858888f193505050503d8060008114612221576040519150601f19603f3d011682016040523d82523d6000602084013e612226565b606091505b50909450505b811561234757600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561228057600080fd5b505afa158015612294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b89190612764565b876000815181106122d957634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061232057634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601154612347918991859116612641565b505050505050505050505b506012805460ff19169055565b601954610100900460ff16156123875760405162461bcd60e51b8152600401610ad190612c41565b6123918282611c13565b1580156123ab5750600d546001600160a01b038281169116145b15612438576001600160a01b03821660009081526005602090815260408083208054600160ff199182168117909255600690935292819020805490921683179091556019805461010061ff00199182168117909255601280549091169091179055517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579161137991612ab9565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156124b05750600a5461ffff166124d9565b84156124c95750600a5462010000900461ffff166124d9565b50600a54600160201b900461ffff165b60006127106124e88387613319565b6124f291906131e2565b905060008360a00151846060015161250a91906131a4565b61ffff16846060015161ffff16836125229190613319565b61252c91906131e2565b9050600061253a828461335b565b905080156125ac5730600090815260016020526040812080548392906125619084906131ca565b909155505060405130906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125a3908590613143565b60405180910390a35b81156126295781600960008282546125c4919061335b565b9250508190555081601b60008282546125dd91906131ca565b90915550506040516000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612620908690613143565b60405180910390a35b612633838861335b565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de9590849061267e90600090889087904290600401612ac4565b6000604051808303818588803b15801561269757600080fd5b505af1935050505080156126a9575060015b6126b257612721565b601960029054906101000a90046001600160a01b03166001600160a01b0316836001815181106126f257634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614156127215781601a600082825461271b91906131ca565b90915550505b505050565b803580151581146109ec57600080fd5b803561ffff811681146109ec57600080fd5b600060208284031215612759578081fd5b8135610aa081613388565b600060208284031215612775578081fd5b8151610aa081613388565b600080600060608486031215612794578182fd5b833561279f81613388565b925060208401356127af81613388565b915060408401356127bf81613388565b809150509250925092565b600080604083850312156127dc578182fd5b82356127e781613388565b915060208301356127f781613388565b809150509250929050565b600080600060608486031215612816578283fd5b833561282181613388565b9250602084013561283181613388565b929592945050506040919091013590565b60008060408385031215612854578182fd5b823561285f81613388565b915061286d60208401612726565b90509250929050565b60008060408385031215612888578182fd5b823561289381613388565b946020939093013593505050565b600080604083850312156128b3578182fd5b61285f83612726565b6000806000606084860312156128d0578283fd5b6128d984612736565b92506128e760208501612736565b91506128f560408501612736565b90509250925092565b600080600080600060a08688031215612915578081fd5b61291e86612736565b945061292c60208701612736565b935061293a60408701612736565b925061294860608701612736565b915061295660808701612736565b90509295509295909350565b600060208284031215612973578081fd5b5035919050565b6000806040838503121561298c578182fd5b50508035926020909101359150565b6000806000606084860312156129af578283fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156129dd578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b83811015612a315781516001600160a01b031687529582019590820190600101612a0c565b509495945050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401529083166040830152909116606082015260800190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b600085825260806020830152612add60808301866129f9565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b81811015612b2557858101830151858201604001528201612b09565b81811115612b365783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526018908201527f54726164696e67206e6f742079657420656e61626c6564210000000000000000604082015260600190565b60208082526030908201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060408201526f37b3103a37ba30b61039bab838363c9760811b606082015260800190565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60408201526232b21760e91b606082015260800190565b60208082526022908201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604082015261371760f11b606082015260800190565b60208082526017908201527f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000604082015260600190565b60208082526023908201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060408201526228249760e91b606082015260800190565b60208082526021908201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746040820152601760f91b606082015260800190565b6020808252818101527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e604082015260600190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526018908201527f4c6971756964697479206d7573742062652061646465642e0000000000000000604082015260600190565b6020808252602a908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526930b63632ba29b4bd329760b11b606082015260800190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60208082526027908201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60408201526636103332b2b99760c91b606082015260800190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526037908201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660408201527f6520302e3525206f6620746f74616c20737570706c792e000000000000000000606082015260800190565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f54726164696e6720616c726561647920656e61626c6564210000000000000000604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60208082526016908201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b604082015260600190565b61ffff93841681529183166020830152909116604082015260600190565b61ffff96871681529486166020860152928516604085015290841660608401528316608083015290911660a082015260c00190565b90815260200190565b600086825285602083015260a0604083015261316b60a08301866129f9565b6001600160a01b0394909416606083015250608001529392505050565b918252602082015260400190565b60ff91909116815260200190565b600061ffff8083168185168083038211156131c1576131c1613372565b01949350505050565b600082198211156131dd576131dd613372565b500190565b6000826131fd57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611613214575061323f565b81870482111561322657613226613372565b8086161561323357918102915b9490941c938002613205565b94509492505050565b6000610aa060001960ff85168460008261326457506001610aa0565b8161327157506000610aa0565b81600181146132875760028114613291576132be565b6001915050610aa0565b60ff8411156132a2576132a2613372565b6001841b9150848211156132b8576132b8613372565b50610aa0565b5060208310610133831016604e8410600b84101617156132f1575081810a838111156132ec576132ec613372565b610aa0565b6132fe8484846001613202565b80860482111561331057613310613372565b02949350505050565b600081600019048311821515161561333357613333613372565b500290565b600061ffff8381169083168181101561335357613353613372565b039392505050565b60008282101561336d5761336d613372565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461339d57600080fd5b5056fea2646970667358221220800da958cdeafffeba25f735de83db89a96d0c68add8f80096d725b700a065b464736f6c63430008000033

Deployed Bytecode Sourcemap

3547:21130:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5306:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5949:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4639:112::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;10443:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5245:26::-;;;;;;;;;;;;;:::i;5212:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;24552:120::-;;;;;;;;;;-1:-1:-1;24552:120:0;;;;;:::i;:::-;;:::i;11051:161::-;;;;;;;;;;-1:-1:-1;11051:161:0;;;;;:::i;:::-;;:::i;14751:114::-;;;;;;;;;;;;;:::i;10178:83::-;;;;;;;;;;;;;:::i;11538:306::-;;;;;;;;;;-1:-1:-1;11538:306:0;;;;;:::i;:::-;;:::i;14363:264::-;;;;;;;;;;-1:-1:-1;14363:264:0;;;;;:::i;:::-;;:::i;:::-;;6057:33;;;;;;;;;;;;;:::i;12417:141::-;;;;;;;;;;;;;:::i;4956:42::-;;;;;;;;;;;;;:::i;5984:25::-;;;;;;;;;;;;;:::i;10267:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12566:488::-;;;;;;;;;;-1:-1:-1;12566:488:0;;;;;:::i;:::-;;:::i;12127:140::-;;;;;;;;;;-1:-1:-1;12127:140:0;;;;;:::i;:::-;;:::i;14082:273::-;;;;;;;;;;-1:-1:-1;14082:273:0;;;;;:::i;:::-;;:::i;5278:21::-;;;;;;;;;;;;;:::i;5109:46::-;;;;;;;;;;;;;:::i;16273:134::-;;;;;;;;;;;;;:::i;6224:34::-;;;;;;;;;;;;;:::i;6357:28::-;;;;;;;;;;;;;:::i;14873:189::-;;;;;;;;;;-1:-1:-1;14873:189:0;;;;;:::i;:::-;;:::i;15777:217::-;;;;;;;;;;-1:-1:-1;15777:217:0;;;;;:::i;:::-;;:::i;8936:654::-;;;;;;;;;;-1:-1:-1;8936:654:0;;;;;:::i;:::-;;:::i;11992:127::-;;;;;;;;;;-1:-1:-1;11992:127:0;;;;;:::i;:::-;;:::i;6265:36::-;;;;;;;;;;;;;:::i;24432:108::-;;;;;;;;;;-1:-1:-1;24432:108:0;;;;;:::i;:::-;;:::i;12275:134::-;;;;;;;;;;-1:-1:-1;12275:134:0;;;;;:::i;:::-;;:::i;11852:132::-;;;;;;;;;;-1:-1:-1;11852:132:0;;;;;:::i;:::-;;:::i;13938:136::-;;;;;;;;;;-1:-1:-1;13938:136:0;;;;;:::i;:::-;;:::i;14635:108::-;;;;;;;;;;;;;:::i;10753:117::-;;;;;;;;;;-1:-1:-1;10753:117:0;;;;;:::i;:::-;;:::i;9598:225::-;;;;;;;;;;;;;:::i;13637:293::-;;;;;;;;;;-1:-1:-1;13637:293:0;;;;;:::i;:::-;;:::i;10529:79::-;;;;;;;;;;;;;:::i;22165:399::-;;;;;;;;;;;;;:::i;10353:84::-;;;;;;;;;;;;;:::i;10878:165::-;;;;;;;;;;-1:-1:-1;10878:165:0;;;;;:::i;:::-;;:::i;16415:115::-;;;;;;;;;;;;;:::i;6016:34::-;;;;;;;;;;;;;:::i;16002:263::-;;;;;;;;;;-1:-1:-1;16002:263:0;;;;;:::i;:::-;;:::i;4760:187::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;10614:133::-;;;;;;;;;;-1:-1:-1;10614:133:0;;;;;:::i;:::-;;:::i;13062:567::-;;;;;;;;;;-1:-1:-1;13062:567:0;;;;;:::i;:::-;;:::i;6310:38::-;;;;;;;;;;;;;:::i;5566:306::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;24323:97::-;;;;;;;;;;-1:-1:-1;24323:97:0;;;;;:::i;:::-;;:::i;15070:699::-;;;;;;;;;;-1:-1:-1;15070:699:0;;;;;:::i;:::-;;:::i;6392:27::-;;;;;;;;;;;;;:::i;5903:39::-;;;;;;;;;;;;;:::i;5306:73::-;5337:42;5306:73;:::o;5949:28::-;;;;:::o;4639:112::-;;;;;;;;;;;;;;-1:-1:-1;;;4639:112:0;;;;;:::o;10443:80::-;10515:5;;;;;;;;;;;;-1:-1:-1;;;10515:5:0;;;;10443:80;:::o;5245:26::-;;;;;;-1:-1:-1;;;;;5245:26:0;;:::o;5212:::-;;;;;;:::o;24552:120::-;-1:-1:-1;;;;;24650:14:0;;24626:4;24650:14;;;:4;:14;;;;;;;;24552:120;;;;:::o;11051:161::-;11128:4;11145:37;11154:10;11166:7;11175:6;11145:8;:37::i;:::-;-1:-1:-1;11200:4:0;11051:161;;;;:::o;14751:114::-;14798:7;14843:13;4271:1;14843:2;:13;:::i;:::-;14825:14;;:32;;;;:::i;:::-;14818:39;;14751:114;:::o;10178:83::-;10251:7;;10178:83;:::o;11538:306::-;-1:-1:-1;;;;;11659:19:0;;11638:4;11659:19;;;:11;:19;;;;;;;;11679:10;11659:31;;;;;;;;-1:-1:-1;;11659:52:0;11655:126;;-1:-1:-1;;;;;11728:19:0;;;;;;:11;:19;;;;;;;;11748:10;11728:31;;;;;;;:41;;11763:6;;11728:19;:41;;11763:6;;11728:41;:::i;:::-;;;;-1:-1:-1;;11655:126:0;11800:36;11810:6;11818:9;11829:6;11800:9;:36::i;:::-;11793:43;;11538:306;;;;;;:::o;14363:264::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;;;;;;;;;14505:3:::1;14495:7;;:13;;;;:::i;:::-;14483:7;14472;14462;;:17;;;;:::i;:::-;14461:29;;;;:::i;:::-;:48;;14453:109;;;;-1:-1:-1::0;;;14453:109:0::1;;;;;;;:::i;:::-;14612:7;14601;14591;;:17;;;;:::i;:::-;14590:29;;;;:::i;:::-;14573:14;:46:::0;-1:-1:-1;;14363:264:0:o;6057:33::-;;;;:::o;12417:141::-;12470:7;12527:21;12545:1;12527:9;:21::i;:::-;12509:15;5337:42;12509:9;:15::i;:::-;:39;;;;:::i;:::-;12498:7;;:51;;;;:::i;4956:42::-;4994:4;4956:42;:::o;5984:25::-;;;;:::o;10267:80::-;4271:1;10267:80;:::o;12566:488::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;4994:4:::1;12673:6;:21;;;;:65;;;;;5044:4;12715:7;:23;;;;12673:65;:117;;;;;5098:4;12759:11;:31;;;;12673:117;12665:170;;;;-1:-1:-1::0;;;12665:170:0::1;;;;;;;:::i;:::-;5151:4;12854:16;12863:7:::0;12854:6;:16:::1;:::i;:::-;:35;;;;12846:80;;;;-1:-1:-1::0;;;12846:80:0::1;;;;;;;:::i;:::-;12937:9;:25:::0;;-1:-1:-1;;12937:25:0::1;;::::0;;::::1;;-1:-1:-1::0;;12973:27:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;13011:35:0::1;-1:-1:-1::0;;;13011:35:0;;;::::1;;::::0;;;::::1;::::0;;12566:488::o;12127:140::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12219:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;12219:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12127:140::o;14082:273::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;14227:4:::1;14213:7;;14223:1;14213:11;;;;:::i;:::-;:18;;;;:::i;:::-;14201:7;14190;14180;;:17;;;;:::i;:::-;14179:29;;;;:::i;:::-;:53;;14171:121;;;;-1:-1:-1::0;;;14171:121:0::1;;;;;;;:::i;:::-;14340:7;14329;14319;;:17;;;;:::i;:::-;14318:29;;;;:::i;:::-;14303:12;:44:::0;-1:-1:-1;;14082:273:0:o;5278:21::-;;;-1:-1:-1;;;;;5278:21:0;;:::o;5109:46::-;5151:4;5109:46;:::o;16273:134::-;16386:13;;;16273:134::o;6224:34::-;;;;;;:::o;6357:28::-;;;;:::o;14873:189::-;15002:6;;14964:7;;5198:5;;15012:21;;14992:17;;-1:-1:-1;;;;;15002:6:0;14992:9;:17::i;:::-;:41;;;;:::i;:::-;14991:62;;;;:::i;:::-;14984:70;14873:189;-1:-1:-1;;14873:189:0:o;15777:217::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;15907:3:::1;15881:22;:29;;15873:64;;;;-1:-1:-1::0;;;15873:64:0::1;;;;;;;:::i;:::-;15948:13;:38:::0;15777:217::o;8936:654::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9015:22:0;::::1;9007:96;;;;-1:-1:-1::0;;;9007:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9122:16:0;::::1;5337:42;9122:16;;9114:90;;;;-1:-1:-1::0;;;9114:90:0::1;;;;;;;:::i;:::-;9235:6;::::0;9215:34:::1;::::0;-1:-1:-1;;;;;9235:6:0::1;;9215:19;:34::i;:::-;9260:35;9280:8;9290:4;9260:19;:35::i;:::-;9330:6;::::0;9340:1:::1;::::0;9320:17:::1;::::0;-1:-1:-1;;;;;9330:6:0::1;9320:9;:17::i;:::-;:21;9316:127;;;9375:6;::::0;9358:73:::1;::::0;-1:-1:-1;;;;;9375:6:0::1;9383:8:::0;9393:17:::1;9375:6:::0;9393:9:::1;:17::i;:::-;9412:5;9419::::0;9426:4:::1;9358:16;:73::i;:::-;;9316:127;9482:6;::::0;;-1:-1:-1;;;;;9499:17:0;;::::1;-1:-1:-1::0;;;;;;9499:17:0;::::1;::::0;::::1;::::0;;;9532:40:::1;::::0;9482:6;::::1;::::0;9499:17;9482:6;;9532:40:::1;::::0;9463:16:::1;::::0;9532:40:::1;6837:1;8936:654:::0;:::o;11992:127::-;-1:-1:-1;;;;;12083:28:0;12059:4;12083:28;;;:19;:28;;;;;;;;;11992:127::o;6265:36::-;;;;;;;;;:::o;24432:108::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24510:14:0::1;24527:5;24510:14:::0;;;:4:::1;:14;::::0;;;;:22;;-1:-1:-1;;24510:22:0::1;::::0;;24432:108::o;12275:134::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12363:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;12363:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12275:134::o;11852:132::-;-1:-1:-1;;;;;11946:30:0;11922:4;11946:30;;;:21;:30;;;;;;;;;11852:132::o;13938:136::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;14027:19;:39;;-1:-1:-1;;;;;;14027:39:0::1;-1:-1:-1::0;;;;;14027:39:0;;;::::1;::::0;;;::::1;::::0;;13938:136::o;14635:108::-;14678:7;14721:13;4271:1;14721:2;:13;:::i;:::-;14705:12;;:30;;;;:::i;10753:117::-;-1:-1:-1;;;;;10846:16:0;10819:7;10846:16;;;:7;:16;;;;;;;10753:117::o;9598:225::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;9677:6:::1;::::0;9657:34:::1;::::0;-1:-1:-1;;;;;9677:6:0::1;;9657:19;:34::i;:::-;9721:6;::::0;;-1:-1:-1;;;;;;9738:19:0;::::1;::::0;;;9773:42:::1;::::0;-1:-1:-1;;;;;9721:6:0;;::::1;::::0;9702:16:::1;::::0;9721:6;;9773:42:::1;::::0;9702:16;;9773:42:::1;6837:1;9598:225::o:0;13637:293::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;13770:11:::1;:42:::0;;-1:-1:-1;;;;;13770:42:0;;::::1;-1:-1:-1::0;;;;;;13770:42:0;;::::1;;::::0;;;13823:23;:46;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13880:21;:42;;;;;::::1;::::0;::::1;;::::0;;13637:293::o;10529:79::-;10599:6;;-1:-1:-1;;;;;10599:6:0;10529:79;:::o;22165:399::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;22227:14:::1;::::0;::::1;;22226:15;22218:52;;;;-1:-1:-1::0;;;22218:52:0::1;;;;;;;:::i;:::-;22289:16;::::0;::::1;::::0;::::1;;;22281:53;;;;-1:-1:-1::0;;;22281:53:0::1;;;;;;;:::i;:::-;22345:14;:21:::0;;-1:-1:-1;;22345:21:0::1;22362:4;22345:21;::::0;;22404:6:::1;::::0;22420:5:::1;::::0;22394:17:::1;::::0;-1:-1:-1;;;;;22404:6:0::1;22394:9;:17::i;:::-;:22;::::0;22414:2:::1;22394:22;:::i;:::-;22393:32;;;;:::i;:::-;22377:13;:48:::0;22460:6:::1;::::0;22476:5:::1;::::0;22450:17:::1;::::0;-1:-1:-1;;;;;22460:6:0::1;22450:9;:17::i;:::-;:22;::::0;22470:2:::1;22450:22;:::i;:::-;22449:32;;;;:::i;:::-;22436:10;:45:::0;22524:9:::1;::::0;22492:62:::1;::::0;22509:4:::1;::::0;22524:9:::1;::::0;::::1;-1:-1:-1::0;;;;;22524:9:0::1;-1:-1:-1::0;;22492:8:0::1;:62::i;:::-;22165:399::o:0;10353:84::-;10427:7;;;;;;;;;;;;-1:-1:-1;;;10427:7:0;;;;10353:84;:::o;10878:165::-;10956:4;10973:40;10983:10;10995:9;11006:6;10973:9;:40::i;:::-;-1:-1:-1;11031:4:0;;10878:165;-1:-1:-1;;;10878:165:0:o;16415:115::-;16510:12;;;16415:115::o;6016:34::-;;;;;;:::o;16002:263::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;16111:19:::1;:33:::0;;-1:-1:-1;;16111:33:0::1;;::::0;::::1;;;;::::0;;16155:22:::1;:47:::0;;-1:-1:-1;;16155:47:0::1;::::0;::::1;;;::::0;;16218:39:::1;::::0;::::1;::::0;::::1;::::0;16111:33;;16218:39:::1;:::i;:::-;;;;;;;;16002:263:::0;;:::o;4760:187::-;;;;;;;;;;;;;;-1:-1:-1;;;4760:187:0;;;;;-1:-1:-1;;;4760:187:0;;;;;-1:-1:-1;;;4760:187:0;;;;;-1:-1:-1;;;4760:187:0;;;;:::o;10614:133::-;-1:-1:-1;;;;;10716:19:0;;;10698:7;10716:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10614:133::o;13062:567::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;13197:7:::1;:29:::0;;-1:-1:-1;;13197:29:0::1;;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;13237:29:0::1;::::0;;;::::1;;;-1:-1:-1::0;;13277:33:0::1;-1:-1:-1::0;;;13277:33:0;;::::1;;;-1:-1:-1::0;;13321:19:0::1;-1:-1:-1::0;;;13321:19:0;;::::1;;;-1:-1:-1::0;;13351:26:0::1;-1:-1:-1::0;;;13351:26:0;;::::1;::::0;;;::::1;;::::0;;;13277:33;13408:21:::1;13237:29:::0;13197;13408:21:::1;:::i;:::-;:35;;;;:::i;:::-;:46;;;;:::i;:::-;13388:7;:66:::0;;-1:-1:-1;;;;13388:66:0::1;-1:-1:-1::0;;;13388:66:0::1;::::0;;::::1;;;::::0;;:17:::1;13500::::0;-1:-1:-1;;13481:36:0::1;::::0;13500:17;;::::1;::::0;::::1;::::0;13481:16:::1;:36;:::i;:::-;13556:7;:12:::0;13465:52:::1;::::0;;::::1;::::0;-1:-1:-1;13465:52:0;;13536:32:::1;::::0;-1:-1:-1;;;13556:12:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;13536:17:0;;::::1;;:32;:::i;:::-;:41;;;;13528:93;;;;-1:-1:-1::0;;;13528:93:0::1;;;;;;;:::i;:::-;6837:1;13062:567:::0;;;;;:::o;6310:38::-;;;;;;-1:-1:-1;;;;;6310:38:0;;:::o;5566:306::-;;;;;;;;;-1:-1:-1;;;;;5566:306:0;;;;;;;;;;;;;;:::o;24323:97::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24391:14:0::1;;::::0;;;:4:::1;:14;::::0;;;;:21;;-1:-1:-1;;24391:21:0::1;24408:4;24391:21;::::0;;24323:97::o;15070:699::-;6784:6;;-1:-1:-1;;;;;6784:6:0;6794:10;6784:20;6776:50;;;;-1:-1:-1;;;6776:50:0;;;;;;;:::i;:::-;15270:16:::1;15250;15240:7;;:26;;;;:::i;:::-;15239:47;;;;:::i;:::-;15223:13;:63:::0;15311:7:::1;::::0;15338:13;;15311:23:::1;::::0;15321:13;;15311:23:::1;:::i;:::-;15310:41;;;;:::i;:::-;15297:10;:54:::0;;;15370:13:::1;::::0;:27:::1;;15362:73;;;;-1:-1:-1::0;;;15362:73:0::1;;;;;;;:::i;:::-;15479:6;::::0;5198:5:::1;::::0;15469:17:::1;::::0;-1:-1:-1;;;;;15479:6:0::1;15469:9;:17::i;:::-;:23;::::0;15489:3:::1;15469:23;:::i;:::-;15468:44;;;;:::i;:::-;15454:10;;:58;;15446:106;;;;-1:-1:-1::0;;;15446:106:0::1;;;;;;;:::i;:::-;15595:9;15585:7;;:19;;;;:::i;:::-;15571:10;;:33;;15563:92;;;;-1:-1:-1::0;;;15563:92:0::1;;;;;;;:::i;:::-;15701:9;15691:7;;:19;;;;:::i;:::-;15674:13;;:36;;15666:95;;;;-1:-1:-1::0;;;15666:95:0::1;;;;;;;:::i;:::-;15070:699:::0;;;;:::o;6392:27::-;;;;:::o;5903:39::-;;;;;;;;;:::o;11220:310::-;-1:-1:-1;;;;;11315:20:0;;11307:52;;;;-1:-1:-1;;;11307:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11378:21:0;;11370:53;;;;-1:-1:-1;;;11370:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11436:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;;:37;;;11489:33;;;;;11467:6;;11489:33;:::i;:::-;;;;;;;;11220:310;;;:::o;16904:1992::-;16983:4;-1:-1:-1;;;;;17008:18:0;;17000:68;;;;-1:-1:-1;;;17000:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17087:16:0;;17079:64;;;;-1:-1:-1;;;17079:64:0;;;;;;;:::i;:::-;17171:1;17162:6;:10;17154:64;;;;-1:-1:-1;;;17154:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17238:10:0;;;;;;:4;:10;;;;;;;;17237:11;:24;;;;-1:-1:-1;;;;;;17253:8:0;;;;;;:4;:8;;;;;;;;17252:9;17237:24;17229:33;;;;;;-1:-1:-1;;;;;17363:13:0;;17275:8;17363:13;;;:7;:13;;;;;;17275:8;;;;17363:13;;17359:162;;;17399:4;17393:10;;17359:162;;;-1:-1:-1;;;;;17425:11:0;;;;;;:7;:11;;;;;;;;17421:100;;;17460:4;17453:11;;17421:100;;;-1:-1:-1;17505:4:0;17421:100;17535:20;17546:4;17552:2;17535:10;:20::i;:::-;17531:644;;;17576:14;;;;17572:89;;17611:34;;-1:-1:-1;;;17611:34:0;;;;;;;:::i;17572:89::-;17679:3;:11;;;;17686:4;17679:11;17675:232;;;-1:-1:-1;;;;;17715:27:0;;;;;;:21;:27;;;;;;;;17714:28;:58;;;;-1:-1:-1;;;;;;17747:25:0;;;;;;:21;:25;;;;;;;;17746:26;17714:58;17710:182;;;17815:12;;17805:6;:22;;17797:75;;;;-1:-1:-1;;;17797:75:0;;;;;;;:::i;:::-;17939:9;;-1:-1:-1;;;;;17925:24:0;;;17939:9;;;;;17925:24;;;;:33;;;17954:4;17953:5;17925:33;17921:243;;;-1:-1:-1;;;;;17984:25:0;;;;;;:21;:25;;;;;;;;17979:170;;18068:14;;18058:6;18042:13;18052:2;18042:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18034:95;;;;-1:-1:-1;;;18034:95:0;;;;;;;:::i;:::-;18191:4;18187:632;;;18217:6;;;;18212:596;;18248:19;;;;;;;18244:549;;;18292:28;18323:24;18341:4;18323:9;:24::i;:::-;18292:55;;18398:13;;18374:20;:37;18370:404;;18458:10;;18499:22;;;;18495:97;;;18556:13;;18546:6;;5198:5;;18556:13;18536:17;;-1:-1:-1;;;;;18546:6:0;18536:9;:17::i;:::-;:33;;;;:::i;:::-;18535:54;;;;:::i;:::-;18525:64;;18495:97;18646:7;18622:20;:31;18618:72;;18680:7;18657:30;;18618:72;18716:34;18729:20;18716:12;:34::i;:::-;18370:404;;18244:549;;18836:52;18853:4;18859:2;18863:6;18871:3;18876:4;18882:5;18836:16;:52::i;:::-;18829:59;16904:1992;-1:-1:-1;;;;;;;16904:1992:0:o;22572:753::-;22713:16;;22691:4;;22713:16;;;;;22708:228;;22746:28;22765:4;22771:2;22746:18;:28::i;:::-;22794:16;;;;;;;22793:17;:41;;;;;22814:20;22825:4;22831:2;22814:10;:20::i;:::-;22793:51;;;;;22839:5;22838:6;22793:51;22789:136;;;22865:44;;-1:-1:-1;;;22865:44:0;;;;;;;:::i;22789:136::-;-1:-1:-1;;;;;22982:25:0;;22948:12;22982:25;;;:19;:25;;;;;;22963:4;;22982:25;;;:52;;-1:-1:-1;;;;;;23011:23:0;;;;;;:19;:23;;;;;;;;22982:52;22978:99;;;-1:-1:-1;23060:5:0;22978:99;-1:-1:-1;;;;;23089:13:0;;;;;;:7;:13;;;;;:23;;23106:6;;23089:13;:23;;23106:6;;23089:23;:::i;:::-;;;;-1:-1:-1;23123:22:0;;-1:-1:-1;23149:7:0;23148:55;;23197:6;23148:55;;;23160:34;23170:4;23176:3;23181:4;23187:6;23160:9;:34::i;:::-;-1:-1:-1;;;;;23214:11:0;;;;;;:7;:11;;;;;:29;;23123:80;;-1:-1:-1;23123:80:0;;23214:11;;;:29;;23123:80;;23214:29;:::i;:::-;;;;;;;;23276:2;-1:-1:-1;;;;;23261:34:0;23270:4;-1:-1:-1;;;;;23261:34:0;;23280:14;23261:34;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;23313:4:0;;22572:753;-1:-1:-1;;;;;;;;22572:753:0:o;16538:358::-;16639:6;;16607:4;;-1:-1:-1;;;;;16631:14:0;;;16639:6;;16631:14;;;;:43;;-1:-1:-1;16668:6:0;;-1:-1:-1;;;;;16662:12:0;;;16668:6;;16662:12;;16631:43;:79;;;;-1:-1:-1;16704:6:0;;-1:-1:-1;;;;;16704:6:0;16691:9;:19;;16631:79;:118;;;;-1:-1:-1;;;;;;16728:21:0;;;;;;:17;:21;;;;;;;;16727:22;16631:118;:159;;;;-1:-1:-1;;;;;;16767:23:0;;;;;;:17;:23;;;;;;;;16766:24;16631:159;:186;;;;-1:-1:-1;;;;;;16807:10:0;;5337:42;16807:10;;16631:186;:219;;;;-1:-1:-1;;;;;;16834:16:0;;;;16631:219;:257;;;;-1:-1:-1;;;;;;16867:21:0;;16883:4;16867:21;;16624:264;16538:358;-1:-1:-1;;;16538:358:0:o;18904:2347::-;6678:6;:13;;-1:-1:-1;;6678:13:0;6687:4;6678:13;;;18987:30:::1;::::0;;::::1;::::0;::::1;::::0;;19010:7:::1;18987:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;18987:30:0;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;18987:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18987:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18987:30:0;::::1;::::0;;::::1;::::0;;;;;;19028:60:::1;;19070:7;;;19028:60;19124:4;19104:26;::::0;;;:11:::1;:26;::::0;;;;;;;19139:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19139:9:0::1;19104:46:::0;;;;;;;;-1:-1:-1;;19104:67:0::1;19100:166;;19208:4;19188:26;::::0;;;:11:::1;:26;::::0;;;;;;;19223:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19223:9:0::1;19188:46:::0;;;;;;;-1:-1:-1;;19188:66:0;;19100:166:::1;19278:17;19363:1;19343:6;:16;;;19299:60;;19323:6;:16;;;19300:39;;:20;:39;;;;:::i;:::-;19299:60;;;;:::i;:::-;19298:66;;;;:::i;:::-;19278:86:::0;-1:-1:-1;19375:15:0::1;19393:32;19278:86:::0;19393:20;:32:::1;:::i;:::-;19470:16;::::0;;19484:1:::1;19470:16:::0;;;;;::::1;::::0;;19375:50;;-1:-1:-1;19446:21:0::1;::::0;19470:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19470:16:0::1;19446:40;;19515:4;19497;19502:1;19497:7;;;;;;-1:-1:-1::0;;;19497:7:0::1;;;;;;;;;;;;;;:23;-1:-1:-1::0;;;;;19497:23:0::1;;;-1:-1:-1::0;;;;;19497:23:0::1;;;::::0;::::1;19541:9;;;;;;;;;-1:-1:-1::0;;;;;19541:9:0::1;-1:-1:-1::0;;;;;19541:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19531:4;19536:1;19531:7;;;;;;-1:-1:-1::0;;;19531:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;19531:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19574:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;19574:186:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;19649:7;;19671:1:::1;::::0;19687:4;;19714::::1;::::0;19734:15:::1;::::0;19574:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19570:233;;19785:7;;;;;;19570:233;19836:21;19815:18;19922:7:::0;19896:22:::1;19909:9:::0;19836:21;19896:22:::1;:::i;:::-;19895:34;;;;:::i;:::-;19868:61:::0;-1:-1:-1;19946:13:0;;19942:417:::1;;19980:9;::::0;20149:21;;19980:239:::1;::::0;-1:-1:-1;;;19980:239:0;;-1:-1:-1;;;;;19980:9:0::1;::::0;;::::1;::::0;::::1;::::0;:25:::1;::::0;20013:16;;19980:239:::1;::::0;20057:4:::1;::::0;20081:9;;20109:1:::1;::::0;;;20149:21:::1;::::0;20189:15:::1;::::0;19980:239:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;-1:-1:-1::0;19980:239:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;19980:239:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;19976:372;;20326:7;;;;;;;;19976:372;;;;20244:40;20256:16;20274:9;20244:40;;;;;;;:::i;:::-;;;;;;;;19976:372;20371:30;20385:16:::0;20371:30;::::1;:::i;:::-;;;20432:6;:16;;;20412:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;20547:16:::1;::::0;::::1;::::0;20525:18:::1;::::0;::::1;::::0;20459:12:::1;::::0;-1:-1:-1;20459:12:0;;20511:52;;::::1;::::0;20512:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;20511:52;;;;:::i;:::-;20600:7;::::0;20482:81;;-1:-1:-1;20574:22:0::1;::::0;20600:7;;::::1;-1:-1:-1::0;;;;;20600:7:0::1;20599:78;;20676:1;20599:78;;;20657:6;:16;;;20625:48;;20639:6;:14;;;20626:27;;:10;:27;;;;:::i;:::-;20625:48;;;;:::i;:::-;20574:103:::0;-1:-1:-1;20688:24:0::1;20729:35;20574:103:::0;20729:18;:35:::1;:::i;:::-;20715:50;::::0;:10;:50:::1;:::i;:::-;20688:77:::0;-1:-1:-1;20780:20:0;;20776:133:::1;;20830:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;20830:21:0;;::::1;::::0;20887:5:::1;::::0;20864:16;;20830:67:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20817:80:0;;-1:-1:-1;;20776:133:0::1;20923:22:::0;;20919:139:::1;;20975:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;20975:23:0;;::::1;::::0;21036:5:::1;::::0;21011:18;;20975:71:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20962:84:0;;-1:-1:-1;;20919:139:0::1;21072:18:::0;;21068:176:::1;;21117:9;;;;;;;;;-1:-1:-1::0;;;;;21117:9:0::1;-1:-1:-1::0;;;;;21117:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21107:4;21112:1;21107:7;;;;;;-1:-1:-1::0;;;21107:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;21107:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21158:7:::1;::::0;21148;;21158;;;::::1;::::0;;::::1;::::0;21148:4;;21153:1:::1;::::0;21148:7;::::1;;;-1:-1:-1::0;;;21148:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;21148:17:0;;::::1;:7;::::0;;::::1;::::0;;;;;:17;21212:19;;21180:52:::1;::::0;21190:4;;21196:14;;21212:19:::1;21180:9;:52::i;:::-;6702:1;;;;;;;;;;;-1:-1:-1::0;6714:6:0;:14;;-1:-1:-1;;6714:14:0;;;18904:2347::o;21722:435::-;21805:16;;;;;;;21804:17;21796:65;;;;-1:-1:-1;;;21796:65:0;;;;;;;:::i;:::-;21877:20;21888:4;21894:2;21877:10;:20::i;:::-;21876:21;:37;;;;-1:-1:-1;21907:6:0;;-1:-1:-1;;;;;21901:12:0;;;21907:6;;21901:12;21876:37;21872:278;;;-1:-1:-1;;;;;21930:23:0;;;;;;:17;:23;;;;;;;;:30;;21956:4;-1:-1:-1;;21930:30:0;;;;;;;;21975:19;:25;;;;;;;:32;;;;;;;;;;22022:16;:23;;21930:30;-1:-1:-1;;22022:23:0;;;;;;;;22060:19;:26;;;;;;;;;;22106:32;;;;;;:::i;21872:278::-;21722:435;;:::o;23333:982::-;23441:30;;;;;;;;23464:7;23441:30;;;;;;;;;;;;;;;;-1:-1:-1;;;23441:30:0;;;;;;;;;;;-1:-1:-1;;;23441:30:0;;;;;;;;-1:-1:-1;;;23441:30:0;;;;;;;;-1:-1:-1;;;23441:30:0;;;;;;;;;23421:7;;;23511:205;;;;-1:-1:-1;23548:9:0;:16;;;23511:205;;;23586:4;23582:134;;;-1:-1:-1;23620:9:0;:17;;;;;;23582:134;;;-1:-1:-1;23683:9:0;:21;-1:-1:-1;;;23683:21:0;;;;23582:134;23726:17;5198:5;23746:19;23755:10;23746:6;:19;:::i;:::-;:38;;;;:::i;:::-;23726:58;;23795:18;23859:6;:16;;;23845:6;:11;;;:30;;;;:::i;:::-;23816:60;;23829:6;:11;;;23817:23;;:9;:23;;;;:::i;:::-;23816:60;;;;:::i;:::-;23795:81;-1:-1:-1;23887:15:0;23905:22;23795:81;23905:9;:22;:::i;:::-;23887:40;-1:-1:-1;23942:11:0;;23938:135;;23986:4;23970:22;;;;:7;:22;;;;;:33;;23996:7;;23970:22;:33;;23996:7;;23970:33;:::i;:::-;;;;-1:-1:-1;;24023:38:0;;24046:4;;-1:-1:-1;;;;;24023:38:0;;;;;;;24053:7;;24023:38;:::i;:::-;;;;;;;;23938:135;24087:14;;24083:167;;24129:10;24118:7;;:21;;;;;;;:::i;:::-;;;;;;;;24170:10;24154:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;24200:38:0;;24223:1;;-1:-1:-1;;;;;24200:38:0;;;;;;;24227:10;;24200:38;:::i;:::-;;;;;;;;24083:167;24289:18;24298:9;24289:6;:18;:::i;:::-;24282:25;23333:982;-1:-1:-1;;;;;;;;;;23333:982:0:o;21259:455::-;21370:9;;:187;;-1:-1:-1;;;21370:187:0;;:9;;;;-1:-1:-1;;;;;21370:9:0;;:60;;21438:6;;21370:187;;21470:1;;21486:4;;21505:11;;21531:15;;21370:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21366:341;;21689:7;;21366:341;21589:7;;;;;;;;;-1:-1:-1;;;;;21589:7:0;-1:-1:-1;;;;;21577:19:0;:4;21582:1;21577:7;;;;;;-1:-1:-1;;;21577:7:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21577:19:0;;21573:83;;;21634:6;21617:13;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;21573:83:0;21259:455;;;:::o;14:162:1:-;81:20;;137:13;;130:21;120:32;;110:2;;166:1;163;156:12;181:161;250:20;;310:6;299:18;;289:29;;279:2;;332:1;329;322:12;347:259;;459:2;447:9;438:7;434:23;430:32;427:2;;;480:6;472;465:22;427:2;524:9;511:23;543:33;570:5;543:33;:::i;611:263::-;;734:2;722:9;713:7;709:23;705:32;702:2;;;755:6;747;740:22;702:2;792:9;786:16;811:33;838:5;811:33;:::i;1151:569::-;;;;1321:2;1309:9;1300:7;1296:23;1292:32;1289:2;;;1342:6;1334;1327:22;1289:2;1386:9;1373:23;1405:33;1432:5;1405:33;:::i;:::-;1457:5;-1:-1:-1;1514:2:1;1499:18;;1486:32;1527:35;1486:32;1527:35;:::i;:::-;1581:7;-1:-1:-1;1640:2:1;1625:18;;1612:32;1653:35;1612:32;1653:35;:::i;:::-;1707:7;1697:17;;;1279:441;;;;;:::o;1725:402::-;;;1854:2;1842:9;1833:7;1829:23;1825:32;1822:2;;;1875:6;1867;1860:22;1822:2;1919:9;1906:23;1938:33;1965:5;1938:33;:::i;:::-;1990:5;-1:-1:-1;2047:2:1;2032:18;;2019:32;2060:35;2019:32;2060:35;:::i;:::-;2114:7;2104:17;;;1812:315;;;;;:::o;2132:470::-;;;;2278:2;2266:9;2257:7;2253:23;2249:32;2246:2;;;2299:6;2291;2284:22;2246:2;2343:9;2330:23;2362:33;2389:5;2362:33;:::i;:::-;2414:5;-1:-1:-1;2471:2:1;2456:18;;2443:32;2484:35;2443:32;2484:35;:::i;:::-;2236:366;;2538:7;;-1:-1:-1;;;2592:2:1;2577:18;;;;2564:32;;2236:366::o;2607:329::-;;;2733:2;2721:9;2712:7;2708:23;2704:32;2701:2;;;2754:6;2746;2739:22;2701:2;2798:9;2785:23;2817:33;2844:5;2817:33;:::i;:::-;2869:5;-1:-1:-1;2893:37:1;2926:2;2911:18;;2893:37;:::i;:::-;2883:47;;2691:245;;;;;:::o;2941:327::-;;;3070:2;3058:9;3049:7;3045:23;3041:32;3038:2;;;3091:6;3083;3076:22;3038:2;3135:9;3122:23;3154:33;3181:5;3154:33;:::i;:::-;3206:5;3258:2;3243:18;;;;3230:32;;-1:-1:-1;;;3028:240:1:o;3273:262::-;;;3396:2;3384:9;3375:7;3371:23;3367:32;3364:2;;;3417:6;3409;3402:22;3364:2;3445:28;3463:9;3445:28;:::i;3540:344::-;;;;3683:2;3671:9;3662:7;3658:23;3654:32;3651:2;;;3704:6;3696;3689:22;3651:2;3732:30;3752:9;3732:30;:::i;:::-;3722:40;;3781:39;3816:2;3805:9;3801:18;3781:39;:::i;:::-;3771:49;;3839:39;3874:2;3863:9;3859:18;3839:39;:::i;:::-;3829:49;;3641:243;;;;;:::o;3889:494::-;;;;;;4064:3;4052:9;4043:7;4039:23;4035:33;4032:2;;;4086:6;4078;4071:22;4032:2;4114:30;4134:9;4114:30;:::i;:::-;4104:40;;4163:39;4198:2;4187:9;4183:18;4163:39;:::i;:::-;4153:49;;4221:39;4256:2;4245:9;4241:18;4221:39;:::i;:::-;4211:49;;4279:39;4314:2;4303:9;4299:18;4279:39;:::i;:::-;4269:49;;4337:40;4372:3;4361:9;4357:19;4337:40;:::i;:::-;4327:50;;4022:361;;;;;;;;:::o;4388:190::-;;4500:2;4488:9;4479:7;4475:23;4471:32;4468:2;;;4521:6;4513;4506:22;4468:2;-1:-1:-1;4549:23:1;;4458:120;-1:-1:-1;4458:120:1:o;4583:258::-;;;4712:2;4700:9;4691:7;4687:23;4683:32;4680:2;;;4733:6;4725;4718:22;4680:2;-1:-1:-1;;4761:23:1;;;4831:2;4816:18;;;4803:32;;-1:-1:-1;4670:171:1:o;4846:316::-;;;;5003:2;4991:9;4982:7;4978:23;4974:32;4971:2;;;5024:6;5016;5009:22;4971:2;5058:9;5052:16;5042:26;;5108:2;5097:9;5093:18;5087:25;5077:35;;5152:2;5141:9;5137:18;5131:25;5121:35;;4961:201;;;;;:::o;5167:395::-;;;;;5330:3;5318:9;5309:7;5305:23;5301:33;5298:2;;;5352:6;5344;5337:22;5298:2;-1:-1:-1;;5380:23:1;;;5450:2;5435:18;;5422:32;;-1:-1:-1;5501:2:1;5486:18;;5473:32;;5552:2;5537:18;5524:32;;-1:-1:-1;5288:274:1;-1:-1:-1;5288:274:1:o;5567:469::-;;5664:5;5658:12;5691:6;5686:3;5679:19;5717:4;5746:2;5741:3;5737:12;5730:19;;5783:2;5776:5;5772:14;5804:3;5816:195;5830:6;5827:1;5824:13;5816:195;;;5895:13;;-1:-1:-1;;;;;5891:39:1;5879:52;;5951:12;;;;5986:15;;;;5927:1;5845:9;5816:195;;;-1:-1:-1;6027:3:1;;5634:402;-1:-1:-1;;;;;5634:402:1:o;6041:205::-;6241:3;6232:14::o;6251:203::-;-1:-1:-1;;;;;6415:32:1;;;;6397:51;;6385:2;6370:18;;6352:102::o;6459:529::-;-1:-1:-1;;;;;6810:15:1;;;6792:34;;6862:15;;;6857:2;6842:18;;6835:43;6914:15;;;6909:2;6894:18;;6887:43;6966:15;;;6961:2;6946:18;;6939:43;6741:3;6726:19;;6708:280::o;6993:615::-;-1:-1:-1;;;;;7360:15:1;;;7342:34;;7407:2;7392:18;;7385:34;;;;7450:2;7435:18;;7428:34;;;;7493:2;7478:18;;7471:34;;;;7542:15;;;7536:3;7521:19;;7514:44;7322:3;7574:19;;7567:35;;;;7291:3;7276:19;;7258:350::o;7613:187::-;7778:14;;7771:22;7753:41;;7741:2;7726:18;;7708:92::o;8030:524::-;;8309:6;8298:9;8291:25;8352:3;8347:2;8336:9;8332:18;8325:31;8373:63;8431:3;8420:9;8416:19;8408:6;8373:63;:::i;:::-;-1:-1:-1;;;;;8472:32:1;;;;8467:2;8452:18;;8445:60;-1:-1:-1;8536:2:1;8521:18;8514:34;8365:71;8281:273;-1:-1:-1;;8281:273:1:o;8559:603::-;;8700:2;8729;8718:9;8711:21;8761:6;8755:13;8804:6;8799:2;8788:9;8784:18;8777:34;8829:4;8842:140;8856:6;8853:1;8850:13;8842:140;;;8951:14;;;8947:23;;8941:30;8917:17;;;8936:2;8913:26;8906:66;8871:10;;8842:140;;;9000:6;8997:1;8994:13;8991:2;;;9070:4;9065:2;9056:6;9045:9;9041:22;9037:31;9030:45;8991:2;-1:-1:-1;9146:2:1;9125:15;-1:-1:-1;;9121:29:1;9106:45;;;;9153:2;9102:54;;8680:482;-1:-1:-1;;;8680:482:1:o;9167:399::-;9369:2;9351:21;;;9408:2;9388:18;;;9381:30;9447:34;9442:2;9427:18;;9420:62;-1:-1:-1;;;9513:2:1;9498:18;;9491:33;9556:3;9541:19;;9341:225::o;9571:348::-;9773:2;9755:21;;;9812:2;9792:18;;;9785:30;9851:26;9846:2;9831:18;;9824:54;9910:2;9895:18;;9745:174::o;9924:412::-;10126:2;10108:21;;;10165:2;10145:18;;;10138:30;10204:34;10199:2;10184:18;;10177:62;-1:-1:-1;;;10270:2:1;10255:18;;10248:46;10326:3;10311:19;;10098:238::o;10341:341::-;10543:2;10525:21;;;10582:2;10562:18;;;10555:30;-1:-1:-1;;;10616:2:1;10601:18;;10594:47;10673:2;10658:18;;10515:167::o;10687:399::-;10889:2;10871:21;;;10928:2;10908:18;;;10901:30;10967:34;10962:2;10947:18;;10940:62;-1:-1:-1;;;11033:2:1;11018:18;;11011:33;11076:3;11061:19;;10861:225::o;11091:398::-;11293:2;11275:21;;;11332:2;11312:18;;;11305:30;11371:34;11366:2;11351:18;;11344:62;-1:-1:-1;;;11437:2:1;11422:18;;11415:32;11479:3;11464:19;;11265:224::o;11494:347::-;11696:2;11678:21;;;11735:2;11715:18;;;11708:30;11774:25;11769:2;11754:18;;11747:53;11832:2;11817:18;;11668:173::o;11846:399::-;12048:2;12030:21;;;12087:2;12067:18;;;12060:30;12126:34;12121:2;12106:18;;12099:62;-1:-1:-1;;;12192:2:1;12177:18;;12170:33;12235:3;12220:19;;12020:225::o;12250:397::-;12452:2;12434:21;;;12491:2;12471:18;;;12464:30;12530:34;12525:2;12510:18;;12503:62;-1:-1:-1;;;12596:2:1;12581:18;;12574:31;12637:3;12622:19;;12424:223::o;12652:356::-;12854:2;12836:21;;;12873:18;;;12866:30;12932:34;12927:2;12912:18;;12905:62;12999:2;12984:18;;12826:182::o;13013:404::-;13215:2;13197:21;;;13254:2;13234:18;;;13227:30;13293:34;13288:2;13273:18;;13266:62;-1:-1:-1;;;13359:2:1;13344:18;;13337:38;13407:3;13392:19;;13187:230::o;13422:348::-;13624:2;13606:21;;;13663:2;13643:18;;;13636:30;13702:26;13697:2;13682:18;;13675:54;13761:2;13746:18;;13596:174::o;13775:406::-;13977:2;13959:21;;;14016:2;13996:18;;;13989:30;14055:34;14050:2;14035:18;;14028:62;-1:-1:-1;;;14121:2:1;14106:18;;14099:40;14171:3;14156:19;;13949:232::o;14186:343::-;14388:2;14370:21;;;14427:2;14407:18;;;14400:30;-1:-1:-1;;;14461:2:1;14446:18;;14439:49;14520:2;14505:18;;14360:169::o;14534:403::-;14736:2;14718:21;;;14775:2;14755:18;;;14748:30;14814:34;14809:2;14794:18;;14787:62;-1:-1:-1;;;14880:2:1;14865:18;;14858:37;14927:3;14912:19;;14708:229::o;14942:405::-;15144:2;15126:21;;;15183:2;15163:18;;;15156:30;15222:34;15217:2;15202:18;;15195:62;-1:-1:-1;;;15288:2:1;15273:18;;15266:39;15337:3;15322:19;;15116:231::o;15352:419::-;15554:2;15536:21;;;15593:2;15573:18;;;15566:30;15632:34;15627:2;15612:18;;15605:62;15703:25;15698:2;15683:18;;15676:53;15761:3;15746:19;;15526:245::o;15776:410::-;15978:2;15960:21;;;16017:2;15997:18;;;15990:30;16056:34;16051:2;16036:18;;16029:62;-1:-1:-1;;;16122:2:1;16107:18;;16100:44;16176:3;16161:19;;15950:236::o;16191:401::-;16393:2;16375:21;;;16432:2;16412:18;;;16405:30;16471:34;16466:2;16451:18;;16444:62;-1:-1:-1;;;16537:2:1;16522:18;;16515:35;16582:3;16567:19;;16365:227::o;16597:348::-;16799:2;16781:21;;;16838:2;16818:18;;;16811:30;16877:26;16872:2;16857:18;;16850:54;16936:2;16921:18;;16771:174::o;16950:425::-;17152:2;17134:21;;;17191:2;17171:18;;;17164:30;17230:34;17225:2;17210:18;;17203:62;17301:31;17296:2;17281:18;;17274:59;17365:3;17350:19;;17124:251::o;17380:346::-;17582:2;17564:21;;;17621:2;17601:18;;;17594:30;-1:-1:-1;;;17655:2:1;17640:18;;17633:52;17717:2;17702:18;;17554:172::o;17731:365::-;17937:6;17970:15;;;17952:34;;18022:15;;;18017:2;18002:18;;17995:43;18074:15;;;18069:2;18054:18;;18047:43;17915:2;17900:18;;17882:214::o;18101:602::-;18386:6;18419:15;;;18401:34;;18471:15;;;18466:2;18451:18;;18444:43;18523:15;;;18518:2;18503:18;;18496:43;18575:15;;;18570:2;18555:18;;18548:43;18628:15;;18622:3;18607:19;;18600:44;18681:15;;;18675:3;18660:19;;18653:44;18363:3;18348:19;;18330:373::o;18708:177::-;18854:25;;;18842:2;18827:18;;18809:76::o;18890:588::-;;19189:6;19178:9;19171:25;19232:6;19227:2;19216:9;19212:18;19205:34;19275:3;19270:2;19259:9;19255:18;19248:31;19296:63;19354:3;19343:9;19339:19;19331:6;19296:63;:::i;:::-;-1:-1:-1;;;;;19395:32:1;;;;19390:2;19375:18;;19368:60;-1:-1:-1;19459:3:1;19444:19;19437:35;19288:71;19161:317;-1:-1:-1;;;19161:317:1:o;19483:248::-;19657:25;;;19713:2;19698:18;;19691:34;19645:2;19630:18;;19612:119::o;19736:184::-;19908:4;19896:17;;;;19878:36;;19866:2;19851:18;;19833:87::o;19925:224::-;;19992:6;20025:2;20022:1;20018:10;20055:2;20052:1;20048:10;20086:3;20082:2;20078:12;20073:3;20070:21;20067:2;;;20094:18;;:::i;:::-;20130:13;;19972:177;-1:-1:-1;;;;19972:177:1:o;20154:128::-;;20225:1;20221:6;20218:1;20215:13;20212:2;;;20231:18;;:::i;:::-;-1:-1:-1;20267:9:1;;20202:80::o;20287:217::-;;20353:1;20343:2;;-1:-1:-1;;;20378:31:1;;20432:4;20429:1;20422:15;20460:4;20385:1;20450:15;20343:2;-1:-1:-1;20489:9:1;;20333:171::o;20509:453::-;20605:6;20628:5;20642:314;20691:1;20728:2;20718:8;20715:16;20705:2;;20735:5;;;20705:2;20776:4;20771:3;20767:14;20761:4;20758:24;20755:2;;;20785:18;;:::i;:::-;20835:2;20825:8;20821:17;20818:2;;;20850:16;;;;20818:2;20929:17;;;;;20889:15;;20642:314;;;20586:376;;;;;;;:::o;20967:148::-;;21054:55;-1:-1:-1;;21095:4:1;21081:19;;21075:4;21120:922;21204:8;21194:2;;-1:-1:-1;21245:1:1;21259:5;;21194:2;21293:4;21283:2;;-1:-1:-1;21330:1:1;21344:5;;21283:2;21375:4;21393:1;21388:59;;;;21461:1;21456:183;;;;21368:271;;21388:59;21418:1;21409:10;;21432:5;;;21456:183;21493:3;21483:8;21480:17;21477:2;;;21500:18;;:::i;:::-;21556:1;21546:8;21542:16;21533:25;;21584:3;21577:5;21574:14;21571:2;;;21591:18;;:::i;:::-;21624:5;;;21368:271;;21723:2;21713:8;21710:16;21704:3;21698:4;21695:13;21691:36;21685:2;21675:8;21672:16;21667:2;21661:4;21658:12;21654:35;21651:77;21648:2;;;-1:-1:-1;21760:19:1;;;21795:14;;;21792:2;;;21812:18;;:::i;:::-;21845:5;;21648:2;21892:42;21930:3;21920:8;21914:4;21911:1;21892:42;:::i;:::-;21967:6;21962:3;21958:16;21949:7;21946:29;21943:2;;;21978:18;;:::i;:::-;22016:20;;21184:858;-1:-1:-1;;;;21184:858:1:o;22047:168::-;;22153:1;22149;22145:6;22141:14;22138:1;22135:21;22130:1;22123:9;22116:17;22112:45;22109:2;;;22160:18;;:::i;:::-;-1:-1:-1;22200:9:1;;22099:116::o;22220:217::-;;22288:6;22344:10;;;;22314;;22366:12;;;22363:2;;;22381:18;;:::i;:::-;22418:13;;22268:169;-1:-1:-1;;;22268:169:1:o;22442:125::-;;22510:1;22507;22504:8;22501:2;;;22515:18;;:::i;:::-;-1:-1:-1;22552:9:1;;22491:76::o;22572:127::-;22633:10;22628:3;22624:20;22621:1;22614:31;22664:4;22661:1;22654:15;22688:4;22685:1;22678:15;22704:133;-1:-1:-1;;;;;22781:31:1;;22771:42;;22761:2;;22827:1;22824;22817:12;22761:2;22751:86;:::o

Swarm Source

ipfs://800da958cdeafffeba25f735de83db89a96d0c68add8f80096d725b700a065b4
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.