ETH Price: $2,528.67 (+0.39%)

Token

BitChain ($BIT)
 

Overview

Max Total Supply

100,000,000 $BIT

Holders

214

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.0000000000042645 $BIT

Value
$0.00
0xaE87dA7AA001e2C9eCF6ff5845977732c650f957
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:
BitChain

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-30
*/

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

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

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

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

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

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

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
}

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

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

    Fees public _taxRates = Fees({
        buyFee: 300,
        sellFee: 300,
        transferFee: 0
    });

    uint256 constant public maxBuyTaxes = 1000;
    uint256 constant public maxSellTaxes = 1000;
    uint256 constant public maxTransferTaxes = 1000;
    uint256 constant masterTaxDivisor = 10000;

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

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

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

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

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

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

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

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

    address private _owner;

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

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

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

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

600060028190556009805460ff1916600117905560e060405261012c608081905260a05260c052600a805465ffffffffffff191663012c012c178155600d8054600161ff0160a01b03191673bb9db9604c7e23acb0873ddda61ef1c7de3850121790556011819055606490620000789060129062000329565b62000088906305f5e10062000341565b6200009590600262000341565b620000a191906200035b565b60125560646012600a620000b6919062000329565b620000c6906305f5e10062000341565b620000d390600262000341565b620000df91906200035b565b6013556014805461ffff19169055601680546001600160a01b031916331790556200010d6012600a62000329565b6200011d906305f5e10062000341565b601680546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001716012600a62000329565b62000181906305f5e10062000341565b60405190815260200160405180910390a3601680546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055955490941683526004909152902080549092161790556200037e565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200026b5781600019048211156200024f576200024f62000214565b808516156200025d57918102915b93841c93908002906200022f565b509250929050565b600082620002845750600162000323565b81620002935750600062000323565b8160018114620002ac5760028114620002b757620002d7565b600191505062000323565b60ff841115620002cb57620002cb62000214565b50506001821b62000323565b5060208310610133831016604e8410600b8410161715620002fc575081810a62000323565b6200030883836200022a565b80600019048211156200031f576200031f62000214565b0290505b92915050565b60006200033a60ff84168362000273565b9392505050565b808202811582820484141762000323576200032362000214565b6000826200037957634e487b7160e01b600052601260045260246000fd5b500490565b613f54806200038e6000396000f3fe60806040526004361061036f5760003560e01c806350a8e016116101c657806395d89b41116100f7578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610a34578063fb78680d14610a49578063fdb78c0e14610a69578063feadde9c14610a8a57600080fd5b8063dd62ed3e146109ae578063eafb5a3c146109f4578063eb50e70e14610a1457600080fd5b8063b1b08f71116100d1578063b1b08f71146105e1578063b3d514fb146105e1578063b7df8b3614610974578063bfc2fc351461098e57600080fd5b806395d89b4114610907578063a9059cbb14610934578063ab558e4d1461095457600080fd5b8063715018a61161016457806380c581d11161013e57806380c581d11461089f578063893d20e8146108bf5780638a63bd9b146108dd5780638a8c523c146108f257600080fd5b8063715018a61461085557806375f0a8741461086a57806378648edf1461088a57600080fd5b80635c24b074116101a05780635c24b074146107b15780635cce86cd146107d15780636ebd00781461080a57806370a082311461081f57600080fd5b806350a8e0161461075c578063590ffdce1461077b5780635a6f09181461079b57600080fd5b806328577751116102a05780633f3cf56c1161023e5780634bbb93eb116102185780634bbb93eb146106c35780634e718e48146106e35780634fb2e45d146107035780634fbee1931461072357600080fd5b80633f3cf56c14610669578063452ed4f1146106895780634ada218b146106a957600080fd5b80632e8fa8211161027a5780632e8fa821146105f7578063313ce5671461060d57806332cde6641461062957806336fddb041461064957600080fd5b806328577751146105b65780632b112e49146105cc5780632b28fc7a146105e157600080fd5b80630dcbcf1c1161030d57806318160ddd116102e757806318160ddd1461054157806323b872dd1461055657806326003957146105765780632610eaca1461059657600080fd5b80630dcbcf1c146104d15780630fa604e41461050a57806313b4a7f41461051f57600080fd5b806306fdde031161034957806306fdde03146104285780630758d9241461046257806307dd79e014610487578063095ea7b3146104b157600080fd5b806303fd2a451461037b5780630445b667146103ae578063069d955f146103d257600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039161dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103c4600e5481565b6040519081526020016103a5565b3480156103de57600080fd5b50600a546104039061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a5565b34801561043457600080fd5b506040805180820190915260088152672134ba21b430b4b760c11b60208201525b6040516103a59190613869565b34801561046e57600080fd5b50600b546103919061010090046001600160a01b031681565b34801561049357600080fd5b50600b546104a19060ff1681565b60405190151581526020016103a5565b3480156104bd57600080fd5b506104a16104cc3660046138cc565b610aaa565b3480156104dd57600080fd5b506104a16104ec3660046138f8565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561051657600080fd5b506103c4610ac1565b34801561052b57600080fd5b5061053f61053a366004613915565b610ae1565b005b34801561054d57600080fd5b506103c4610ca4565b34801561056257600080fd5b506104a161057136600461394e565b610cc0565b34801561058257600080fd5b5061053f61059136600461398f565b610d38565b3480156105a257600080fd5b5061053f6105b1366004613a87565b610e81565b3480156105c257600080fd5b506103c460115481565b3480156105d857600080fd5b506103c4611036565b3480156105ed57600080fd5b506103c46103e881565b34801561060357600080fd5b506103c4600f5481565b34801561061957600080fd5b50604051601281526020016103a5565b34801561063557600080fd5b5061053f610644366004613b60565b6110b4565b34801561065557600080fd5b5061053f610664366004613bb1565b611208565b34801561067557600080fd5b5061053f61068436600461398f565b61127b565b34801561069557600080fd5b50600c54610391906001600160a01b031681565b3480156106b557600080fd5b506014546104a19060ff1681565b3480156106cf57600080fd5b506103c46106de366004613bdf565b6113d0565b3480156106ef57600080fd5b5061053f6106fe366004613bdf565b611404565b34801561070f57600080fd5b5061053f61071e3660046138f8565b6114a2565b34801561072f57600080fd5b506104a161073e3660046138f8565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561076857600080fd5b506014546104a190610100900460ff1681565b34801561078757600080fd5b5061053f610796366004613bb1565b6116a4565b3480156107a757600080fd5b506103c460155481565b3480156107bd57600080fd5b5061053f6107cc3660046138f8565b611717565b3480156107dd57600080fd5b506104a16107ec3660046138f8565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561081657600080fd5b506103c46118f5565b34801561082b57600080fd5b506103c461083a3660046138f8565b6001600160a01b031660009081526020819052604090205490565b34801561086157600080fd5b5061053f611910565b34801561087657600080fd5b50600d54610391906001600160a01b031681565b34801561089657600080fd5b5061053f611a35565b3480156108ab57600080fd5b5061053f6108ba366004613bb1565b611a8c565b3480156108cb57600080fd5b506016546001600160a01b0316610391565b3480156108e957600080fd5b506104a1611ca7565b3480156108fe57600080fd5b5061053f611d17565b34801561091357600080fd5b506040805180820190915260048152630910925560e21b6020820152610455565b34801561094057600080fd5b506104a161094f3660046138cc565b611f6d565b34801561096057600080fd5b5061053f61096f3660046138f8565b611f84565b34801561098057600080fd5b506010546104a19060ff1681565b34801561099a57600080fd5b5061053f6109a9366004613bf8565b61211e565b3480156109ba57600080fd5b506103c46109c9366004613915565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a0057600080fd5b5061053f610a0f3660046138f8565b6121c9565b348015610a2057600080fd5b5061053f610a2f3660046138f8565b6125ca565b348015610a4057600080fd5b5061053f61268a565b348015610a5557600080fd5b5061053f610a64366004613c16565b612763565b348015610a7557600080fd5b50600d546104a190600160a81b900460ff1681565b348015610a9657600080fd5b5061053f610aa5366004613bb1565b612a25565b6000610ab7338484612a98565b5060015b92915050565b6000610acf6012600a613d42565b601354610adc9190613d51565b905090565b6016546001600160a01b03163314610b2e5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff83398151915260448201526064015b60405180910390fd5b60095460ff16610b3d57600080fd5b6001600160a01b0382163014801590610b5f57506001600160a01b0381163014155b8015610b795750600c546001600160a01b03838116911614155b8015610b935750600c546001600160a01b03828116911614155b610bcd5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610b25565b806001600160a01b0316826001600160a01b031603610c2f576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610c2b9082906116a4565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610c999083906116a4565b610c2b8160016116a4565b6000610cb26012600a613d42565b610adc906305f5e100613d73565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d25576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d1f908490613d8a565b90915550505b610d30848484612b91565b949350505050565b6016546001600160a01b03163314610d805760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6064610d8e6012600a613d42565b610d9c906305f5e100613d73565b610da69190613d51565b8183610db46012600a613d42565b610dc2906305f5e100613d73565b610dcc9190613d73565b610dd69190613d51565b1015610e4a5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610b25565b8082610e586012600a613d42565b610e66906305f5e100613d73565b610e709190613d73565b610e7a9190613d51565b6013555050565b6016546001600160a01b03163314610ec95760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b8051825114610f1a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b25565b60005b82518161ffff16101561103157610f366012600a613d42565b828261ffff1681518110610f4c57610f4c613d9d565b6020026020010151610f5e9190613d73565b336000908152602081905260409020541015610fbc5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610b25565b61101e33848361ffff1681518110610fd657610fd6613d9d565b60200260200101516012600a610fec9190613d42565b858561ffff168151811061100257611002613d9d565b60200260200101516110149190613d73565b60008060016130b1565b508061102981613db3565b915050610f1d565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546110909190613dd4565b61109c6012600a613d42565b6110aa906305f5e100613d73565b610adc9190613d8a565b6016546001600160a01b031633146110fc5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b600b5460ff161561114f5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610b25565b6103e88361ffff161115801561116b57506103e88261ffff1611155b801561117d57506103e88161ffff1611155b6111c95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b25565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6016546001600160a01b031633146112505760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146112c35760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6103e86112d26012600a613d42565b6112e0906305f5e100613d73565b6112eb906005613d73565b6112f59190613d51565b81836113036012600a613d42565b611311906305f5e100613d73565b61131b9190613d73565b6113259190613d51565b10156113995760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b25565b80826113a76012600a613d42565b6113b5906305f5e100613d73565b6113bf9190613d73565b6113c99190613d51565b6012555050565b600c546001600160a01b0316600090815260208190526040812054612710906113fa908490613d73565b610abb9190613d51565b6016546001600160a01b0316331461144c5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b609681111561149d5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610b25565b601155565b6016546001600160a01b031633146114ea5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6001600160a01b0381166115665760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b25565b61deac196001600160a01b038216016115e75760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b25565b6016546115fe906001600160a01b031660006116a4565b6116098160016116a4565b6016546001600160a01b031660009081526020819052604090205415611652576016546001600160a01b031660008181526020819052604090205461165091908390611014565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146116ec5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b0316331461175f5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b60145460ff161561176f57600080fd5b306001600160a01b038216036117c75760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b25565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af192505050801561184d575060408051601f3d908101601f1916820190925261184a91810190613de7565b60015b61185657600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560165492546118d39383169291900416600019612a98565b600b5461103190309061010090046001600160a01b0316600019612a98565b50565b60006119036012600a613d42565b601254610adc9190613d51565b6016546001600160a01b031633146119585760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b60145460ff166119d05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610b25565b6016546119e7906001600160a01b031660006116a4565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b03163314611a7d5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b600b805460ff19166001179055565b6016546001600160a01b03163314611ad45760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b80611b63576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015611b4757600080fd5b505af1158015611b5b573d6000803e3d6000fd5b505050505050565b60025415611bca576203f48060025442611b7d9190613d8a565b11611bca5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610b25565b6001600160a01b03821660009081526001602052604090205460ff1615611c335760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b25565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401600060405180830381600087803b158015611b4757600080fd5b6016546000906001600160a01b03163314611cf25760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b600b54611d1190309061010090046001600160a01b0316600019612a98565b50600190565b6016546001600160a01b03163314611d5f5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b60145460ff1615611db25760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b25565b601454610100900460ff16611e095760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b25565b6014546201000090046001600160a01b0316611e39576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611eab57600080fd5b505af1925050508015611ebc575060015b50601454600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611f3f575060408051601f3d908101601f19168201909252611f3c91810190613e16565b60015b15611f4e57600e91909155600f555b6014805460ff1990811660011790915560098054909116905542601555565b6000611f7a338484612b91565b5060019392505050565b6016546001600160a01b03163314611fcc5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b601454610100900460ff161561203457306001600160a01b038216036120345760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b25565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561208b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120af9190613e3a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110319190613e53565b6016546001600160a01b031633146121665760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146122115760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b601454610100900460ff16156122695760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b25565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d29190613e70565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561231f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123439190613e70565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561238e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b29190613e70565b600c546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661254857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124419190613e70565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b29190613e70565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190613e70565b600c80546001600160a01b0319166001600160a01b0392909216919091179055612564565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff191690911790559154611031923092910416600019612a98565b6016546001600160a01b031633146126125760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6001600160a01b0381166126685760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b25565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b031633146126d25760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b601454610100900460ff161561272a5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b25565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156118f2573d6000803e3d6000fd5b6016546001600160a01b031633146127ab5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b82846127b96012600a613d42565b6127c7906305f5e100613d73565b6127d19190613d73565b6127db9190613d51565b600e5580826127ec6012600a613d42565b6127fa906305f5e100613d73565b6128049190613d73565b61280e9190613d51565b600f819055600e54111561286e5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b25565b600c546001600160a01b031660009081526020819052604090205461271090612898906096613d73565b6128a29190613d51565b600f5411156128ff5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b25565b620f424061290f6012600a613d42565b61291d906305f5e100613d73565b6129279190613d51565b600f54101561298f5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b25565b620f424061299f6012600a613d42565b6129ad906305f5e100613d73565b6129b79190613d51565b600e541015612a1f5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b25565b50505050565b6016546001600160a01b03163314612a6d5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612ae45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b25565b6001600160a01b038216612b305760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b25565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612bf75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b25565b6001600160a01b038316612c595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b25565b60008211612cbb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b25565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612ce95760019250612d17565b6001600160a01b03861660009081526001602052604090205460ff1615612d135760019150612d17565b5060015b612d2187876132be565b15612fae5760145460ff16612e225780612d7d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b25565b6001600160a01b03871660009081526005602052604090205460ff16158015612dbf57506001600160a01b03861660009081526005602052604090205460ff16155b15612e225760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b25565b8280612e2b5750815b15612eda576001600160a01b03871660009081526007602052604090205460ff16158015612e7257506001600160a01b03861660009081526007602052604090205460ff16155b15612eda57601254851115612eda5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b25565b600b546001600160a01b038781166101009092041614801590612efb575081155b15612fae576001600160a01b03861660009081526007602052604090205460ff16612fae5760135485612f43886001600160a01b031660009081526020819052604090205490565b612f4d9190613dd4565b1115612fae5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b25565b811561309857600d54600160a01b900460ff1661309857600d54600160a81b900460ff168015612ff757506001600160a01b03861660009081526008602052604090205460ff16155b801561301c57506001600160a01b03871660009081526008602052604090205460ff16155b156130985730600090815260208190526040902054600e54811061309657600f5460105460ff161561308057601154600c546001600160a01b03166000908152602081905260409020546127109161307391613d73565b61307d9190613d51565b90505b80821061308b578091505b613094826133d5565b505b505b6130a68787878686866130b1565b979650505050505050565b6001600160a01b03861660009081526006602052604081205460019060ff16806130f357506001600160a01b03871660009081526006602052604090205460ff165b156130fc575060005b6001600160a01b03881660009081526020819052604081208054889290613124908490613d8a565b9091555060009050816131375786613143565b61314389888888613619565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546131799190613dd4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131c591815260200190565b60405180910390a3601454610100900460ff166132af576131e68989613725565b601454610100900460ff16158015613203575061320389896132be565b801561322857506001600160a01b03891660009081526005602052604090205460ff16155b801561324d57506001600160a01b03881660009081526005602052604090205460ff16155b8015613257575083155b156132af5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b25565b50600198975050505050505050565b6016546000906001600160a01b038481169116148015906132ed57506016546001600160a01b03838116911614155b801561330457506016546001600160a01b03163214155b801561332957506001600160a01b03821660009081526004602052604090205460ff16155b801561334e57506001600160a01b03831660009081526004602052604090205460ff16155b801561336557506001600160a01b03821661dead14155b801561337957506001600160a01b03821615155b801561338e57506001600160a01b0383163014155b80156133ae57506014546001600160a01b03848116620100009092041614155b80156133ce57506014546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461344b57306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061348057613480613d9d565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135179190613e70565b8160018151811061352a5761352a613d9d565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac94790613577908590600090869030904290600401613e8d565b600060405180830381600087803b15801561359157600080fd5b505af19250505080156135a2575060015b6135ac5750613609565b600d546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d80600081146135fe576040519150601f19603f3d011682016040523d82523d6000602084013e613603565b606091505b50505050505b50600d805460ff60a01b19169055565b600080831561362f5750600a5461ffff16613659565b82156136485750600a5462010000900461ffff16613659565b50600a54640100000000900461ffff165b8060000361366a5784915050610d30565b6014546201000090046001600160a01b03163014801561368b575046606114155b1561369557506111945b60006127106136a48388613d73565b6136ae9190613d51565b9050801561371b5730600090815260208190526040812080548392906136d5908490613dd4565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6130a68187613d8a565b601454610100900460ff16156137895760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b25565b61379382826132be565b1580156137ad5750600c546001600160a01b038281169116145b15610c2b576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613825576014805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016121bd565b600060208083528351808285015260005b818110156138965785810183015185820160400152820161387a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146118f257600080fd5b600080604083850312156138df57600080fd5b82356138ea816138b7565b946020939093013593505050565b60006020828403121561390a57600080fd5b81356133ce816138b7565b6000806040838503121561392857600080fd5b8235613933816138b7565b91506020830135613943816138b7565b809150509250929050565b60008060006060848603121561396357600080fd5b833561396e816138b7565b9250602084013561397e816138b7565b929592945050506040919091013590565b600080604083850312156139a257600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156139f0576139f06139b1565b604052919050565b600067ffffffffffffffff821115613a1257613a126139b1565b5060051b60200190565b600082601f830112613a2d57600080fd5b81356020613a42613a3d836139f8565b6139c7565b82815260059290921b84018101918181019086841115613a6157600080fd5b8286015b84811015613a7c5780358352918301918301613a65565b509695505050505050565b60008060408385031215613a9a57600080fd5b823567ffffffffffffffff80821115613ab257600080fd5b818501915085601f830112613ac657600080fd5b81356020613ad6613a3d836139f8565b82815260059290921b84018101918181019089841115613af557600080fd5b948201945b83861015613b1c578535613b0d816138b7565b82529482019490820190613afa565b96505086013592505080821115613b3257600080fd5b50613b3f85828601613a1c565b9150509250929050565b803561ffff81168114613b5b57600080fd5b919050565b600080600060608486031215613b7557600080fd5b613b7e84613b49565b9250613b8c60208501613b49565b9150613b9a60408501613b49565b90509250925092565b80151581146118f257600080fd5b60008060408385031215613bc457600080fd5b8235613bcf816138b7565b9150602083013561394381613ba3565b600060208284031215613bf157600080fd5b5035919050565b60008060408385031215613c0b57600080fd5b8235613bcf81613ba3565b60008060008060808587031215613c2c57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613c99578160001904821115613c7f57613c7f613c48565b80851615613c8c57918102915b93841c9390800290613c63565b509250929050565b600082613cb057506001610abb565b81613cbd57506000610abb565b8160018114613cd35760028114613cdd57613cf9565b6001915050610abb565b60ff841115613cee57613cee613c48565b50506001821b610abb565b5060208310610133831016604e8410600b8410161715613d1c575081810a610abb565b613d268383613c5e565b8060001904821115613d3a57613d3a613c48565b029392505050565b60006133ce60ff841683613ca1565b600082613d6e57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610abb57610abb613c48565b81810381811115610abb57610abb613c48565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613dca57613dca613c48565b6001019392505050565b80820180821115610abb57610abb613c48565b60008060408385031215613dfa57600080fd5b8251613e05816138b7565b6020840151909250613943816138b7565b60008060408385031215613e2957600080fd5b505080516020909101519092909150565b600060208284031215613e4c57600080fd5b5051919050565b600060208284031215613e6557600080fd5b81516133ce81613ba3565b600060208284031215613e8257600080fd5b81516133ce816138b7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613edd5784516001600160a01b031683529383019391830191600101613eb8565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220590997082baa519939615a16826ccc3909f74ef1d25ff3bdc6759033d307cad764736f6c63430008130033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c806350a8e016116101c657806395d89b41116100f7578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610a34578063fb78680d14610a49578063fdb78c0e14610a69578063feadde9c14610a8a57600080fd5b8063dd62ed3e146109ae578063eafb5a3c146109f4578063eb50e70e14610a1457600080fd5b8063b1b08f71116100d1578063b1b08f71146105e1578063b3d514fb146105e1578063b7df8b3614610974578063bfc2fc351461098e57600080fd5b806395d89b4114610907578063a9059cbb14610934578063ab558e4d1461095457600080fd5b8063715018a61161016457806380c581d11161013e57806380c581d11461089f578063893d20e8146108bf5780638a63bd9b146108dd5780638a8c523c146108f257600080fd5b8063715018a61461085557806375f0a8741461086a57806378648edf1461088a57600080fd5b80635c24b074116101a05780635c24b074146107b15780635cce86cd146107d15780636ebd00781461080a57806370a082311461081f57600080fd5b806350a8e0161461075c578063590ffdce1461077b5780635a6f09181461079b57600080fd5b806328577751116102a05780633f3cf56c1161023e5780634bbb93eb116102185780634bbb93eb146106c35780634e718e48146106e35780634fb2e45d146107035780634fbee1931461072357600080fd5b80633f3cf56c14610669578063452ed4f1146106895780634ada218b146106a957600080fd5b80632e8fa8211161027a5780632e8fa821146105f7578063313ce5671461060d57806332cde6641461062957806336fddb041461064957600080fd5b806328577751146105b65780632b112e49146105cc5780632b28fc7a146105e157600080fd5b80630dcbcf1c1161030d57806318160ddd116102e757806318160ddd1461054157806323b872dd1461055657806326003957146105765780632610eaca1461059657600080fd5b80630dcbcf1c146104d15780630fa604e41461050a57806313b4a7f41461051f57600080fd5b806306fdde031161034957806306fdde03146104285780630758d9241461046257806307dd79e014610487578063095ea7b3146104b157600080fd5b806303fd2a451461037b5780630445b667146103ae578063069d955f146103d257600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039161dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103c4600e5481565b6040519081526020016103a5565b3480156103de57600080fd5b50600a546104039061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a5565b34801561043457600080fd5b506040805180820190915260088152672134ba21b430b4b760c11b60208201525b6040516103a59190613869565b34801561046e57600080fd5b50600b546103919061010090046001600160a01b031681565b34801561049357600080fd5b50600b546104a19060ff1681565b60405190151581526020016103a5565b3480156104bd57600080fd5b506104a16104cc3660046138cc565b610aaa565b3480156104dd57600080fd5b506104a16104ec3660046138f8565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561051657600080fd5b506103c4610ac1565b34801561052b57600080fd5b5061053f61053a366004613915565b610ae1565b005b34801561054d57600080fd5b506103c4610ca4565b34801561056257600080fd5b506104a161057136600461394e565b610cc0565b34801561058257600080fd5b5061053f61059136600461398f565b610d38565b3480156105a257600080fd5b5061053f6105b1366004613a87565b610e81565b3480156105c257600080fd5b506103c460115481565b3480156105d857600080fd5b506103c4611036565b3480156105ed57600080fd5b506103c46103e881565b34801561060357600080fd5b506103c4600f5481565b34801561061957600080fd5b50604051601281526020016103a5565b34801561063557600080fd5b5061053f610644366004613b60565b6110b4565b34801561065557600080fd5b5061053f610664366004613bb1565b611208565b34801561067557600080fd5b5061053f61068436600461398f565b61127b565b34801561069557600080fd5b50600c54610391906001600160a01b031681565b3480156106b557600080fd5b506014546104a19060ff1681565b3480156106cf57600080fd5b506103c46106de366004613bdf565b6113d0565b3480156106ef57600080fd5b5061053f6106fe366004613bdf565b611404565b34801561070f57600080fd5b5061053f61071e3660046138f8565b6114a2565b34801561072f57600080fd5b506104a161073e3660046138f8565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561076857600080fd5b506014546104a190610100900460ff1681565b34801561078757600080fd5b5061053f610796366004613bb1565b6116a4565b3480156107a757600080fd5b506103c460155481565b3480156107bd57600080fd5b5061053f6107cc3660046138f8565b611717565b3480156107dd57600080fd5b506104a16107ec3660046138f8565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561081657600080fd5b506103c46118f5565b34801561082b57600080fd5b506103c461083a3660046138f8565b6001600160a01b031660009081526020819052604090205490565b34801561086157600080fd5b5061053f611910565b34801561087657600080fd5b50600d54610391906001600160a01b031681565b34801561089657600080fd5b5061053f611a35565b3480156108ab57600080fd5b5061053f6108ba366004613bb1565b611a8c565b3480156108cb57600080fd5b506016546001600160a01b0316610391565b3480156108e957600080fd5b506104a1611ca7565b3480156108fe57600080fd5b5061053f611d17565b34801561091357600080fd5b506040805180820190915260048152630910925560e21b6020820152610455565b34801561094057600080fd5b506104a161094f3660046138cc565b611f6d565b34801561096057600080fd5b5061053f61096f3660046138f8565b611f84565b34801561098057600080fd5b506010546104a19060ff1681565b34801561099a57600080fd5b5061053f6109a9366004613bf8565b61211e565b3480156109ba57600080fd5b506103c46109c9366004613915565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a0057600080fd5b5061053f610a0f3660046138f8565b6121c9565b348015610a2057600080fd5b5061053f610a2f3660046138f8565b6125ca565b348015610a4057600080fd5b5061053f61268a565b348015610a5557600080fd5b5061053f610a64366004613c16565b612763565b348015610a7557600080fd5b50600d546104a190600160a81b900460ff1681565b348015610a9657600080fd5b5061053f610aa5366004613bb1565b612a25565b6000610ab7338484612a98565b5060015b92915050565b6000610acf6012600a613d42565b601354610adc9190613d51565b905090565b6016546001600160a01b03163314610b2e5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff83398151915260448201526064015b60405180910390fd5b60095460ff16610b3d57600080fd5b6001600160a01b0382163014801590610b5f57506001600160a01b0381163014155b8015610b795750600c546001600160a01b03838116911614155b8015610b935750600c546001600160a01b03828116911614155b610bcd5760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610b25565b806001600160a01b0316826001600160a01b031603610c2f576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560089093529220805490911682179055610c2b9082906116a4565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526008909252808320805486168317905592825291902080549092168117909155610c999083906116a4565b610c2b8160016116a4565b6000610cb26012600a613d42565b610adc906305f5e100613d73565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d25576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d1f908490613d8a565b90915550505b610d30848484612b91565b949350505050565b6016546001600160a01b03163314610d805760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6064610d8e6012600a613d42565b610d9c906305f5e100613d73565b610da69190613d51565b8183610db46012600a613d42565b610dc2906305f5e100613d73565b610dcc9190613d73565b610dd69190613d51565b1015610e4a5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610b25565b8082610e586012600a613d42565b610e66906305f5e100613d73565b610e709190613d73565b610e7a9190613d51565b6013555050565b6016546001600160a01b03163314610ec95760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b8051825114610f1a5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610b25565b60005b82518161ffff16101561103157610f366012600a613d42565b828261ffff1681518110610f4c57610f4c613d9d565b6020026020010151610f5e9190613d73565b336000908152602081905260409020541015610fbc5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610b25565b61101e33848361ffff1681518110610fd657610fd6613d9d565b60200260200101516012600a610fec9190613d42565b858561ffff168151811061100257611002613d9d565b60200260200101516110149190613d73565b60008060016130b1565b508061102981613db3565b915050610f1d565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546110909190613dd4565b61109c6012600a613d42565b6110aa906305f5e100613d73565b610adc9190613d8a565b6016546001600160a01b031633146110fc5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b600b5460ff161561114f5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610b25565b6103e88361ffff161115801561116b57506103e88261ffff1611155b801561117d57506103e88161ffff1611155b6111c95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b25565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6016546001600160a01b031633146112505760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6016546001600160a01b031633146112c35760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6103e86112d26012600a613d42565b6112e0906305f5e100613d73565b6112eb906005613d73565b6112f59190613d51565b81836113036012600a613d42565b611311906305f5e100613d73565b61131b9190613d73565b6113259190613d51565b10156113995760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b25565b80826113a76012600a613d42565b6113b5906305f5e100613d73565b6113bf9190613d73565b6113c99190613d51565b6012555050565b600c546001600160a01b0316600090815260208190526040812054612710906113fa908490613d73565b610abb9190613d51565b6016546001600160a01b0316331461144c5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b609681111561149d5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610b25565b601155565b6016546001600160a01b031633146114ea5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6001600160a01b0381166115665760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b25565b61deac196001600160a01b038216016115e75760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610b25565b6016546115fe906001600160a01b031660006116a4565b6116098160016116a4565b6016546001600160a01b031660009081526020819052604090205415611652576016546001600160a01b031660008181526020819052604090205461165091908390611014565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146116ec5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b0316331461175f5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b60145460ff161561176f57600080fd5b306001600160a01b038216036117c75760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610b25565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af192505050801561184d575060408051601f3d908101601f1916820190925261184a91810190613de7565b60015b61185657600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560165492546118d39383169291900416600019612a98565b600b5461103190309061010090046001600160a01b0316600019612a98565b50565b60006119036012600a613d42565b601254610adc9190613d51565b6016546001600160a01b031633146119585760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b60145460ff166119d05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610b25565b6016546119e7906001600160a01b031660006116a4565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b03163314611a7d5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b600b805460ff19166001179055565b6016546001600160a01b03163314611ad45760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b80611b63576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015611b4757600080fd5b505af1158015611b5b573d6000803e3d6000fd5b505050505050565b60025415611bca576203f48060025442611b7d9190613d8a565b11611bca5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610b25565b6001600160a01b03821660009081526001602052604090205460ff1615611c335760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b25565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401600060405180830381600087803b158015611b4757600080fd5b6016546000906001600160a01b03163314611cf25760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b600b54611d1190309061010090046001600160a01b0316600019612a98565b50600190565b6016546001600160a01b03163314611d5f5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b60145460ff1615611db25760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b25565b601454610100900460ff16611e095760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b25565b6014546201000090046001600160a01b0316611e39576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611eab57600080fd5b505af1925050508015611ebc575060015b50601454600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611f3f575060408051601f3d908101601f19168201909252611f3c91810190613e16565b60015b15611f4e57600e91909155600f555b6014805460ff1990811660011790915560098054909116905542601555565b6000611f7a338484612b91565b5060019392505050565b6016546001600160a01b03163314611fcc5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b601454610100900460ff161561203457306001600160a01b038216036120345760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b25565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561208b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120af9190613e3a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110319190613e53565b6016546001600160a01b031633146121665760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b600d805460ff60a81b1916600160a81b841515908102919091179091556010805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146122115760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b601454610100900460ff16156122695760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b25565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d29190613e70565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561231f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123439190613e70565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561238e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b29190613e70565b600c546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661254857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561241d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124419190613e70565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561248e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b29190613e70565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156124ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125239190613e70565b600c80546001600160a01b0319166001600160a01b0392909216919091179055612564565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff191690911790559154611031923092910416600019612a98565b6016546001600160a01b031633146126125760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6001600160a01b0381166126685760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b25565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6016546001600160a01b031633146126d25760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b601454610100900460ff161561272a5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b25565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156118f2573d6000803e3d6000fd5b6016546001600160a01b031633146127ab5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b82846127b96012600a613d42565b6127c7906305f5e100613d73565b6127d19190613d73565b6127db9190613d51565b600e5580826127ec6012600a613d42565b6127fa906305f5e100613d73565b6128049190613d73565b61280e9190613d51565b600f819055600e54111561286e5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b25565b600c546001600160a01b031660009081526020819052604090205461271090612898906096613d73565b6128a29190613d51565b600f5411156128ff5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b25565b620f424061290f6012600a613d42565b61291d906305f5e100613d73565b6129279190613d51565b600f54101561298f5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b25565b620f424061299f6012600a613d42565b6129ad906305f5e100613d73565b6129b79190613d51565b600e541015612a1f5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610b25565b50505050565b6016546001600160a01b03163314612a6d5760405162461bcd60e51b81526020600482015260116024820152600080516020613eff8339815191526044820152606401610b25565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612ae45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b25565b6001600160a01b038216612b305760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b25565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612bf75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b25565b6001600160a01b038316612c595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b25565b60008211612cbb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b25565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612ce95760019250612d17565b6001600160a01b03861660009081526001602052604090205460ff1615612d135760019150612d17565b5060015b612d2187876132be565b15612fae5760145460ff16612e225780612d7d5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b25565b6001600160a01b03871660009081526005602052604090205460ff16158015612dbf57506001600160a01b03861660009081526005602052604090205460ff16155b15612e225760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b25565b8280612e2b5750815b15612eda576001600160a01b03871660009081526007602052604090205460ff16158015612e7257506001600160a01b03861660009081526007602052604090205460ff16155b15612eda57601254851115612eda5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b25565b600b546001600160a01b038781166101009092041614801590612efb575081155b15612fae576001600160a01b03861660009081526007602052604090205460ff16612fae5760135485612f43886001600160a01b031660009081526020819052604090205490565b612f4d9190613dd4565b1115612fae5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b25565b811561309857600d54600160a01b900460ff1661309857600d54600160a81b900460ff168015612ff757506001600160a01b03861660009081526008602052604090205460ff16155b801561301c57506001600160a01b03871660009081526008602052604090205460ff16155b156130985730600090815260208190526040902054600e54811061309657600f5460105460ff161561308057601154600c546001600160a01b03166000908152602081905260409020546127109161307391613d73565b61307d9190613d51565b90505b80821061308b578091505b613094826133d5565b505b505b6130a68787878686866130b1565b979650505050505050565b6001600160a01b03861660009081526006602052604081205460019060ff16806130f357506001600160a01b03871660009081526006602052604090205460ff165b156130fc575060005b6001600160a01b03881660009081526020819052604081208054889290613124908490613d8a565b9091555060009050816131375786613143565b61314389888888613619565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546131799190613dd4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131c591815260200190565b60405180910390a3601454610100900460ff166132af576131e68989613725565b601454610100900460ff16158015613203575061320389896132be565b801561322857506001600160a01b03891660009081526005602052604090205460ff16155b801561324d57506001600160a01b03881660009081526005602052604090205460ff16155b8015613257575083155b156132af5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b25565b50600198975050505050505050565b6016546000906001600160a01b038481169116148015906132ed57506016546001600160a01b03838116911614155b801561330457506016546001600160a01b03163214155b801561332957506001600160a01b03821660009081526004602052604090205460ff16155b801561334e57506001600160a01b03831660009081526004602052604090205460ff16155b801561336557506001600160a01b03821661dead14155b801561337957506001600160a01b03821615155b801561338e57506001600160a01b0383163014155b80156133ae57506014546001600160a01b03848116620100009092041614155b80156133ce57506014546001600160a01b03838116620100009092041614155b9392505050565b600d805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461344b57306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061348057613480613d9d565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135179190613e70565b8160018151811061352a5761352a613d9d565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac94790613577908590600090869030904290600401613e8d565b600060405180830381600087803b15801561359157600080fd5b505af19250505080156135a2575060015b6135ac5750613609565b600d546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d80600081146135fe576040519150601f19603f3d011682016040523d82523d6000602084013e613603565b606091505b50505050505b50600d805460ff60a01b19169055565b600080831561362f5750600a5461ffff16613659565b82156136485750600a5462010000900461ffff16613659565b50600a54640100000000900461ffff165b8060000361366a5784915050610d30565b6014546201000090046001600160a01b03163014801561368b575046606114155b1561369557506111945b60006127106136a48388613d73565b6136ae9190613d51565b9050801561371b5730600090815260208190526040812080548392906136d5908490613dd4565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6130a68187613d8a565b601454610100900460ff16156137895760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b25565b61379382826132be565b1580156137ad5750600c546001600160a01b038281169116145b15610c2b576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613825576014805462010000600160b01b0319163062010000021790555b600d805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016121bd565b600060208083528351808285015260005b818110156138965785810183015185820160400152820161387a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146118f257600080fd5b600080604083850312156138df57600080fd5b82356138ea816138b7565b946020939093013593505050565b60006020828403121561390a57600080fd5b81356133ce816138b7565b6000806040838503121561392857600080fd5b8235613933816138b7565b91506020830135613943816138b7565b809150509250929050565b60008060006060848603121561396357600080fd5b833561396e816138b7565b9250602084013561397e816138b7565b929592945050506040919091013590565b600080604083850312156139a257600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156139f0576139f06139b1565b604052919050565b600067ffffffffffffffff821115613a1257613a126139b1565b5060051b60200190565b600082601f830112613a2d57600080fd5b81356020613a42613a3d836139f8565b6139c7565b82815260059290921b84018101918181019086841115613a6157600080fd5b8286015b84811015613a7c5780358352918301918301613a65565b509695505050505050565b60008060408385031215613a9a57600080fd5b823567ffffffffffffffff80821115613ab257600080fd5b818501915085601f830112613ac657600080fd5b81356020613ad6613a3d836139f8565b82815260059290921b84018101918181019089841115613af557600080fd5b948201945b83861015613b1c578535613b0d816138b7565b82529482019490820190613afa565b96505086013592505080821115613b3257600080fd5b50613b3f85828601613a1c565b9150509250929050565b803561ffff81168114613b5b57600080fd5b919050565b600080600060608486031215613b7557600080fd5b613b7e84613b49565b9250613b8c60208501613b49565b9150613b9a60408501613b49565b90509250925092565b80151581146118f257600080fd5b60008060408385031215613bc457600080fd5b8235613bcf816138b7565b9150602083013561394381613ba3565b600060208284031215613bf157600080fd5b5035919050565b60008060408385031215613c0b57600080fd5b8235613bcf81613ba3565b60008060008060808587031215613c2c57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613c99578160001904821115613c7f57613c7f613c48565b80851615613c8c57918102915b93841c9390800290613c63565b509250929050565b600082613cb057506001610abb565b81613cbd57506000610abb565b8160018114613cd35760028114613cdd57613cf9565b6001915050610abb565b60ff841115613cee57613cee613c48565b50506001821b610abb565b5060208310610133831016604e8410600b8410161715613d1c575081810a610abb565b613d268383613c5e565b8060001904821115613d3a57613d3a613c48565b029392505050565b60006133ce60ff841683613ca1565b600082613d6e57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610abb57610abb613c48565b81810381811115610abb57610abb613c48565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613dca57613dca613c48565b6001019392505050565b80820180821115610abb57610abb613c48565b60008060408385031215613dfa57600080fd5b8251613e05816138b7565b6020840151909250613943816138b7565b60008060408385031215613e2957600080fd5b505080516020909101519092909150565b600060208284031215613e4c57600080fd5b5051919050565b600060208284031215613e6557600080fd5b81516133ce81613ba3565b600060208284031215613e8257600080fd5b81516133ce816138b7565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613edd5784516001600160a01b031683529383019391830191600101613eb8565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220590997082baa519939615a16826ccc3909f74ef1d25ff3bdc6759033d307cad764736f6c63430008130033

Deployed Bytecode Sourcemap

3889:20720:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5286:73;;;;;;;;;;;;5317:42;5286:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5286:73:0;;;;;;;;5535:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5535:28:0;245:177:1;4873:107:0;;;;;;;;;;-1:-1:-1;4873:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;633:6:1;666:15;;;648:34;;718:15;;;713:2;698:18;;691:43;770:15;;750:18;;;743:43;;;;611:2;596:18;4873:107:0;427:365:1;8937:80:0;;;;;;;;;;-1:-1:-1;9009:5:0;;;;;;;;;;;;-1:-1:-1;;;9009:5:0;;;;8937:80;;;;;;;:::i;5225:26::-;;;;;;;;;;-1:-1:-1;5225:26:0;;;;;;;-1:-1:-1;;;;;5225:26:0;;;5192;;;;;;;;;;-1:-1:-1;5192:26:0;;;;;;;;;;;1763:14:1;;1756:22;1738:41;;1726:2;1711:18;5192:26:0;1598:187:1;9545:161:0;;;;;;;;;;-1:-1:-1;9545:161:0;;;;;:::i;:::-;;:::i;12919:140::-;;;;;;;;;;-1:-1:-1;12919:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13017:34:0;12993:4;13017:34;;;:25;:34;;;;;;;;;12919:140;14891:114;;;;;;;;;;;;;:::i;16415:809::-;;;;;;;;;;-1:-1:-1;16415:809:0;;;;;:::i;:::-;;:::i;:::-;;8672:83;;;;;;;;;;;;;:::i;10215:306::-;;;;;;;;;;-1:-1:-1;10215:306:0;;;;;:::i;:::-;;:::i;14503:264::-;;;;;;;;;;-1:-1:-1;14503:264:0;;;;;:::i;:::-;;:::i;22559:447::-;;;;;;;;;;-1:-1:-1;22559:447:0;;;;;:::i;:::-;;:::i;5643:33::-;;;;;;;;;;;;;;;;13223:141;;;;;;;;;;;;;:::i;4989:42::-;;;;;;;;;;;;5027:4;4989:42;;5570:25;;;;;;;;;;;;;;;;8761:80;;;;;;;;;;-1:-1:-1;8761:80:0;;4684:2;6257:36:1;;6245:2;6230:18;8761:80:0;6115:184:1;13562:453:0;;;;;;;;;;-1:-1:-1;13562:453:0;;;;;:::i;:::-;;:::i;12494:140::-;;;;;;;;;;-1:-1:-1;12494:140:0;;;;;:::i;:::-;;:::i;14222:273::-;;;;;;;;;;-1:-1:-1;14222:273:0;;;;;:::i;:::-;;:::i;5258:21::-;;;;;;;;;;-1:-1:-1;5258:21:0;;;;-1:-1:-1;;;;;5258:21:0;;;5807:34;;;;;;;;;;-1:-1:-1;5807:34:0;;;;;;;;15015:189;;;;;;;;;;-1:-1:-1;15015:189:0;;;;;:::i;:::-;;:::i;15919:217::-;;;;;;;;;;-1:-1:-1;15919:217:0;;;;;:::i;:::-;;:::i;7304:654::-;;;;;;;;;;-1:-1:-1;7304:654:0;;;;;:::i;:::-;;:::i;12642:127::-;;;;;;;;;;-1:-1:-1;12642:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;12733:28:0;12709:4;12733:28;;;:19;:28;;;;;;;;;12642:127;5848:36;;;;;;;;;;-1:-1:-1;5848:36:0;;;;;;;;;;;12777:134;;;;;;;;;;-1:-1:-1;12777:134:0;;;;;:::i;:::-;;:::i;5921:26::-;;;;;;;;;;;;;;;;11789:557;;;;;;;;;;-1:-1:-1;11789:557:0;;;;;:::i;:::-;;:::i;12354:132::-;;;;;;;;;;-1:-1:-1;12354:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;12448:30:0;12424:4;12448:30;;;:21;:30;;;;;;;;;12354:132;14775:108;;;;;;;;;;;;;:::i;9247:117::-;;;;;;;;;;-1:-1:-1;9247:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;9340:16:0;9313:7;9340:16;;;;;;;;;;;;9247:117;7966:310;;;;;;;;;;;;;:::i;5366:92::-;;;;;;;;;;-1:-1:-1;5366:92:0;;;;-1:-1:-1;;;;;5366:92:0;;;13372:182;;;;;;;;;;;;;:::i;11217:564::-;;;;;;;;;;-1:-1:-1;11217:564:0;;;;;:::i;:::-;;:::i;9023:79::-;;;;;;;;;;-1:-1:-1;9093:6:0;;-1:-1:-1;;;;;9093:6:0;9023:79;;10032:175;;;;;;;;;;;;;:::i;21320:737::-;;;;;;;;;;;;;:::i;8847:84::-;;;;;;;;;;-1:-1:-1;8921:7:0;;;;;;;;;;;;-1:-1:-1;;;8921:7:0;;;;8847:84;;9372:165;;;;;;;;;;-1:-1:-1;9372:165:0;;;;;:::i;:::-;;:::i;22255:296::-;;;;;;;;;;-1:-1:-1;22255:296:0;;;;;:::i;:::-;;:::i;5602:34::-;;;;;;;;;;-1:-1:-1;5602:34:0;;;;;;;;16144:263;;;;;;;;;;-1:-1:-1;16144:263:0;;;;;:::i;:::-;;:::i;9108:133::-;;;;;;;;;;-1:-1:-1;9108:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9210:19:0;;;9192:7;9210:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9108:133;10529:680;;;;;;;;;;-1:-1:-1;10529:680:0;;;;;:::i;:::-;;:::i;14023:191::-;;;;;;;;;;-1:-1:-1;14023:191:0;;;;;:::i;:::-;;:::i;22065:182::-;;;;;;;;;;;;;:::i;15212:699::-;;;;;;;;;;-1:-1:-1;15212:699:0;;;;;:::i;:::-;;:::i;5489:39::-;;;;;;;;;;-1:-1:-1;5489:39:0;;;;-1:-1:-1;;;5489:39:0;;;;;;13067:148;;;;;;;;;;-1:-1:-1;13067:148:0;;;;;:::i;:::-;;:::i;9545:161::-;9622:4;9639:37;9648:10;9660:7;9669:6;9639:8;:37::i;:::-;-1:-1:-1;9694:4:0;9545:161;;;;;:::o;14891:114::-;14938:7;14983:13;4684:2;14983;:13;:::i;:::-;14965:14;;:32;;;;:::i;:::-;14958:39;;14891:114;:::o;16415:809::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;;;;;;;;;16519:23:::1;::::0;::::1;;16511:32;;;::::0;::::1;;-1:-1:-1::0;;;;;16562:23:0;::::1;16580:4;16562:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;16607:24:0;::::1;16626:4;16607:24;;16562:69;:107;;;;-1:-1:-1::0;16653:6:0::1;::::0;-1:-1:-1;;;;;16653:16:0;;::::1;:6:::0;::::1;:16;;16562:107;:146;;;;-1:-1:-1::0;16691:6:0::1;::::0;-1:-1:-1;;;;;16691:17:0;;::::1;:6:::0;::::1;:17;;16562:146;16554:170;;;::::0;-1:-1:-1;;;16554:170:0;;11059:2:1;16554:170:0::1;::::0;::::1;11041:21:1::0;11098:2;11078:18;;;11071:30;-1:-1:-1;;;11117:18:1;;;11110:41;11168:18;;16554:170:0::1;10857:335:1::0;16554:170:0::1;16749:7;-1:-1:-1::0;;;;;16739:17:0::1;:6;-1:-1:-1::0;;;;;16739:17:0::1;::::0;16735:482:::1;;-1:-1:-1::0;;;;;16773:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;16802:4:::1;-1:-1:-1::0;;16773:33:0;;::::1;::::0;::::1;::::0;;;16821:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;16868:34:::1;::::0;16773:26;;16868:19:::1;:34::i;:::-;16415:809:::0;;:::o;16735:482::-:1;-1:-1:-1::0;;;;;16935:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;16963:4:::1;-1:-1:-1::0;;16935:32:0;;::::1;::::0;::::1;::::0;;;16982:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;17030:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;17076:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;17123:33:::1;::::0;16935:25;;17123:19:::1;:33::i;:::-;17171:34;17191:7;17200:4;17171:19;:34::i;8672:83::-:0;8727:7;4745:13;4684:2;4745;:13;:::i;:::-;4728:30;;4535:11;4728:30;:::i;10215:306::-;-1:-1:-1;;;;;10336:19:0;;10315:4;10336:19;;;:11;:19;;;;;;;;10356:10;10336:31;;;;;;;;-1:-1:-1;;10336:52:0;10332:126;;-1:-1:-1;;;;;10405:19:0;;;;;;:11;:19;;;;;;;;10425:10;10405:31;;;;;;;:41;;10440:6;;10405:19;:41;;10440:6;;10405:41;:::i;:::-;;;;-1:-1:-1;;10332:126:0;10477:36;10487:6;10495:9;10506:6;10477:9;:36::i;:::-;10470:43;10215:306;-1:-1:-1;;;;10215:306:0:o;14503:264::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;14645:3:::1;4745:13;4684:2;4745;:13;:::i;:::-;4728:30;::::0;4535:11:::1;4728:30;:::i;:::-;14635:13;;;;:::i;:::-;14623:7:::0;14612;4745:13:::1;4684:2;4745;:13;:::i;:::-;4728:30;::::0;4535:11:::1;4728:30;:::i;:::-;14602:17;;;;:::i;:::-;14601:29;;;;:::i;:::-;:48;;14593:109;;;::::0;-1:-1:-1;;;14593:109:0;;11705:2:1;14593:109:0::1;::::0;::::1;11687:21:1::0;11744:2;11724:18;;;11717:30;11783:34;11763:18;;;11756:62;11854:18;11834;;;11827:46;11890:19;;14593:109:0::1;11503:412:1::0;14593:109:0::1;14752:7:::0;14741;4745:13:::1;4684:2;4745;:13;:::i;:::-;4728:30;::::0;4535:11:::1;4728:30;:::i;:::-;14731:17;;;;:::i;:::-;14730:29;;;;:::i;:::-;14713:14;:46:::0;-1:-1:-1;;14503:264:0:o;22559:447::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;22694:7:::1;:14;22675:8;:15;:33;22667:67;;;::::0;-1:-1:-1;;;22667:67:0;;12122:2:1;22667:67:0::1;::::0;::::1;12104:21:1::0;12161:2;12141:18;;;12134:30;12200:23;12180:18;;;12173:51;12241:18;;22667:67:0::1;11920:345:1::0;22667:67:0::1;22750:8;22745:254;22768:8;:15;22764:1;:19;;;22745:254;;;22849:13;4684:2;22849;:13;:::i;:::-;22838:7;22846:1;22838:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;22823:10;9313:7:::0;9340:16;;;;;;;;;;;22813:49:::1;;22805:80;;;::::0;-1:-1:-1;;;22805:80:0;;12604:2:1;22805:80:0::1;::::0;::::1;12586:21:1::0;12643:2;12623:18;;;12616:30;12682:20;12662:18;;;12655:48;12720:18;;22805:80:0::1;12402:342:1::0;22805:80:0::1;22900:87;22917:10;22929:8;22938:1;22929:11;;;;;;;;;;:::i;:::-;;;;;;;4684:2;22953;:13;;;;:::i;:::-;22942:7;22950:1;22942:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;22968:5;22975::::0;22982:4:::1;22900:16;:87::i;:::-;-1:-1:-1::0;22785:3:0;::::1;::::0;::::1;:::i;:::-;;;;22745:254;;;;22559:447:::0;;:::o;13223:141::-;13276:7;9340:16;;;;;;5317:42;9340:16;;;;13315:39;;9340:16;13315:39;:::i;:::-;4745:13;4684:2;4745;:13;:::i;:::-;4728:30;;4535:11;4728:30;:::i;:::-;13304:51;;;;:::i;13562:453::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;13670:14:::1;::::0;::::1;;13669:15;13661:45;;;::::0;-1:-1:-1;;;13661:45:0;;13283:2:1;13661:45:0::1;::::0;::::1;13265:21:1::0;13322:2;13302:18;;;13295:30;13361:19;13341:18;;;13334:47;13398:18;;13661:45:0::1;13081:341:1::0;13661:45:0::1;5027:4;13725:6;:21;;;;:65;;;;;5077:4;13767:7;:23;;;;13725:65;:117;;;;;5131:4;13811:11;:31;;;;13725:117;13717:170;;;::::0;-1:-1:-1;;;13717:170:0;;13629:2:1;13717:170:0::1;::::0;::::1;13611:21:1::0;13668:2;13648:18;;;13641:30;13707:25;13687:18;;;13680:53;13750:18;;13717:170:0::1;13427:347:1::0;13717:170:0::1;13898:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;13934:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;13972:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;13562:453::o;12494:140::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;-1:-1:-1;;;;;12586:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;12586:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12494:140::o;14222:273::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;14367:4:::1;4745:13;4684:2;4745;:13;:::i;:::-;4728:30;::::0;4535:11:::1;4728:30;:::i;:::-;14353:11;::::0;14363:1:::1;14353:11;:::i;:::-;:18;;;;:::i;:::-;14341:7:::0;14330;4745:13:::1;4684:2;4745;:13;:::i;:::-;4728:30;::::0;4535:11:::1;4728:30;:::i;:::-;14320:17;;;;:::i;:::-;14319:29;;;;:::i;:::-;:53;;14311:121;;;::::0;-1:-1:-1;;;14311:121:0;;13981:2:1;14311:121:0::1;::::0;::::1;13963:21:1::0;14020:2;14000:18;;;13993:30;14059:34;14039:18;;;14032:62;14130:25;14110:18;;;14103:53;14173:19;;14311:121:0::1;13779:419:1::0;14311:121:0::1;14480:7:::0;14469;4745:13:::1;4684:2;4745;:13;:::i;:::-;4728:30;::::0;4535:11:::1;4728:30;:::i;:::-;14459:17;;;;:::i;:::-;14458:29;;;;:::i;:::-;14443:12;:44:::0;-1:-1:-1;;14222:273:0:o;15015:189::-;15144:6;;-1:-1:-1;;;;;15144:6:0;15106:7;9340:16;;;;;;;;;;;5178:5;;15134:41;;15154:21;;15134:41;:::i;:::-;15133:62;;;;:::i;15919:217::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;16049:3:::1;16023:22;:29;;16015:64;;;::::0;-1:-1:-1;;;16015:64:0;;14405:2:1;16015:64:0::1;::::0;::::1;14387:21:1::0;14444:2;14424:18;;;14417:30;14483:24;14463:18;;;14456:52;14525:18;;16015:64:0::1;14203:346:1::0;16015:64:0::1;16090:13;:38:::0;15919:217::o;7304:654::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;-1:-1:-1;;;;;7383:22:0;::::1;7375:96;;;::::0;-1:-1:-1;;;7375:96:0;;14756:2:1;7375:96:0::1;::::0;::::1;14738:21:1::0;14795:2;14775:18;;;14768:30;14834:34;14814:18;;;14807:62;14905:31;14885:18;;;14878:59;14954:19;;7375:96:0::1;14554:425:1::0;7375:96:0::1;-1:-1:-1::0;;;;;;;7490:16:0;::::1;::::0;7482:90:::1;;;::::0;-1:-1:-1;;;7482:90:0;;14756:2:1;7482:90:0::1;::::0;::::1;14738:21:1::0;14795:2;14775:18;;;14768:30;14834:34;14814:18;;;14807:62;14905:31;14885:18;;;14878:59;14954:19;;7482:90:0::1;14554:425:1::0;7482:90:0::1;7603:6;::::0;7583:34:::1;::::0;-1:-1:-1;;;;;7603:6:0::1;;7583:19;:34::i;:::-;7628:35;7648:8;7658:4;7628:19;:35::i;:::-;7698:6;::::0;-1:-1:-1;;;;;7698:6:0::1;7708:1;9340:16:::0;;;;;;;;;;;7688:21;7684:127:::1;;7743:6;::::0;-1:-1:-1;;;;;7743:6:0::1;9313:7:::0;9340:16;;;;;;;;;;;7726:73:::1;::::0;7743:6;7751:8;;7761:17:::1;9247:117:::0;7726:73:::1;;7684:127;7850:6;::::0;;-1:-1:-1;;;;;7867:17:0;;::::1;-1:-1:-1::0;;;;;;7867:17:0;::::1;::::0;::::1;::::0;;;7900:40:::1;::::0;7850:6;::::1;::::0;7867:17;7850:6;;7900:40:::1;::::0;7831:16:::1;::::0;7900:40:::1;7364:594;7304:654:::0;:::o;12777:134::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;-1:-1:-1;;;;;12865:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;12865:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12777:134::o;11789:557::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;11864:14:::1;::::0;::::1;;11863:15;11855:24;;;::::0;::::1;;11914:4;-1:-1:-1::0;;;;;11898:21:0;::::1;::::0;11890:48:::1;;;::::0;-1:-1:-1;;;11890:48:0;;15186:2:1;11890:48:0::1;::::0;::::1;15168:21:1::0;15225:2;15205:18;;;15198:30;15264:16;15244:18;;;15237:44;15298:18;;11890:48:0::1;14984:338:1::0;11890:48:0::1;11949:11;:31:::0;;-1:-1:-1;;;;;;11949:31:0::1;::::0;-1:-1:-1;;;;;11949:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;11995:23:::1;::::0;;-1:-1:-1;;;11995:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;11995:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;11995:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;11995:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;11991:348;;12328:8;::::0;::::1;11991:348;12082:9;:29:::0;;-1:-1:-1;;12082:29:0::1;;-1:-1:-1::0;;;;;12082:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12113:6:::1;:22:::0;;-1:-1:-1;;;;;;12113:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12137:15:0;;;-1:-1:-1;12137:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12137:22:0::1;::::0;;::::1;::::0;;12184:6:::1;::::0;12200:9;;12175:55:::1;::::0;12184:6;::::1;::::0;12200:9;;::::1;;-1:-1:-1::0;;12175:8:0::1;:55::i;:::-;12277:9;::::0;12245:62:::1;::::0;12262:4:::1;::::0;12277:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12277:9:0::1;-1:-1:-1::0;;12245:8:0::1;:62::i;11991:348::-;11789:557:::0;:::o;14775:108::-;14818:7;14861:13;4684:2;14861;:13;:::i;:::-;14845:12;;:30;;;;:::i;7966:310::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;8033:14:::1;::::0;::::1;;8025:74;;;::::0;-1:-1:-1;;;8025:74:0;;15919:2:1;8025:74:0::1;::::0;::::1;15901:21:1::0;15958:2;15938:18;;;15931:30;15997:34;15977:18;;;15970:62;16068:17;16048:18;;;16041:45;16103:19;;8025:74:0::1;15717:411:1::0;8025:74:0::1;8130:6;::::0;8110:34:::1;::::0;-1:-1:-1;;;;;8130:6:0::1;;8110:19;:34::i;:::-;8174:6;::::0;;-1:-1:-1;;;;;;8191:19:0;::::1;::::0;;;8226:42:::1;::::0;-1:-1:-1;;;;;8174:6:0;;::::1;::::0;8155:16:::1;::::0;8174:6;;8226:42:::1;::::0;8155:16;;8226:42:::1;8014:262;7966:310::o:0;13372:182::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;13525:14:::1;:21:::0;;-1:-1:-1;;13525:21:0::1;13542:4;13525:21;::::0;;13372:182::o;11217:564::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;11299:7:::1;11294:480;;-1:-1:-1::0;;;;;11323:13:0;;::::1;11339:5;11323:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;11323:21:0::1;::::0;;11359:11:::1;::::0;:34;;-1:-1:-1;;;11359:34:0;;::::1;::::0;::::1;16301:74:1::0;;;;16391:18;;;16384:50;;;;11359:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16274:18:1;;11359:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16415:809:::0;;:::o;11294:480::-:1;11430:17;::::0;:22;11426:135:::1;;11519:6;11499:17;;11481:15;:35;;;;:::i;:::-;:44;11473:72;;;::::0;-1:-1:-1;;;11473:72:0;;16647:2:1;11473:72:0::1;::::0;::::1;16629:21:1::0;16686:2;16666:18;;;16659:30;16725:17;16705:18;;;16698:45;16760:18;;11473:72:0::1;16445:339:1::0;11473:72:0::1;-1:-1:-1::0;;;;;11584:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;11583:14;11575:54;;;::::0;-1:-1:-1;;;11575:54:0;;16991:2:1;11575:54:0::1;::::0;::::1;16973:21:1::0;17030:2;17010:18;;;17003:30;17069:29;17049:18;;;17042:57;17116:18;;11575:54:0::1;16789:351:1::0;11575:54:0::1;-1:-1:-1::0;;;;;11644:13:0;;::::1;;::::0;;;11660:4:::1;11644:13;::::0;;;;;;;;:20;;-1:-1:-1;;11644:20:0::1;::::0;::::1;::::0;;11699:15:::1;11679:17;:35:::0;11729:11:::1;::::0;:33;;-1:-1:-1;;;11729:33:0;;::::1;::::0;::::1;16301:74:1::0;;;;16391:18;;;16384:50;11729:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16274:18:1;;11729:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;10032:175:::0;7158:6;;10098:4;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;10147:9:::1;::::0;10115:62:::1;::::0;10132:4:::1;::::0;10147:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10147:9:0::1;-1:-1:-1::0;;10115:8:0::1;:62::i;:::-;-1:-1:-1::0;10195:4:0::1;10032:175:::0;:::o;21320:737::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;21382:14:::1;::::0;::::1;;21381:15;21373:52;;;::::0;-1:-1:-1;;;21373:52:0;;17347:2:1;21373:52:0::1;::::0;::::1;17329:21:1::0;17386:2;17366:18;;;17359:30;17425:26;17405:18;;;17398:54;17469:18;;21373:52:0::1;17145:348:1::0;21373:52:0::1;21444:16;::::0;::::1;::::0;::::1;;;21436:53;;;::::0;-1:-1:-1;;;21436:53:0;;17700:2:1;21436:53:0::1;::::0;::::1;17682:21:1::0;17739:2;17719:18;;;17712:30;17778:26;17758:18;;;17751:54;17822:18;;21436:53:0::1;17498:348:1::0;21436:53:0::1;21512:11;::::0;;;::::1;-1:-1:-1::0;;;;;21512:11:0::1;21500:106;;21554:11;:40:::0;;-1:-1:-1;;;;;;21554:40:0::1;21588:4;21554:40:::0;::::1;;::::0;;21500:106:::1;21620:11;::::0;21642:6:::1;::::0;21620:87:::1;::::0;-1:-1:-1;;;21620:87:0;;-1:-1:-1;;;;;21642:6:0;;::::1;21620:87;::::0;::::1;18074:74:1::0;18196:10;21657:12:0::1;18184:23:1::0;18164:18;;;18157:51;18256:18;21679:15:0::1;18244:31:1::0;18224:18;;;18217:59;4684:2:0::1;18292:18:1::0;;;18285:45;21620:11:0;;;::::1;;::::0;:21:::1;::::0;18046:19:1;;21620:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;21733:11:0::1;::::0;21764:6:::1;::::0;-1:-1:-1;;;;;21764:6:0;;::::1;9313:7:::0;9340:16;;;;;;;;;;;;;21733:39;;-1:-1:-1;;;21733:39:0;;::::1;::::0;::::1;391:25:1::0;;;;21733:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;21733:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;21733:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;21733:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;21729:207:::0;::::1;;21844:13;:29:::0;;;;21888:10:::1;:27:::0;21729:207:::1;21946:14;:21:::0;;-1:-1:-1;;21946:21:0;;::::1;21963:4;21946:21;::::0;;;21978:23:::1;:31:::0;;;;::::1;::::0;;22034:15:::1;22020:11;:29:::0;21320:737::o;9372:165::-;9450:4;9467:40;9477:10;9489:9;9500:6;9467:9;:40::i;:::-;-1:-1:-1;9525:4:0;;9372:165;-1:-1:-1;;;9372:165:0:o;22255:296::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;22333:16:::1;::::0;::::1;::::0;::::1;;;22329:111;;;22391:4;-1:-1:-1::0;;;;;22374:22:0;::::1;::::0;22366:62:::1;;;::::0;-1:-1:-1;;;22366:62:0;;18793:2:1;22366:62:0::1;::::0;::::1;18775:21:1::0;18832:2;18812:18;;;18805:30;18871:29;18851:18;;;18844:57;18918:18;;22366:62:0::1;18591:351:1::0;22366:62:0::1;22504:6;::::0;22512:30:::1;::::0;-1:-1:-1;;;22512:30:0;;22536:4:::1;22512:30;::::0;::::1;160:74:1::0;22472:5:0;;-1:-1:-1;;;;;22489:14:0;;::::1;::::0;::::1;::::0;22504:6;;;::::1;::::0;22489:14;;22512:15:::1;::::0;133:18:1;;22512:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22489:54;::::0;-1:-1:-1;;;;;;22489:54:0::1;::::0;;;;;;-1:-1:-1;;;;;19328:55:1;;;22489:54:0::1;::::0;::::1;19310:74:1::0;19400:18;;;19393:34;19283:18;;22489:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16144:263::-:0;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;16253:19:::1;:33:::0;;-1:-1:-1;;;;16253:33:0::1;-1:-1:-1::0;;;16253:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;16297:22:::1;:47:::0;;-1:-1:-1;;16297:47:0::1;::::0;::::1;;;::::0;;16360:39:::1;::::0;1738:41:1;;;16360:39:0::1;::::0;1726:2:1;1711:18;16360:39:0::1;;;;;;;;16144:263:::0;;:::o;10529:680::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;10609:16:::1;::::0;::::1;::::0;::::1;;;10608:17;10600:60;;;::::0;-1:-1:-1;;;10600:60:0;;19890:2:1;10600:60:0::1;::::0;::::1;19872:21:1::0;19929:2;19909:18;;;19902:30;19968:32;19948:18;;;19941:60;20018:18;;10600:60:0::1;19688:354:1::0;10600:60:0::1;10671:20;10704:9;10671:43;;10725:16;10755:10;-1:-1:-1::0;;;;;10755:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10744:40:0::1;;10793:4;10800:10;-1:-1:-1::0;;;;;10800:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10744:74;::::0;-1:-1:-1;;;;;;10744:74:0::1;::::0;;;;;;-1:-1:-1;;;;;20556:15:1;;;10744:74:0::1;::::0;::::1;20538:34:1::0;20608:15;;20588:18;;;20581:43;20450:18;;10744:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10837:6;::::0;-1:-1:-1;;;;;10837:6:0;;::::1;10847:5;10829:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;10829:23:0::1;::::0;;10725:93;;-1:-1:-1;10867:22:0;::::1;10863:200;;10926:10;-1:-1:-1::0;;;;;10926:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10915:43:0::1;;10967:4;10974:10;-1:-1:-1::0;;;;;10974:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10915:77;::::0;-1:-1:-1;;;;;;10915:77:0::1;::::0;;;;;;-1:-1:-1;;;;;20556:15:1;;;10915:77:0::1;::::0;::::1;20538:34:1::0;20608:15;;20588:18;;;20581:43;20450:18;;10915:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10906:6;:86:::0;;-1:-1:-1;;;;;;10906:86:0::1;-1:-1:-1::0;;;;;10906:86:0;;;::::1;::::0;;;::::1;::::0;;10863:200:::1;;;11034:6;:17:::0;;-1:-1:-1;;;;;;11034:17:0::1;-1:-1:-1::0;;;;;11034:17:0;::::1;;::::0;;10863:200:::1;11073:9;:22:::0;;-1:-1:-1;;11073:22:0::1;;-1:-1:-1::0;;;;;11073:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11114:6:::1;::::0;;::::1;-1:-1:-1::0;11106:15:0;;;-1:-1:-1;11106:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;11106:22:0::1;::::0;;::::1;::::0;;11171:9;;11139:62:::1;::::0;11156:4:::1;::::0;11171:9;::::1;;-1:-1:-1::0;;11139:8:0::1;:62::i;14023:191::-:0;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;-1:-1:-1;;;;;14108:23:0;::::1;14100:59;;;::::0;-1:-1:-1;;;14100:59:0;;20837:2:1;14100:59:0::1;::::0;::::1;20819:21:1::0;20876:2;20856:18;;;20849:30;20915:25;20895:18;;;20888:53;20958:18;;14100:59:0::1;20635:347:1::0;14100:59:0::1;14170:15;:36:::0;;-1:-1:-1;;;;;;14170:36:0::1;-1:-1:-1::0;;;;;14170:36:0;;;::::1;::::0;;;::::1;::::0;;14023:191::o;22065:182::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;22132:16:::1;::::0;::::1;::::0;::::1;;;22131:17;22123:58;;;::::0;-1:-1:-1;;;22123:58:0;;21189:2:1;22123:58:0::1;::::0;::::1;21171:21:1::0;21228:2;21208:18;;;21201:30;21267;21247:18;;;21240:58;21315:18;;22123:58:0::1;20987:352:1::0;22123:58:0::1;22200:6;::::0;22192:47:::1;::::0;-1:-1:-1;;;;;22200:6:0;;::::1;::::0;22217:21:::1;22192:47:::0;::::1;;;::::0;22200:6:::1;22192:47:::0;22200:6;22192:47;22217:21;22200:6;22192:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;15212:699:::0;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;15412:16;15392;4745:13:::1;4684:2;4745;:13;:::i;:::-;4728:30;::::0;4535:11:::1;4728:30;:::i;:::-;15382:26;;;;:::i;:::-;15381:47;;;;:::i;:::-;15365:13;:63:::0;15480:13;15463;4745::::1;4684:2;4745;:13;:::i;:::-;4728:30;::::0;4535:11:::1;4728:30;:::i;:::-;15453:23;;;;:::i;:::-;15452:41;;;;:::i;:::-;15439:10;:54:::0;;;15512:13:::1;::::0;:27:::1;;15504:73;;;::::0;-1:-1:-1;;;15504:73:0;;21546:2:1;15504:73:0::1;::::0;::::1;21528:21:1::0;21585:2;21565:18;;;21558:30;21624:34;21604:18;;;21597:62;-1:-1:-1;;;21675:18:1;;;21668:31;21716:19;;15504:73:0::1;21344:397:1::0;15504:73:0::1;15621:6;::::0;-1:-1:-1;;;;;15621:6:0::1;9313:7:::0;9340:16;;;;;;;;;;;5178:5:::1;::::0;15611:23:::1;::::0;15631:3:::1;15611:23;:::i;:::-;15610:44;;;;:::i;:::-;15596:10;;:58;;15588:106;;;::::0;-1:-1:-1;;;15588:106:0;;21948:2:1;15588:106:0::1;::::0;::::1;21930:21:1::0;21987:2;21967:18;;;21960:30;22026:34;22006:18;;;21999:62;-1:-1:-1;;;22077:18:1;;;22070:33;22120:19;;15588:106:0::1;21746:399:1::0;15588:106:0::1;15737:9;4745:13;4684:2;4745;:13;:::i;:::-;4728:30;::::0;4535:11:::1;4728:30;:::i;:::-;15727:19;;;;:::i;:::-;15713:10;;:33;;15705:92;;;::::0;-1:-1:-1;;;15705:92:0;;22352:2:1;15705:92:0::1;::::0;::::1;22334:21:1::0;22391:2;22371:18;;;22364:30;22430:34;22410:18;;;22403:62;-1:-1:-1;;;22481:18:1;;;22474:44;22535:19;;15705:92:0::1;22150:410:1::0;15705:92:0::1;15843:9;4745:13;4684:2;4745;:13;:::i;:::-;4728:30;::::0;4535:11:::1;4728:30;:::i;:::-;15833:19;;;;:::i;:::-;15816:13;;:36;;15808:95;;;::::0;-1:-1:-1;;;15808:95:0;;22352:2:1;15808:95:0::1;::::0;::::1;22334:21:1::0;22391:2;22371:18;;;22364:30;22430:34;22410:18;;;22403:62;-1:-1:-1;;;22481:18:1;;;22474:44;22535:19;;15808:95:0::1;22150:410:1::0;15808:95:0::1;15212:699:::0;;;;:::o;13067:148::-;7158:6;;-1:-1:-1;;;;;7158:6:0;7168:10;7158:20;7150:50;;;;-1:-1:-1;;;7150:50:0;;10713:2:1;7150:50:0;;;10695:21:1;10752:2;10732:18;;;10725:30;-1:-1:-1;;;;;;;;;;;10771:18:1;;;10764:47;10828:18;;7150:50:0;10511:341:1;7150:50:0;-1:-1:-1;;;;;13163:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13163:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13067:148::o;9714:310::-;-1:-1:-1;;;;;9809:20:0;;9801:52;;;;-1:-1:-1;;;9801:52:0;;22767:2:1;9801:52:0;;;22749:21:1;22806:2;22786:18;;;22779:30;-1:-1:-1;;;22825:18:1;;;22818:49;22884:18;;9801:52:0;22565:343:1;9801:52:0;-1:-1:-1;;;;;9872:21:0;;9864:53;;;;-1:-1:-1;;;9864:53:0;;22767:2:1;9864:53:0;;;22749:21:1;22806:2;22786:18;;;22779:30;-1:-1:-1;;;22825:18:1;;;22818:49;22884:18;;9864:53:0;22565:343:1;9864:53:0;-1:-1:-1;;;;;9930:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;9983:33;;391:25:1;;;9983:33:0;;364:18:1;9983:33:0;;;;;;;9714:310;;;:::o;17686:2286::-;17765:4;-1:-1:-1;;;;;17790:18:0;;17782:68;;;;-1:-1:-1;;;17782:68:0;;23115:2:1;17782:68:0;;;23097:21:1;23154:2;23134:18;;;23127:30;23193:34;23173:18;;;23166:62;-1:-1:-1;;;23244:18:1;;;23237:35;23289:19;;17782:68:0;22913:401:1;17782:68:0;-1:-1:-1;;;;;17869:16:0;;17861:64;;;;-1:-1:-1;;;17861:64:0;;23521:2:1;17861:64:0;;;23503:21:1;23560:2;23540:18;;;23533:30;23599:34;23579:18;;;23572:62;-1:-1:-1;;;23650:18:1;;;23643:33;23693:19;;17861:64:0;23319:399:1;17861:64:0;17953:1;17944:6;:10;17936:64;;;;-1:-1:-1;;;17936:64:0;;23925:2:1;17936:64:0;;;23907:21:1;23964:2;23944:18;;;23937:30;24003:34;23983:18;;;23976:62;-1:-1:-1;;;24054:18:1;;;24047:39;24103:19;;17936:64:0;23723:405:1;17936:64:0;-1:-1:-1;;;;;18099:13:0;;18011:8;18099:13;;;:7;:13;;;;;;18011:8;;;;18099:13;;18095:162;;;18135:4;18129:10;;18095:162;;;-1:-1:-1;;;;;18161:11:0;;;;;;:7;:11;;;;;;;;18157:100;;;18196:4;18189:11;;18157:100;;;-1:-1:-1;18241:4:0;18157:100;18271:20;18282:4;18288:2;18271:10;:20::i;:::-;18267:874;;;18312:14;;;;18308:319;;18352:5;18347:265;;18382:34;;-1:-1:-1;;;18382:34:0;;24335:2:1;18382:34:0;;;24317:21:1;24374:2;24354:18;;;24347:30;24413:26;24393:18;;;24386:54;24457:18;;18382:34:0;24133:348:1;18347:265:0;-1:-1:-1;;;;;18447:31:0;;;;;;:25;:31;;;;;;;;18446:32;:66;;;;-1:-1:-1;;;;;;18483:29:0;;;;;;:25;:29;;;;;;;;18482:30;18446:66;18442:170;;;18537:55;;-1:-1:-1;;;18537:55:0;;24688:2:1;18537:55:0;;;24670:21:1;24727:2;24707:18;;;24700:30;24766:34;24746:18;;;24739:62;-1:-1:-1;;;24817:18:1;;;24810:43;24870:19;;18537:55:0;24486:409:1;18442:170:0;18645:3;:11;;;;18652:4;18645:11;18641:232;;;-1:-1:-1;;;;;18681:27:0;;;;;;:21;:27;;;;;;;;18680:28;:58;;;;-1:-1:-1;;;;;;18713:25:0;;;;;;:21;:25;;;;;;;;18712:26;18680:58;18676:182;;;18781:12;;18771:6;:22;;18763:75;;;;-1:-1:-1;;;18763:75:0;;25102:2:1;18763:75:0;;;25084:21:1;25141:2;25121:18;;;25114:30;25180:34;25160:18;;;25153:62;-1:-1:-1;;;25231:18:1;;;25224:38;25279:19;;18763:75:0;24900:404:1;18763:75:0;18905:9;;-1:-1:-1;;;;;18891:24:0;;;18905:9;;;;;18891:24;;;;:33;;;18920:4;18919:5;18891:33;18887:243;;;-1:-1:-1;;;;;18950:25:0;;;;;;:21;:25;;;;;;;;18945:170;;19034:14;;19024:6;19008:13;19018:2;-1:-1:-1;;;;;9340:16:0;9313:7;9340:16;;;;;;;;;;;;9247:117;19008:13;:22;;;;:::i;:::-;:40;;19000:95;;;;-1:-1:-1;;;19000:95:0;;25511:2:1;19000:95:0;;;25493:21:1;25550:2;25530:18;;;25523:30;25589:34;25569:18;;;25562:62;-1:-1:-1;;;25640:18:1;;;25633:40;25690:19;;19000:95:0;25309:406:1;19000:95:0;19157:4;19153:742;;;19183:6;;-1:-1:-1;;;19183:6:0;;;;19178:706;;19214:19;;-1:-1:-1;;;19214:19:0;;;;:64;;;;-1:-1:-1;;;;;;19258:20:0;;;;;;:16;:20;;;;;;;;19257:21;19214:64;:111;;;;-1:-1:-1;;;;;;19303:22:0;;;;;;:16;:22;;;;;;;;19302:23;19214:111;19210:659;;;19417:4;19368:28;9340:16;;;;;;;;;;;19474:13;;19450:37;;19446:404;;19534:10;;19575:22;;;;19571:97;;;19632:13;;19622:6;;-1:-1:-1;;;;;19622:6:0;9313:7;9340:16;;;;;;;;;;;5178:5;;19612:33;;;:::i;:::-;19611:54;;;;:::i;:::-;19601:64;;19571:97;19722:7;19698:20;:31;19694:72;;19756:7;19733:30;;19694:72;19792:34;19805:20;19792:12;:34::i;:::-;19489:361;19446:404;19345:524;19210:659;19912:52;19929:4;19935:2;19939:6;19947:3;19952:4;19958:5;19912:16;:52::i;:::-;19905:59;17686:2286;-1:-1:-1;;;;;;;17686:2286:0:o;23014:817::-;-1:-1:-1;;;;;23184:25:0;;23133:4;23184:25;;;:19;:25;;;;;;23165:4;;23184:25;;;:52;;-1:-1:-1;;;;;;23213:23:0;;;;;;:19;:23;;;;;;;;23184:52;23180:99;;;-1:-1:-1;23262:5:0;23180:99;-1:-1:-1;;;;;23289:13:0;;:7;:13;;;;;;;;;;:23;;23306:6;;23289:7;:23;;23306:6;;23289:23;:::i;:::-;;;;-1:-1:-1;23323:22:0;;-1:-1:-1;23349:7:0;23348:55;;23397:6;23348:55;;;23360:34;23370:4;23376:6;23384:3;23389:4;23360:9;:34::i;:::-;23323:80;;23429:14;23414:7;:11;23422:2;-1:-1:-1;;;;;23414:11:0;-1:-1:-1;;;;;23414:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;23474:2;-1:-1:-1;;;;;23459:34:0;23468:4;-1:-1:-1;;;;;23459:34:0;;23478:14;23459:34;;;;391:25:1;;379:2;364:18;;245:177;23459:34:0;;;;;;;;23509:16;;;;;;;23504:298;;23542:28;23561:4;23567:2;23542:18;:28::i;:::-;23590:16;;;;;;;23589:17;:41;;;;;23610:20;23621:4;23627:2;23610:10;:20::i;:::-;23589:77;;;;-1:-1:-1;;;;;;23635:31:0;;;;;;:25;:31;;;;;;;;23634:32;23589:77;:111;;;;-1:-1:-1;;;;;;23671:29:0;;;;;;:25;:29;;;;;;;;23670:30;23589:111;:121;;;;;23705:5;23704:6;23589:121;23585:206;;;23731:44;;-1:-1:-1;;;23731:44:0;;25922:2:1;23731:44:0;;;25904:21:1;25961:2;25941:18;;;25934:30;26000:34;25980:18;;;25973:62;-1:-1:-1;;;26051:18:1;;;26044:32;26093:19;;23731:44:0;25720:398:1;23585:206:0;-1:-1:-1;23819:4:0;;23014:817;-1:-1:-1;;;;;;;;23014:817:0:o;17232:446::-;17333:6;;17301:4;;-1:-1:-1;;;;;17325:14:0;;;17333:6;;17325:14;;;;:43;;-1:-1:-1;17362:6:0;;-1:-1:-1;;;;;17356:12:0;;;17362:6;;17356:12;;17325:43;:79;;;;-1:-1:-1;17398:6:0;;-1:-1:-1;;;;;17398:6:0;17385:9;:19;;17325:79;:118;;;;-1:-1:-1;;;;;;17422:21:0;;;;;;:17;:21;;;;;;;;17421:22;17325:118;:159;;;;-1:-1:-1;;;;;;17461:23:0;;;;;;:17;:23;;;;;;;;17460:24;17325:159;:186;;;;-1:-1:-1;;;;;;17501:10:0;;5317:42;17501:10;;17325:186;:219;;;;-1:-1:-1;;;;;;17528:16:0;;;;17325:219;:257;;;;-1:-1:-1;;;;;;17561:21:0;;17577:4;17561:21;;17325:257;:302;;;;-1:-1:-1;17615:11:0;;-1:-1:-1;;;;;17599:28:0;;;17615:11;;;;;17599:28;;17325:302;:345;;;;-1:-1:-1;17658:11:0;;-1:-1:-1;;;;;17644:26:0;;;17658:11;;;;;17644:26;;17325:345;17318:352;17232:446;-1:-1:-1;;;17232:446:0:o;19980:761::-;6112:6;:13;;-1:-1:-1;;;;6112:13:0;-1:-1:-1;;;6112:13:0;;;20087:4:::1;6112:13:::0;20067:26;;;:11:::1;:26;::::0;;;;;;;20102:9:::1;::::0;6112:13;20102:9;::::1;-1:-1:-1::0;;;;;20102:9:0::1;20067:46:::0;;;;;;;;-1:-1:-1;;20067:67:0::1;20063:166;;20171:4;20151:26;::::0;;;:11:::1;:26;::::0;;;;;;;20186:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;20186:9:0::1;20151:46:::0;;;;;;;-1:-1:-1;;20151:66:0;;20063:166:::1;20273:16;::::0;;20287:1:::1;20273:16:::0;;;;;::::1;::::0;;20249:21:::1;::::0;20273:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20273:16:0::1;20249:40;;20318:4;20300;20305:1;20300:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20300:23:0::1;;;-1:-1:-1::0;;;;;20300:23:0::1;;;::::0;::::1;20344:9;;;;;;;;;-1:-1:-1::0;;;;;20344:9:0::1;-1:-1:-1::0;;;;;20344:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20334:4;20339:1;20334:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20334:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20377:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;20377:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;20452:20;;20487:1:::1;::::0;20503:4;;20530::::1;::::0;20550:15:::1;::::0;20377:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20373:246;;20601:7;;;20373:246;20667:15;::::0;:66:::1;::::0;20631:12:::1;::::0;-1:-1:-1;;;;;20667:15:0::1;::::0;20723:5:::1;::::0;20695:21:::1;::::0;20631:12;20667:66;20631:12;20667:66;20695:21;20667:15;20723:5;20667:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6136:1:0::1;-1:-1:-1::0;6148:6:0;:14;;-1:-1:-1;;;;6148:14:0;;;19980:761::o;23839:767::-;23927:7;23947:18;23980:3;23976:205;;;-1:-1:-1;24013:9:0;:16;;;23976:205;;;24051:4;24047:134;;;-1:-1:-1;24085:9:0;:17;;;;;;24047:134;;;-1:-1:-1;24148:9:0;:21;;;;;;24047:134;24195:10;24209:1;24195:15;24191:39;;24221:6;24214:13;;;;;24191:39;24252:11;;;;;-1:-1:-1;;;;;24252:11:0;24276:4;24244:37;:73;;;;;24298:13;24315:2;24298:19;;24244:73;24240:101;;;-1:-1:-1;24334:4:0;24240:101;24351:17;5178:5;24371:19;24380:10;24371:6;:19;:::i;:::-;:38;;;;:::i;:::-;24351:58;-1:-1:-1;24424:13:0;;24420:141;;24470:4;24454:7;:22;;;;;;;;;;:35;;24480:9;;24454:7;:35;;24480:9;;24454:35;:::i;:::-;;;;-1:-1:-1;;24509:40:0;;391:25:1;;;24532:4:0;;-1:-1:-1;;;;;24509:40:0;;;;;379:2:1;364:18;24509:40:0;;;;;;;24420:141;24580:18;24589:9;24580:6;:18;:::i;20749:563::-;20832:16;;;;;;;20831:17;20823:65;;;;-1:-1:-1;;;20823:65:0;;27566:2:1;20823:65:0;;;27548:21:1;27605:2;27585:18;;;27578:30;27644:34;27624:18;;;27617:62;-1:-1:-1;;;27695:18:1;;;27688:33;27738:19;;20823:65:0;27364:399:1;20823:65:0;20904:20;20915:4;20921:2;20904:10;:20::i;:::-;20903:21;:37;;;;-1:-1:-1;20934:6:0;;-1:-1:-1;;;;;20928:12:0;;;20934:6;;20928:12;20903:37;20899:406;;;-1:-1:-1;;;;;20957:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;20957:30:0;;;20983:4;20957:30;;;;;;21002:19;:25;;;;;:32;;;;;;;;;;21049:16;:23;;-1:-1:-1;;21049:23:0;20957:30;21049:23;;;;;21099:11;;;;21087:114;;21145:11;:40;;-1:-1:-1;;;;;;21145:40:0;21179:4;21145:40;;;;;21087:114;21215:19;:26;;-1:-1:-1;;;;21215:26:0;-1:-1:-1;;;21215:26:0;;;21261:32;;-1:-1:-1;1738:41:1;;21261:32:0;;1726:2:1;1711:18;21261:32:0;1598:187:1;797:548;909:4;938:2;967;956:9;949:21;999:6;993:13;1042:6;1037:2;1026:9;1022:18;1015:34;1067:1;1077:140;1091:6;1088:1;1085:13;1077:140;;;1186:14;;;1182:23;;1176:30;1152:17;;;1171:2;1148:26;1141:66;1106:10;;1077:140;;;1081:3;1266:1;1261:2;1252:6;1241:9;1237:22;1233:31;1226:42;1336:2;1329;1325:7;1320:2;1312:6;1308:15;1304:29;1293:9;1289:45;1285:54;1277:62;;;;797:548;;;;:::o;1790:154::-;-1:-1:-1;;;;;1869:5:1;1865:54;1858:5;1855:65;1845:93;;1934:1;1931;1924:12;1949:315;2017:6;2025;2078:2;2066:9;2057:7;2053:23;2049:32;2046:52;;;2094:1;2091;2084:12;2046:52;2133:9;2120:23;2152:31;2177:5;2152:31;:::i;:::-;2202:5;2254:2;2239:18;;;;2226:32;;-1:-1:-1;;;1949:315:1:o;2269:247::-;2328:6;2381:2;2369:9;2360:7;2356:23;2352:32;2349:52;;;2397:1;2394;2387:12;2349:52;2436:9;2423:23;2455:31;2480:5;2455:31;:::i;2521:388::-;2589:6;2597;2650:2;2638:9;2629:7;2625:23;2621:32;2618:52;;;2666:1;2663;2656:12;2618:52;2705:9;2692:23;2724:31;2749:5;2724:31;:::i;:::-;2774:5;-1:-1:-1;2831:2:1;2816:18;;2803:32;2844:33;2803:32;2844:33;:::i;:::-;2896:7;2886:17;;;2521:388;;;;;:::o;2914:456::-;2991:6;2999;3007;3060:2;3048:9;3039:7;3035:23;3031:32;3028:52;;;3076:1;3073;3066:12;3028:52;3115:9;3102:23;3134:31;3159:5;3134:31;:::i;:::-;3184:5;-1:-1:-1;3241:2:1;3226:18;;3213:32;3254:33;3213:32;3254:33;:::i;:::-;2914:456;;3306:7;;-1:-1:-1;;;3360:2:1;3345:18;;;;3332:32;;2914:456::o;3375:248::-;3443:6;3451;3504:2;3492:9;3483:7;3479:23;3475:32;3472:52;;;3520:1;3517;3510:12;3472:52;-1:-1:-1;;3543:23:1;;;3613:2;3598:18;;;3585:32;;-1:-1:-1;3375:248:1:o;3628:127::-;3689:10;3684:3;3680:20;3677:1;3670:31;3720:4;3717:1;3710:15;3744:4;3741:1;3734:15;3760:275;3831:2;3825:9;3896:2;3877:13;;-1:-1:-1;;3873:27:1;3861:40;;3931:18;3916:34;;3952:22;;;3913:62;3910:88;;;3978:18;;:::i;:::-;4014:2;4007:22;3760:275;;-1:-1:-1;3760:275:1:o;4040:183::-;4100:4;4133:18;4125:6;4122:30;4119:56;;;4155:18;;:::i;:::-;-1:-1:-1;4200:1:1;4196:14;4212:4;4192:25;;4040:183::o;4228:662::-;4282:5;4335:3;4328:4;4320:6;4316:17;4312:27;4302:55;;4353:1;4350;4343:12;4302:55;4389:6;4376:20;4415:4;4439:60;4455:43;4495:2;4455:43;:::i;:::-;4439:60;:::i;:::-;4533:15;;;4619:1;4615:10;;;;4603:23;;4599:32;;;4564:12;;;;4643:15;;;4640:35;;;4671:1;4668;4661:12;4640:35;4707:2;4699:6;4695:15;4719:142;4735:6;4730:3;4727:15;4719:142;;;4801:17;;4789:30;;4839:12;;;;4752;;4719:142;;;-1:-1:-1;4879:5:1;4228:662;-1:-1:-1;;;;;;4228:662:1:o;4895:1215::-;5013:6;5021;5074:2;5062:9;5053:7;5049:23;5045:32;5042:52;;;5090:1;5087;5080:12;5042:52;5130:9;5117:23;5159:18;5200:2;5192:6;5189:14;5186:34;;;5216:1;5213;5206:12;5186:34;5254:6;5243:9;5239:22;5229:32;;5299:7;5292:4;5288:2;5284:13;5280:27;5270:55;;5321:1;5318;5311:12;5270:55;5357:2;5344:16;5379:4;5403:60;5419:43;5459:2;5419:43;:::i;5403:60::-;5497:15;;;5579:1;5575:10;;;;5567:19;;5563:28;;;5528:12;;;;5603:19;;;5600:39;;;5635:1;5632;5625:12;5600:39;5659:11;;;;5679:217;5695:6;5690:3;5687:15;5679:217;;;5775:3;5762:17;5792:31;5817:5;5792:31;:::i;:::-;5836:18;;5712:12;;;;5874;;;;5679:217;;;5915:5;-1:-1:-1;;5958:18:1;;5945:32;;-1:-1:-1;;5989:16:1;;;5986:36;;;6018:1;6015;6008:12;5986:36;;6041:63;6096:7;6085:8;6074:9;6070:24;6041:63;:::i;:::-;6031:73;;;4895:1215;;;;;:::o;6304:159::-;6371:20;;6431:6;6420:18;;6410:29;;6400:57;;6453:1;6450;6443:12;6400:57;6304:159;;;:::o;6468:328::-;6542:6;6550;6558;6611:2;6599:9;6590:7;6586:23;6582:32;6579:52;;;6627:1;6624;6617:12;6579:52;6650:28;6668:9;6650:28;:::i;:::-;6640:38;;6697:37;6730:2;6719:9;6715:18;6697:37;:::i;:::-;6687:47;;6753:37;6786:2;6775:9;6771:18;6753:37;:::i;:::-;6743:47;;6468:328;;;;;:::o;6801:118::-;6887:5;6880:13;6873:21;6866:5;6863:32;6853:60;;6909:1;6906;6899:12;6924:382;6989:6;6997;7050:2;7038:9;7029:7;7025:23;7021:32;7018:52;;;7066:1;7063;7056:12;7018:52;7105:9;7092:23;7124:31;7149:5;7124:31;:::i;:::-;7174:5;-1:-1:-1;7231:2:1;7216:18;;7203:32;7244:30;7203:32;7244:30;:::i;7311:180::-;7370:6;7423:2;7411:9;7402:7;7398:23;7394:32;7391:52;;;7439:1;7436;7429:12;7391:52;-1:-1:-1;7462:23:1;;7311:180;-1:-1:-1;7311:180:1:o;7743:376::-;7805:6;7813;7866:2;7854:9;7845:7;7841:23;7837:32;7834:52;;;7882:1;7879;7872:12;7834:52;7921:9;7908:23;7940:28;7962:5;7940:28;:::i;8384:385::-;8470:6;8478;8486;8494;8547:3;8535:9;8526:7;8522:23;8518:33;8515:53;;;8564:1;8561;8554:12;8515:53;-1:-1:-1;;8587:23:1;;;8657:2;8642:18;;8629:32;;-1:-1:-1;8708:2:1;8693:18;;8680:32;;8759:2;8744:18;8731:32;;-1:-1:-1;8384:385:1;-1:-1:-1;8384:385:1:o;8774:127::-;8835:10;8830:3;8826:20;8823:1;8816:31;8866:4;8863:1;8856:15;8890:4;8887:1;8880:15;8906:422;8995:1;9038:5;8995:1;9052:270;9073:7;9063:8;9060:21;9052:270;;;9132:4;9128:1;9124:6;9120:17;9114:4;9111:27;9108:53;;;9141:18;;:::i;:::-;9191:7;9181:8;9177:22;9174:55;;;9211:16;;;;9174:55;9290:22;;;;9250:15;;;;9052:270;;;9056:3;8906:422;;;;;:::o;9333:806::-;9382:5;9412:8;9402:80;;-1:-1:-1;9453:1:1;9467:5;;9402:80;9501:4;9491:76;;-1:-1:-1;9538:1:1;9552:5;;9491:76;9583:4;9601:1;9596:59;;;;9669:1;9664:130;;;;9576:218;;9596:59;9626:1;9617:10;;9640:5;;;9664:130;9701:3;9691:8;9688:17;9685:43;;;9708:18;;:::i;:::-;-1:-1:-1;;9764:1:1;9750:16;;9779:5;;9576:218;;9878:2;9868:8;9865:16;9859:3;9853:4;9850:13;9846:36;9840:2;9830:8;9827:16;9822:2;9816:4;9813:12;9809:35;9806:77;9803:159;;;-1:-1:-1;9915:19:1;;;9947:5;;9803:159;9994:34;10019:8;10013:4;9994:34;:::i;:::-;10064:6;10060:1;10056:6;10052:19;10043:7;10040:32;10037:58;;;10075:18;;:::i;:::-;10113:20;;9333:806;-1:-1:-1;;;9333:806:1:o;10144:140::-;10202:5;10231:47;10272:4;10262:8;10258:19;10252:4;10231:47;:::i;10289:217::-;10329:1;10355;10345:132;;10399:10;10394:3;10390:20;10387:1;10380:31;10434:4;10431:1;10424:15;10462:4;10459:1;10452:15;10345:132;-1:-1:-1;10491:9:1;;10289:217::o;11197:168::-;11270:9;;;11301;;11318:15;;;11312:22;;11298:37;11288:71;;11339:18;;:::i;11370:128::-;11437:9;;;11458:11;;;11455:37;;;11472:18;;:::i;12270:127::-;12331:10;12326:3;12322:20;12319:1;12312:31;12362:4;12359:1;12352:15;12386:4;12383:1;12376:15;12749:197;12787:3;12815:6;12856:2;12849:5;12845:14;12883:2;12874:7;12871:15;12868:41;;12889:18;;:::i;:::-;12938:1;12925:15;;12749:197;-1:-1:-1;;;12749:197:1:o;12951:125::-;13016:9;;;13037:10;;;13034:36;;;13050:18;;:::i;15327:385::-;15406:6;15414;15467:2;15455:9;15446:7;15442:23;15438:32;15435:52;;;15483:1;15480;15473:12;15435:52;15515:9;15509:16;15534:31;15559:5;15534:31;:::i;:::-;15634:2;15619:18;;15613:25;15584:5;;-1:-1:-1;15647:33:1;15613:25;15647:33;:::i;18341:245::-;18420:6;18428;18481:2;18469:9;18460:7;18456:23;18452:32;18449:52;;;18497:1;18494;18487:12;18449:52;-1:-1:-1;;18520:16:1;;18576:2;18561:18;;;18555:25;18520:16;;18555:25;;-1:-1:-1;18341:245:1:o;18947:184::-;19017:6;19070:2;19058:9;19049:7;19045:23;19041:32;19038:52;;;19086:1;19083;19076:12;19038:52;-1:-1:-1;19109:16:1;;18947:184;-1:-1:-1;18947:184:1:o;19438:245::-;19505:6;19558:2;19546:9;19537:7;19533:23;19529:32;19526:52;;;19574:1;19571;19564:12;19526:52;19606:9;19600:16;19625:28;19647:5;19625:28;:::i;20047:251::-;20117:6;20170:2;20158:9;20149:7;20145:23;20141:32;20138:52;;;20186:1;20183;20176:12;20138:52;20218:9;20212:16;20237:31;20262:5;20237:31;:::i;26123:1026::-;26385:4;26433:3;26422:9;26418:19;26464:6;26453:9;26446:25;26490:2;26528:6;26523:2;26512:9;26508:18;26501:34;26571:3;26566:2;26555:9;26551:18;26544:31;26595:6;26630;26624:13;26661:6;26653;26646:22;26699:3;26688:9;26684:19;26677:26;;26738:2;26730:6;26726:15;26712:29;;26759:1;26769:218;26783:6;26780:1;26777:13;26769:218;;;26848:13;;-1:-1:-1;;;;;26844:62:1;26832:75;;26962:15;;;;26927:12;;;;26805:1;26798:9;26769:218;;;-1:-1:-1;;;;;;;27043:55:1;;;;27038:2;27023:18;;27016:83;-1:-1:-1;;;27130:3:1;27115:19;27108:35;27004:3;26123:1026;-1:-1:-1;;;26123:1026:1:o

Swarm Source

ipfs://590997082baa519939615a16826ccc3909f74ef1d25ff3bdc6759033d307cad7
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.