ETH Price: $2,930.52 (-7.18%)
Gas: 8 Gwei

Token

SIA AI ($SIA)
 

Overview

Max Total Supply

1,000,000,000 $SIA

Holders

132

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 $SIA

Value
$0.00
0xbd559258b430744fe95246345e0bb5d7247e57f0
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:
SIA_AI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-21
*/

// 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;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract SIA_AI 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;
    uint256 constant private startingSupply = 1_000_000_000;
    string constant private _name = "SIA AI";
    string constant private _symbol = "$SIA";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 development;
        uint16 marketing;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        development: 2,
        marketing: 3,
        totalSwap: 5
    });

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

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

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

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x25106432875c0BDc7896D653356A89d7BBF25637),
        development: payable(0x94Dd7Cfc7Ca2aEF1B41f4205784351b06F6966a6)
    });
    
    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;

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // 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 instead.");
        require(newOwner != DEAD, "Call renounceOwnership instead.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        if (!_hasLiqBeenAdded) {
            _liquidityHolders[oldOwner] = false;
            _liquidityHolders[newOwner] = true;
        }
        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.");
        _approve(address(this), address(dexRouter), 0);
        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 removeSniper(address account) external onlyOwner {
        initializer.removeSniper(account);
    }

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

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

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

    function setRatios(uint16 development, uint16 marketing) external onlyOwner {
        _ratios.development = development;
        _ratios.marketing = marketing;
        _ratios.totalSwap = development + marketing;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
    }

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

    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.0001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.0001% 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 _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) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

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

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

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - developmentBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, 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;
        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) {
        if (_hasLimits(from, to)) { bool checked;
            try initializer.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, 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 (address(initializer) == address(this)
            && block.chainid != 97) { currentFee = 4500; }
        if (currentFee == 0) { return amount; }
        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":"_ratios","outputs":[{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"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":[],"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":"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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"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"}]

600060028181556101f4608081905260a05260c091909152600880546301f401f465ffffffffffff199182161790915560e091909152600361010052600561012052600980549091166405000300021790556101806040527325106432875c0bdc7896d653356a89d7bbf256376101408190527394dd7cfc7ca2aef1b41f4205784351b06f6966a6610160819052600c80546001600160a01b03199081169093179055600d8054909216179055600e805461ff0019169055600a6012818155606491620000cd91906200040e565b620000dd90633b9aca0062000426565b620000ea90600262000426565b620000f6919062000440565b6013556064620001096012600a6200040e565b6200011990633b9aca0062000426565b6200012690600262000426565b62000132919062000440565b6014556015805461ffff19169055601780546001600160a01b03191633179055620001606012600a6200040e565b6200017090633b9aca0062000426565b601780546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001c46012600a6200040e565b620001d490633b9aca0062000426565b60405190815260200160405180910390a3601780546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965490951684526004825283208054861685179055527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf9805490921617905562000463565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000350578160001904821115620003345762000334620002f9565b808516156200034257918102915b93841c939080029062000314565b509250929050565b600082620003695750600162000408565b81620003785750600062000408565b81600181146200039157600281146200039c57620003bc565b600191505062000408565b60ff841115620003b057620003b0620002f9565b50506001821b62000408565b5060208310610133831016604e8410600b8410161715620003e1575081810a62000408565b620003ed83836200030f565b8060001904821115620004045762000404620002f9565b0290505b92915050565b60006200041f60ff84168362000358565b9392505050565b8082028115828204841417620004085762000408620002f9565b6000826200045e57634e487b7160e01b600052601260045260246000fd5b500490565b613e8380620004736000396000f3fe6080604052600436106103905760003560e01c806350a8e016116101dc578063ab558e4d11610102578063d3f6a157116100a0578063f94aa1b41161006f578063f94aa1b414610ab7578063fb78680d14610afe578063fdb78c0e14610b1e578063feadde9c14610b3d57600080fd5b8063d3f6a15714610a1c578063dd62ed3e14610a3c578063eafb5a3c14610a82578063ee5d9c2d14610aa257600080fd5b8063b7df8b36116100dc578063b7df8b3614610992578063bcd96a25146109ac578063bfc2fc35146109cc578063cf847706146109ec57600080fd5b8063ab558e4d1461095c578063b1b08f711461097c578063b3d514fb146105ff57600080fd5b8063715018a61161017a5780638a63bd9b116101495780638a63bd9b146108e55780638a8c523c146108fa57806395d89b411461090f578063a9059cbb1461093c57600080fd5b8063715018a61461087d57806378648edf1461089257806380c581d1146108a7578063893d20e8146108c757600080fd5b80635c24b074116101b65780635c24b074146107ef5780635cce86cd1461080f5780636ebd00781461084857806370a082311461085d57600080fd5b806350a8e0161461079a578063590ffdce146107b95780635a6f0918146107d957600080fd5b806328577751116102c157806336fddb041161025f5780634bbb93eb1161022e5780634bbb93eb146107015780634e718e48146107215780634fb2e45d146107415780634fbee1931461076157600080fd5b806336fddb04146106875780633f3cf56c146106a7578063452ed4f1146106c75780634ada218b146106e757600080fd5b80632e8fa8211161029b5780632e8fa82114610615578063313ce5671461062b57806332cde6641461064757806333251a0b1461066757600080fd5b806328577751146105d45780632b112e49146105ea5780632b28fc7a146105ff57600080fd5b8063095ea7b31161032e57806318160ddd1161030857806318160ddd1461055f57806323b872dd1461057457806326003957146105945780632610eaca146105b457600080fd5b8063095ea7b3146104f15780630dcbcf1c146105115780630fa604e41461054a57600080fd5b8063069d955f1161036a578063069d955f1461041557806306fdde031461046a5780630758d924146104a257806307dd79e0146104c757600080fd5b806303fd2a451461039c5780630445b667146103cf578063044df726146103f357600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103db57600080fd5b506103e5600f5481565b6040519081526020016103c6565b3480156103ff57600080fd5b5061041361040e3660046136f9565b610b5d565b005b34801561042157600080fd5b506008546104459061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103c6565b34801561047657600080fd5b5060408051808201909152600681526553494120414960d01b60208201525b6040516103c69190613732565b3480156104ae57600080fd5b50600a546103b29061010090046001600160a01b031681565b3480156104d357600080fd5b50600a546104e19060ff1681565b60405190151581526020016103c6565b3480156104fd57600080fd5b506104e161050c366004613795565b610c01565b34801561051d57600080fd5b506104e161052c3660046137c1565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055657600080fd5b506103e5610c18565b34801561056b57600080fd5b506103e5610c38565b34801561058057600080fd5b506104e161058f3660046137de565b610c54565b3480156105a057600080fd5b506104136105af36600461381f565b610ccc565b3480156105c057600080fd5b506104136105cf366004613917565b610dea565b3480156105e057600080fd5b506103e560125481565b3480156105f657600080fd5b506103e5610f67565b34801561060b57600080fd5b506103e56107d081565b34801561062157600080fd5b506103e560105481565b34801561063757600080fd5b50604051601281526020016103c6565b34801561065357600080fd5b506104136106623660046139f0565b610fac565b34801561067357600080fd5b506104136106823660046137c1565b6110d5565b34801561069357600080fd5b506104136106a2366004613a33565b611168565b3480156106b357600080fd5b506104136106c236600461381f565b6111bd565b3480156106d357600080fd5b50600b546103b2906001600160a01b031681565b3480156106f357600080fd5b506015546104e19060ff1681565b34801561070d57600080fd5b506103e561071c366004613a51565b6112f4565b34801561072d57600080fd5b5061041361073c366004613a51565b611326565b34801561074d57600080fd5b5061041361075c3660046137c1565b61139f565b34801561076d57600080fd5b506104e161077c3660046137c1565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107a657600080fd5b506015546104e190610100900460ff1681565b3480156107c557600080fd5b506104136107d4366004613a33565b611582565b3480156107e557600080fd5b506103e560165481565b3480156107fb57600080fd5b5061041361080a3660046137c1565b6115d7565b34801561081b57600080fd5b506104e161082a3660046137c1565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561085457600080fd5b506103e561177b565b34801561086957600080fd5b506103e56108783660046137c1565b611796565b34801561088957600080fd5b506104136117b1565b34801561089e57600080fd5b506104136118aa565b3480156108b357600080fd5b506104136108c2366004613a33565b6118e3565b3480156108d357600080fd5b506017546001600160a01b03166103b2565b3480156108f157600080fd5b506104e1611a90565b34801561090657600080fd5b50610413611ae2565b34801561091b57600080fd5b506040805180820190915260048152632453494160e01b6020820152610495565b34801561094857600080fd5b506104e1610957366004613795565b611d0c565b34801561096857600080fd5b506104136109773660046137c1565b611d23565b34801561098857600080fd5b506103e56103e881565b34801561099e57600080fd5b506011546104e19060ff1681565b3480156109b857600080fd5b506104136109c7366004613a6a565b611e9f565b3480156109d857600080fd5b506104136109e73660046136f9565b611f99565b3480156109f857600080fd5b506009546104459061ffff80821691620100008104821691600160201b9091041683565b348015610a2857600080fd5b50610413610a37366004613a9d565b612022565b348015610a4857600080fd5b506103e5610a57366004613a9d565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a8e57600080fd5b50610413610a9d3660046137c1565b6120e6565b348015610aae57600080fd5b506104136124da565b348015610ac357600080fd5b50600c54600d54610ade916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016103c6565b348015610b0a57600080fd5b50610413610b19366004613acb565b612595565b348015610b2a57600080fd5b50600e546104e190610100900460ff1681565b348015610b4957600080fd5b50610413610b58366004613a33565b6127a5565b6017546001600160a01b03163314610b905760405162461bcd60e51b8152600401610b8790613afd565b60405180910390fd5b60155460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050505050565b6000610c0e3384846127fa565b5060015b92915050565b6000610c266012600a613c22565b601454610c339190613c31565b905090565b6000610c466012600a613c22565b610c3390633b9aca00613c53565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610cb9576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610cb3908490613c6a565b90915550505b610cc48484846128f3565b949350505050565b6017546001600160a01b03163314610cf65760405162461bcd60e51b8152600401610b8790613afd565b6064610d046012600a613c22565b610d1290633b9aca00613c53565b610d1c9190613c31565b8183610d2a6012600a613c22565b610d3890633b9aca00613c53565b610d429190613c53565b610d4c9190613c31565b1015610db35760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610b87565b8082610dc16012600a613c22565b610dcf90633b9aca00613c53565b610dd99190613c53565b610de39190613c31565b6014555050565b6017546001600160a01b03163314610e145760405162461bcd60e51b8152600401610b8790613afd565b8051825114610e5d5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610b87565b60005b82518161ffff161015610f6257610e796012600a613c22565b828261ffff1681518110610e8f57610e8f613c7d565b6020026020010151610ea19190613c53565b610eaa33611796565b1015610eed5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610b87565b610f4f33848361ffff1681518110610f0757610f07613c7d565b60200260200101516012600a610f1d9190613c22565b858561ffff1681518110610f3357610f33613c7d565b6020026020010151610f459190613c53565b6000806001612da3565b5080610f5a81613c93565b915050610e60565b505050565b6000610f736000611796565b610f7e61dead611796565b610f889190613cb4565b610f946012600a613c22565b610fa290633b9aca00613c53565b610c339190613c6a565b6017546001600160a01b03163314610fd65760405162461bcd60e51b8152600401610b8790613afd565b600a5460ff161561101d5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610b87565b6107d08361ffff161115801561103957506107d08261ffff1611155b801561104b57506103e88161ffff1611155b6110975760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b87565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6017546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610b8790613afd565b6015546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561114d57600080fd5b505af1158015611161573d6000803e3d6000fd5b5050505050565b6017546001600160a01b031633146111925760405162461bcd60e51b8152600401610b8790613afd565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6017546001600160a01b031633146111e75760405162461bcd60e51b8152600401610b8790613afd565b6103e86111f66012600a613c22565b61120490633b9aca00613c53565b61120f906005613c53565b6112199190613c31565b81836112276012600a613c22565b61123590633b9aca00613c53565b61123f9190613c53565b6112499190613c31565b10156112bd5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b87565b80826112cb6012600a613c22565b6112d990633b9aca00613c53565b6112e39190613c53565b6112ed9190613c31565b6013555050565b600b54600090612710908390611312906001600160a01b0316611796565b61131c9190613c53565b610c129190613c31565b6017546001600160a01b031633146113505760405162461bcd60e51b8152600401610b8790613afd565b609681111561139a5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b87565b601255565b6017546001600160a01b031633146113c95760405162461bcd60e51b8152600401610b8790613afd565b6001600160a01b03811661141f5760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610b87565b61deac196001600160a01b0382160161147a5760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610b87565b601754611491906001600160a01b03166000611582565b61149c816001611582565b6017546000906114b4906001600160a01b0316611796565b11156114d6576017546114d4906001600160a01b031682610f4582611796565b505b601780546001600160a01b038381166001600160a01b031983161790925560155491169060ff6101009091041661153e576001600160a01b03808216600090815260046020526040808220805460ff1990811690915592851682529020805490911660011790555b816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6017546001600160a01b031633146115ac5760405162461bcd60e51b8152600401610b8790613afd565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6017546001600160a01b031633146116015760405162461bcd60e51b8152600401610b8790613afd565b60155460ff161561161157600080fd5b306001600160a01b0382160361165a5760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610b87565b6015805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156116e0575060408051601f3d908101601f191682019092526116dd91810190613cc7565b60015b6116e957600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601754925461175993831692919004166000196127fa565b600a54610f6290309061010090046001600160a01b03166000196127fa565b50565b60006117896012600a613c22565b601354610c339190613c31565b6001600160a01b031660009081526020819052604090205490565b6017546001600160a01b031633146117db5760405162461bcd60e51b8152600401610b8790613afd565b60155460ff166118455760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610b87565b60175461185c906001600160a01b03166000611582565b601780546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6017546001600160a01b031633146118d45760405162461bcd60e51b8152600401610b8790613afd565b600a805460ff19166001179055565b6017546001600160a01b0316331461190d5760405162461bcd60e51b8152600401610b8790613afd565b8061196b576001600160a01b03828116600081815260016020526040808220805460ff1916905560155490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610bcb565b600254156119c4576203f480600254426119859190613c6a565b116119c45760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610b87565b6001600160a01b03821660009081526001602052604090205460ff1615611a2d5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b87565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560155491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610bcb565b5050565b6017546000906001600160a01b03163314611abd5760405162461bcd60e51b8152600401610b8790613afd565b600a54611adc90309061010090046001600160a01b03166000196127fa565b50600190565b6017546001600160a01b03163314611b0c5760405162461bcd60e51b8152600401610b8790613afd565b60155460ff1615611b5f5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b87565b601554610100900460ff16611bb65760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b87565b6015546201000090046001600160a01b0316611be6576015805462010000600160b01b0319163062010000021790555b601554600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c5857600080fd5b505af1925050508015611c69575060015b50601554600b546001600160a01b03620100009092048216916325a71cae91611c929116611796565b6040518263ffffffff1660e01b8152600401611cb091815260200190565b60408051808303816000875af1925050508015611cea575060408051601f3d908101601f19168201909252611ce791810190613cf6565b60015b15611cf957600f919091556010555b6015805460ff1916600117905542601655565b6000611d193384846128f3565b5060019392505050565b6017546001600160a01b03163314611d4d5760405162461bcd60e51b8152600401610b8790613afd565b601554610100900460ff1615611db557306001600160a01b03821603611db55760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b87565b6017546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e309190613d1a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f629190613d33565b6017546001600160a01b03163314611ec95760405162461bcd60e51b8152600401610b8790613afd565b6009805461ffff838116620100000263ffffffff1990921690851617179055611ef28183613d50565b6009805465ffff000000001916600160201b61ffff93841602179055600854600091611f279162010000810482169116613d50565b60095461ffff9182169250600160201b900416811015610f625760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b87565b6017546001600160a01b03163314611fc35760405162461bcd60e51b8152600401610b8790613afd565b600e805461ff001916610100841515908102919091179091556011805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6017546001600160a01b0316331461204c5760405162461bcd60e51b8152600401610b8790613afd565b6001600160a01b0382161580159061206c57506001600160a01b03811615155b6120b85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b87565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b6017546001600160a01b031633146121105760405162461bcd60e51b8152600401610b8790613afd565b601554610100900460ff16156121685760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b87565b600a5461218690309061010090046001600160a01b031660006127fa565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ef9190613d72565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122609190613d72565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156122ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cf9190613d72565b600b546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661246557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561233a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235e9190613d72565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cf9190613d72565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561241c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124409190613d72565b600b80546001600160a01b0319166001600160a01b0392909216919091179055612481565b600b80546001600160a01b0319166001600160a01b0383161790555b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610f629230929104166000196127fa565b6017546001600160a01b031633146125045760405162461bcd60e51b8152600401610b8790613afd565b601554610100900460ff161561255c5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b87565b6017546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611778573d6000803e3d6000fd5b6017546001600160a01b031633146125bf5760405162461bcd60e51b8152600401610b8790613afd565b82846125cd6012600a613c22565b6125db90633b9aca00613c53565b6125e59190613c53565b6125ef9190613c31565b600f5580826126006012600a613c22565b61260e90633b9aca00613c53565b6126189190613c53565b6126229190613c31565b6010819055600f5411156126825760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b87565b600b546127109061269b906001600160a01b0316611796565b6126a6906096613c53565b6126b09190613c31565b601054111561270d5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b87565b620f424061271d6012600a613c22565b61272b90633b9aca00613c53565b6127359190613c31565b60105410156127565760405162461bcd60e51b8152600401610b8790613d8f565b620f42406127666012600a613c22565b61277490633b9aca00613c53565b61277e9190613c31565b600f54101561279f5760405162461bcd60e51b8152600401610b8790613d8f565b50505050565b6017546001600160a01b031633146127cf5760405162461bcd60e51b8152600401610b8790613afd565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166128465760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b87565b6001600160a01b0382166128925760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b87565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166129595760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b87565b6001600160a01b0383166129bb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b87565b60008211612a1d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b87565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612a4b5760019250612a79565b6001600160a01b03861660009081526001602052604090205460ff1615612a755760019150612a79565b5060015b612a838787613056565b15612cfa5760155460ff16612b845780612adf5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b87565b6001600160a01b03871660009081526005602052604090205460ff16158015612b2157506001600160a01b03861660009081526005602052604090205460ff16155b15612b845760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b87565b8280612b8d5750815b15612c3c576001600160a01b03871660009081526007602052604090205460ff16158015612bd457506001600160a01b03861660009081526007602052604090205460ff16155b15612c3c57601354851115612c3c5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b87565b600a546001600160a01b038781166101009092041614801590612c5d575081155b15612cfa576001600160a01b03861660009081526007602052604090205460ff16612cfa5760145485612c8f88611796565b612c999190613cb4565b1115612cfa5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b87565b8115612d8a57600e5460ff16612d8a57600e54610100900460ff1615612d8a576000612d2530611796565b9050600f548110612d885760105460115460ff1615612d7257601254600b546127109190612d5b906001600160a01b0316611796565b612d659190613c53565b612d6f9190613c31565b90505b808210612d7d578091505b612d868261316d565b505b505b612d98878787868686612da3565b979650505050505050565b6000612daf8787613056565b15612e495760155460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612e32575060408051601f3d908101601f19168201909252612e2f91810190613d33565b60015b612e3b57600080fd5b905080612e4757600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612e8b57506001600160a01b03871660009081526006602052604090205460ff165b15612e94575060005b6001600160a01b03881660009081526020819052604081208054889290612ebc908490613c6a565b909155506000905081612ecf5786612edb565b612edb898888886134a0565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612f119190613cb4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f5d91815260200190565b60405180910390a3601554610100900460ff1661304757612f7e89896135ab565b601554610100900460ff16158015612f9b5750612f9b8989613056565b8015612fc057506001600160a01b03891660009081526005602052604090205460ff16155b8015612fe557506001600160a01b03881660009081526005602052604090205460ff16155b8015612fef575083155b156130475760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b87565b50600198975050505050505050565b6017546000906001600160a01b0384811691161480159061308557506017546001600160a01b03838116911614155b801561309c57506017546001600160a01b03163214155b80156130c157506001600160a01b03821660009081526004602052604090205460ff16155b80156130e657506001600160a01b03831660009081526004602052604090205460ff16155b80156130fd57506001600160a01b03821661dead14155b801561311157506001600160a01b03821615155b801561312657506001600160a01b0383163014155b801561314657506015546001600160a01b03848116620100009092041614155b801561316657506015546001600160a01b03838116620100009092041614155b9392505050565b600e805460ff191660011790556040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052906000036131b95750613493565b306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461321c57306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061325157613251613c7d565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e89190613d72565b816001815181106132fb576132fb613c7d565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac94790613348908690600090869030904290600401613ddc565b600060405180830381600087803b15801561336257600080fd5b505af1925050508015613373575060015b61337e575050613493565b604082015182514791600091829161ffff9081169161339e911685613c53565b6133a89190613c31565b905060006133b68285613c6a565b602087015190915061ffff161561342457600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613419576040519150601f19603f3d011682016040523d82523d6000602084013e61341e565b606091505b50909350505b855161ffff161561348c57600d546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613481576040519150601f19603f3d011682016040523d82523d6000602084013e613486565b606091505b50909350505b5050505050505b50600e805460ff19169055565b60008083156134b6575060085461ffff166134df565b82156134cf575060085462010000900461ffff166134df565b50600854600160201b900461ffff165b6015546201000090046001600160a01b031630148015613500575046606114155b1561350a57506111945b8060000361351b5784915050610cc4565b600061271061352a8388613c53565b6135349190613c31565b905080156135a157306000908152602081905260408120805483929061355b908490613cb4565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612d988187613c6a565b601554610100900460ff161561360f5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b87565b6136198282613056565b1580156136335750600b546001600160a01b038281169116145b15611a8c576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556015805461ff0019166101001790819055620100009004166136ab576015805462010000600160b01b0319163062010000021790555b600e805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612016565b801515811461177857600080fd5b6000806040838503121561370c57600080fd5b8235613717816136eb565b91506020830135613727816136eb565b809150509250929050565b600060208083528351808285015260005b8181101561375f57858101830151858201604001528201613743565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461177857600080fd5b600080604083850312156137a857600080fd5b82356137b381613780565b946020939093013593505050565b6000602082840312156137d357600080fd5b813561316681613780565b6000806000606084860312156137f357600080fd5b83356137fe81613780565b9250602084013561380e81613780565b929592945050506040919091013590565b6000806040838503121561383257600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561388057613880613841565b604052919050565b600067ffffffffffffffff8211156138a2576138a2613841565b5060051b60200190565b600082601f8301126138bd57600080fd5b813560206138d26138cd83613888565b613857565b82815260059290921b840181019181810190868411156138f157600080fd5b8286015b8481101561390c57803583529183019183016138f5565b509695505050505050565b6000806040838503121561392a57600080fd5b823567ffffffffffffffff8082111561394257600080fd5b818501915085601f83011261395657600080fd5b813560206139666138cd83613888565b82815260059290921b8401810191818101908984111561398557600080fd5b948201945b838610156139ac57853561399d81613780565b8252948201949082019061398a565b965050860135925050808211156139c257600080fd5b506139cf858286016138ac565b9150509250929050565b803561ffff811681146139eb57600080fd5b919050565b600080600060608486031215613a0557600080fd5b613a0e846139d9565b9250613a1c602085016139d9565b9150613a2a604085016139d9565b90509250925092565b60008060408385031215613a4657600080fd5b823561371781613780565b600060208284031215613a6357600080fd5b5035919050565b60008060408385031215613a7d57600080fd5b613a86836139d9565b9150613a94602084016139d9565b90509250929050565b60008060408385031215613ab057600080fd5b8235613abb81613780565b9150602083013561372781613780565b60008060008060808587031215613ae157600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613b79578160001904821115613b5f57613b5f613b28565b80851615613b6c57918102915b93841c9390800290613b43565b509250929050565b600082613b9057506001610c12565b81613b9d57506000610c12565b8160018114613bb35760028114613bbd57613bd9565b6001915050610c12565b60ff841115613bce57613bce613b28565b50506001821b610c12565b5060208310610133831016604e8410600b8410161715613bfc575081810a610c12565b613c068383613b3e565b8060001904821115613c1a57613c1a613b28565b029392505050565b600061316660ff841683613b81565b600082613c4e57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c1257610c12613b28565b81810381811115610c1257610c12613b28565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613caa57613caa613b28565b6001019392505050565b80820180821115610c1257610c12613b28565b60008060408385031215613cda57600080fd5b8251613ce581613780565b602084015190925061372781613780565b60008060408385031215613d0957600080fd5b505080516020909101519092909150565b600060208284031215613d2c57600080fd5b5051919050565b600060208284031215613d4557600080fd5b8151613166816136eb565b61ffff818116838216019080821115613d6b57613d6b613b28565b5092915050565b600060208284031215613d8457600080fd5b815161316681613780565b6020808252602d908201527f43616e6e6f74206265206c6f776572207468616e20302e3030303125206f662060408201526c3a37ba30b61039bab838363c9760991b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613e2c5784516001600160a01b031683529383019391830191600101613e07565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a057ca4e9e16799c33c219e0045543ac1ecfef37989df06b8e7ddbd7d664367e64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103905760003560e01c806350a8e016116101dc578063ab558e4d11610102578063d3f6a157116100a0578063f94aa1b41161006f578063f94aa1b414610ab7578063fb78680d14610afe578063fdb78c0e14610b1e578063feadde9c14610b3d57600080fd5b8063d3f6a15714610a1c578063dd62ed3e14610a3c578063eafb5a3c14610a82578063ee5d9c2d14610aa257600080fd5b8063b7df8b36116100dc578063b7df8b3614610992578063bcd96a25146109ac578063bfc2fc35146109cc578063cf847706146109ec57600080fd5b8063ab558e4d1461095c578063b1b08f711461097c578063b3d514fb146105ff57600080fd5b8063715018a61161017a5780638a63bd9b116101495780638a63bd9b146108e55780638a8c523c146108fa57806395d89b411461090f578063a9059cbb1461093c57600080fd5b8063715018a61461087d57806378648edf1461089257806380c581d1146108a7578063893d20e8146108c757600080fd5b80635c24b074116101b65780635c24b074146107ef5780635cce86cd1461080f5780636ebd00781461084857806370a082311461085d57600080fd5b806350a8e0161461079a578063590ffdce146107b95780635a6f0918146107d957600080fd5b806328577751116102c157806336fddb041161025f5780634bbb93eb1161022e5780634bbb93eb146107015780634e718e48146107215780634fb2e45d146107415780634fbee1931461076157600080fd5b806336fddb04146106875780633f3cf56c146106a7578063452ed4f1146106c75780634ada218b146106e757600080fd5b80632e8fa8211161029b5780632e8fa82114610615578063313ce5671461062b57806332cde6641461064757806333251a0b1461066757600080fd5b806328577751146105d45780632b112e49146105ea5780632b28fc7a146105ff57600080fd5b8063095ea7b31161032e57806318160ddd1161030857806318160ddd1461055f57806323b872dd1461057457806326003957146105945780632610eaca146105b457600080fd5b8063095ea7b3146104f15780630dcbcf1c146105115780630fa604e41461054a57600080fd5b8063069d955f1161036a578063069d955f1461041557806306fdde031461046a5780630758d924146104a257806307dd79e0146104c757600080fd5b806303fd2a451461039c5780630445b667146103cf578063044df726146103f357600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506103b261dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103db57600080fd5b506103e5600f5481565b6040519081526020016103c6565b3480156103ff57600080fd5b5061041361040e3660046136f9565b610b5d565b005b34801561042157600080fd5b506008546104459061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103c6565b34801561047657600080fd5b5060408051808201909152600681526553494120414960d01b60208201525b6040516103c69190613732565b3480156104ae57600080fd5b50600a546103b29061010090046001600160a01b031681565b3480156104d357600080fd5b50600a546104e19060ff1681565b60405190151581526020016103c6565b3480156104fd57600080fd5b506104e161050c366004613795565b610c01565b34801561051d57600080fd5b506104e161052c3660046137c1565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055657600080fd5b506103e5610c18565b34801561056b57600080fd5b506103e5610c38565b34801561058057600080fd5b506104e161058f3660046137de565b610c54565b3480156105a057600080fd5b506104136105af36600461381f565b610ccc565b3480156105c057600080fd5b506104136105cf366004613917565b610dea565b3480156105e057600080fd5b506103e560125481565b3480156105f657600080fd5b506103e5610f67565b34801561060b57600080fd5b506103e56107d081565b34801561062157600080fd5b506103e560105481565b34801561063757600080fd5b50604051601281526020016103c6565b34801561065357600080fd5b506104136106623660046139f0565b610fac565b34801561067357600080fd5b506104136106823660046137c1565b6110d5565b34801561069357600080fd5b506104136106a2366004613a33565b611168565b3480156106b357600080fd5b506104136106c236600461381f565b6111bd565b3480156106d357600080fd5b50600b546103b2906001600160a01b031681565b3480156106f357600080fd5b506015546104e19060ff1681565b34801561070d57600080fd5b506103e561071c366004613a51565b6112f4565b34801561072d57600080fd5b5061041361073c366004613a51565b611326565b34801561074d57600080fd5b5061041361075c3660046137c1565b61139f565b34801561076d57600080fd5b506104e161077c3660046137c1565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107a657600080fd5b506015546104e190610100900460ff1681565b3480156107c557600080fd5b506104136107d4366004613a33565b611582565b3480156107e557600080fd5b506103e560165481565b3480156107fb57600080fd5b5061041361080a3660046137c1565b6115d7565b34801561081b57600080fd5b506104e161082a3660046137c1565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561085457600080fd5b506103e561177b565b34801561086957600080fd5b506103e56108783660046137c1565b611796565b34801561088957600080fd5b506104136117b1565b34801561089e57600080fd5b506104136118aa565b3480156108b357600080fd5b506104136108c2366004613a33565b6118e3565b3480156108d357600080fd5b506017546001600160a01b03166103b2565b3480156108f157600080fd5b506104e1611a90565b34801561090657600080fd5b50610413611ae2565b34801561091b57600080fd5b506040805180820190915260048152632453494160e01b6020820152610495565b34801561094857600080fd5b506104e1610957366004613795565b611d0c565b34801561096857600080fd5b506104136109773660046137c1565b611d23565b34801561098857600080fd5b506103e56103e881565b34801561099e57600080fd5b506011546104e19060ff1681565b3480156109b857600080fd5b506104136109c7366004613a6a565b611e9f565b3480156109d857600080fd5b506104136109e73660046136f9565b611f99565b3480156109f857600080fd5b506009546104459061ffff80821691620100008104821691600160201b9091041683565b348015610a2857600080fd5b50610413610a37366004613a9d565b612022565b348015610a4857600080fd5b506103e5610a57366004613a9d565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610a8e57600080fd5b50610413610a9d3660046137c1565b6120e6565b348015610aae57600080fd5b506104136124da565b348015610ac357600080fd5b50600c54600d54610ade916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016103c6565b348015610b0a57600080fd5b50610413610b19366004613acb565b612595565b348015610b2a57600080fd5b50600e546104e190610100900460ff1681565b348015610b4957600080fd5b50610413610b58366004613a33565b6127a5565b6017546001600160a01b03163314610b905760405162461bcd60e51b8152600401610b8790613afd565b60405180910390fd5b60155460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610be557600080fd5b505af1158015610bf9573d6000803e3d6000fd5b505050505050565b6000610c0e3384846127fa565b5060015b92915050565b6000610c266012600a613c22565b601454610c339190613c31565b905090565b6000610c466012600a613c22565b610c3390633b9aca00613c53565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610cb9576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610cb3908490613c6a565b90915550505b610cc48484846128f3565b949350505050565b6017546001600160a01b03163314610cf65760405162461bcd60e51b8152600401610b8790613afd565b6064610d046012600a613c22565b610d1290633b9aca00613c53565b610d1c9190613c31565b8183610d2a6012600a613c22565b610d3890633b9aca00613c53565b610d429190613c53565b610d4c9190613c31565b1015610db35760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610b87565b8082610dc16012600a613c22565b610dcf90633b9aca00613c53565b610dd99190613c53565b610de39190613c31565b6014555050565b6017546001600160a01b03163314610e145760405162461bcd60e51b8152600401610b8790613afd565b8051825114610e5d5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610b87565b60005b82518161ffff161015610f6257610e796012600a613c22565b828261ffff1681518110610e8f57610e8f613c7d565b6020026020010151610ea19190613c53565b610eaa33611796565b1015610eed5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610b87565b610f4f33848361ffff1681518110610f0757610f07613c7d565b60200260200101516012600a610f1d9190613c22565b858561ffff1681518110610f3357610f33613c7d565b6020026020010151610f459190613c53565b6000806001612da3565b5080610f5a81613c93565b915050610e60565b505050565b6000610f736000611796565b610f7e61dead611796565b610f889190613cb4565b610f946012600a613c22565b610fa290633b9aca00613c53565b610c339190613c6a565b6017546001600160a01b03163314610fd65760405162461bcd60e51b8152600401610b8790613afd565b600a5460ff161561101d5760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610b87565b6107d08361ffff161115801561103957506107d08261ffff1611155b801561104b57506103e88161ffff1611155b6110975760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610b87565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b6017546001600160a01b031633146110ff5760405162461bcd60e51b8152600401610b8790613afd565b6015546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561114d57600080fd5b505af1158015611161573d6000803e3d6000fd5b5050505050565b6017546001600160a01b031633146111925760405162461bcd60e51b8152600401610b8790613afd565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6017546001600160a01b031633146111e75760405162461bcd60e51b8152600401610b8790613afd565b6103e86111f66012600a613c22565b61120490633b9aca00613c53565b61120f906005613c53565b6112199190613c31565b81836112276012600a613c22565b61123590633b9aca00613c53565b61123f9190613c53565b6112499190613c31565b10156112bd5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610b87565b80826112cb6012600a613c22565b6112d990633b9aca00613c53565b6112e39190613c53565b6112ed9190613c31565b6013555050565b600b54600090612710908390611312906001600160a01b0316611796565b61131c9190613c53565b610c129190613c31565b6017546001600160a01b031633146113505760405162461bcd60e51b8152600401610b8790613afd565b609681111561139a5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610b87565b601255565b6017546001600160a01b031633146113c95760405162461bcd60e51b8152600401610b8790613afd565b6001600160a01b03811661141f5760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610b87565b61deac196001600160a01b0382160161147a5760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610b87565b601754611491906001600160a01b03166000611582565b61149c816001611582565b6017546000906114b4906001600160a01b0316611796565b11156114d6576017546114d4906001600160a01b031682610f4582611796565b505b601780546001600160a01b038381166001600160a01b031983161790925560155491169060ff6101009091041661153e576001600160a01b03808216600090815260046020526040808220805460ff1990811690915592851682529020805490911660011790555b816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6017546001600160a01b031633146115ac5760405162461bcd60e51b8152600401610b8790613afd565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6017546001600160a01b031633146116015760405162461bcd60e51b8152600401610b8790613afd565b60155460ff161561161157600080fd5b306001600160a01b0382160361165a5760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610b87565b6015805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156116e0575060408051601f3d908101601f191682019092526116dd91810190613cc7565b60015b6116e957600080fd5b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601754925461175993831692919004166000196127fa565b600a54610f6290309061010090046001600160a01b03166000196127fa565b50565b60006117896012600a613c22565b601354610c339190613c31565b6001600160a01b031660009081526020819052604090205490565b6017546001600160a01b031633146117db5760405162461bcd60e51b8152600401610b8790613afd565b60155460ff166118455760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610b87565b60175461185c906001600160a01b03166000611582565b601780546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6017546001600160a01b031633146118d45760405162461bcd60e51b8152600401610b8790613afd565b600a805460ff19166001179055565b6017546001600160a01b0316331461190d5760405162461bcd60e51b8152600401610b8790613afd565b8061196b576001600160a01b03828116600081815260016020526040808220805460ff1916905560155490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610bcb565b600254156119c4576203f480600254426119859190613c6a565b116119c45760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610b87565b6001600160a01b03821660009081526001602052604090205460ff1615611a2d5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610b87565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560155491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610bcb565b5050565b6017546000906001600160a01b03163314611abd5760405162461bcd60e51b8152600401610b8790613afd565b600a54611adc90309061010090046001600160a01b03166000196127fa565b50600190565b6017546001600160a01b03163314611b0c5760405162461bcd60e51b8152600401610b8790613afd565b60155460ff1615611b5f5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610b87565b601554610100900460ff16611bb65760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610b87565b6015546201000090046001600160a01b0316611be6576015805462010000600160b01b0319163062010000021790555b601554600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c5857600080fd5b505af1925050508015611c69575060015b50601554600b546001600160a01b03620100009092048216916325a71cae91611c929116611796565b6040518263ffffffff1660e01b8152600401611cb091815260200190565b60408051808303816000875af1925050508015611cea575060408051601f3d908101601f19168201909252611ce791810190613cf6565b60015b15611cf957600f919091556010555b6015805460ff1916600117905542601655565b6000611d193384846128f3565b5060019392505050565b6017546001600160a01b03163314611d4d5760405162461bcd60e51b8152600401610b8790613afd565b601554610100900460ff1615611db557306001600160a01b03821603611db55760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610b87565b6017546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e309190613d1a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f629190613d33565b6017546001600160a01b03163314611ec95760405162461bcd60e51b8152600401610b8790613afd565b6009805461ffff838116620100000263ffffffff1990921690851617179055611ef28183613d50565b6009805465ffff000000001916600160201b61ffff93841602179055600854600091611f279162010000810482169116613d50565b60095461ffff9182169250600160201b900416811015610f625760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610b87565b6017546001600160a01b03163314611fc35760405162461bcd60e51b8152600401610b8790613afd565b600e805461ff001916610100841515908102919091179091556011805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6017546001600160a01b0316331461204c5760405162461bcd60e51b8152600401610b8790613afd565b6001600160a01b0382161580159061206c57506001600160a01b03811615155b6120b85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610b87565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b6017546001600160a01b031633146121105760405162461bcd60e51b8152600401610b8790613afd565b601554610100900460ff16156121685760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610b87565b600a5461218690309061010090046001600160a01b031660006127fa565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ef9190613d72565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122609190613d72565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156122ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cf9190613d72565b600b546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661246557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561233a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235e9190613d72565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cf9190613d72565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561241c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124409190613d72565b600b80546001600160a01b0319166001600160a01b0392909216919091179055612481565b600b80546001600160a01b0319166001600160a01b0383161790555b600a8054610100600160a81b0319166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610f629230929104166000196127fa565b6017546001600160a01b031633146125045760405162461bcd60e51b8152600401610b8790613afd565b601554610100900460ff161561255c5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610b87565b6017546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611778573d6000803e3d6000fd5b6017546001600160a01b031633146125bf5760405162461bcd60e51b8152600401610b8790613afd565b82846125cd6012600a613c22565b6125db90633b9aca00613c53565b6125e59190613c53565b6125ef9190613c31565b600f5580826126006012600a613c22565b61260e90633b9aca00613c53565b6126189190613c53565b6126229190613c31565b6010819055600f5411156126825760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610b87565b600b546127109061269b906001600160a01b0316611796565b6126a6906096613c53565b6126b09190613c31565b601054111561270d5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610b87565b620f424061271d6012600a613c22565b61272b90633b9aca00613c53565b6127359190613c31565b60105410156127565760405162461bcd60e51b8152600401610b8790613d8f565b620f42406127666012600a613c22565b61277490633b9aca00613c53565b61277e9190613c31565b600f54101561279f5760405162461bcd60e51b8152600401610b8790613d8f565b50505050565b6017546001600160a01b031633146127cf5760405162461bcd60e51b8152600401610b8790613afd565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166128465760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b87565b6001600160a01b0382166128925760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610b87565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166129595760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b87565b6001600160a01b0383166129bb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b87565b60008211612a1d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b87565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612a4b5760019250612a79565b6001600160a01b03861660009081526001602052604090205460ff1615612a755760019150612a79565b5060015b612a838787613056565b15612cfa5760155460ff16612b845780612adf5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610b87565b6001600160a01b03871660009081526005602052604090205460ff16158015612b2157506001600160a01b03861660009081526005602052604090205460ff16155b15612b845760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610b87565b8280612b8d5750815b15612c3c576001600160a01b03871660009081526007602052604090205460ff16158015612bd457506001600160a01b03861660009081526007602052604090205460ff16155b15612c3c57601354851115612c3c5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b87565b600a546001600160a01b038781166101009092041614801590612c5d575081155b15612cfa576001600160a01b03861660009081526007602052604090205460ff16612cfa5760145485612c8f88611796565b612c999190613cb4565b1115612cfa5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610b87565b8115612d8a57600e5460ff16612d8a57600e54610100900460ff1615612d8a576000612d2530611796565b9050600f548110612d885760105460115460ff1615612d7257601254600b546127109190612d5b906001600160a01b0316611796565b612d659190613c53565b612d6f9190613c31565b90505b808210612d7d578091505b612d868261316d565b505b505b612d98878787868686612da3565b979650505050505050565b6000612daf8787613056565b15612e495760155460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612e32575060408051601f3d908101601f19168201909252612e2f91810190613d33565b60015b612e3b57600080fd5b905080612e4757600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612e8b57506001600160a01b03871660009081526006602052604090205460ff165b15612e94575060005b6001600160a01b03881660009081526020819052604081208054889290612ebc908490613c6a565b909155506000905081612ecf5786612edb565b612edb898888886134a0565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612f119190613cb4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f5d91815260200190565b60405180910390a3601554610100900460ff1661304757612f7e89896135ab565b601554610100900460ff16158015612f9b5750612f9b8989613056565b8015612fc057506001600160a01b03891660009081526005602052604090205460ff16155b8015612fe557506001600160a01b03881660009081526005602052604090205460ff16155b8015612fef575083155b156130475760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610b87565b50600198975050505050505050565b6017546000906001600160a01b0384811691161480159061308557506017546001600160a01b03838116911614155b801561309c57506017546001600160a01b03163214155b80156130c157506001600160a01b03821660009081526004602052604090205460ff16155b80156130e657506001600160a01b03831660009081526004602052604090205460ff16155b80156130fd57506001600160a01b03821661dead14155b801561311157506001600160a01b03821615155b801561312657506001600160a01b0383163014155b801561314657506015546001600160a01b03848116620100009092041614155b801561316657506015546001600160a01b03838116620100009092041614155b9392505050565b600e805460ff191660011790556040805160608101825260095461ffff808216835262010000820481166020840152600160201b90910416918101829052906000036131b95750613493565b306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461321c57306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061325157613251613c7d565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e89190613d72565b816001815181106132fb576132fb613c7d565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac94790613348908690600090869030904290600401613ddc565b600060405180830381600087803b15801561336257600080fd5b505af1925050508015613373575060015b61337e575050613493565b604082015182514791600091829161ffff9081169161339e911685613c53565b6133a89190613c31565b905060006133b68285613c6a565b602087015190915061ffff161561342457600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613419576040519150601f19603f3d011682016040523d82523d6000602084013e61341e565b606091505b50909350505b855161ffff161561348c57600d546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613481576040519150601f19603f3d011682016040523d82523d6000602084013e613486565b606091505b50909350505b5050505050505b50600e805460ff19169055565b60008083156134b6575060085461ffff166134df565b82156134cf575060085462010000900461ffff166134df565b50600854600160201b900461ffff165b6015546201000090046001600160a01b031630148015613500575046606114155b1561350a57506111945b8060000361351b5784915050610cc4565b600061271061352a8388613c53565b6135349190613c31565b905080156135a157306000908152602081905260408120805483929061355b908490613cb4565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612d988187613c6a565b601554610100900460ff161561360f5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610b87565b6136198282613056565b1580156136335750600b546001600160a01b038281169116145b15611a8c576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556015805461ff0019166101001790819055620100009004166136ab576015805462010000600160b01b0319163062010000021790555b600e805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612016565b801515811461177857600080fd5b6000806040838503121561370c57600080fd5b8235613717816136eb565b91506020830135613727816136eb565b809150509250929050565b600060208083528351808285015260005b8181101561375f57858101830151858201604001528201613743565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461177857600080fd5b600080604083850312156137a857600080fd5b82356137b381613780565b946020939093013593505050565b6000602082840312156137d357600080fd5b813561316681613780565b6000806000606084860312156137f357600080fd5b83356137fe81613780565b9250602084013561380e81613780565b929592945050506040919091013590565b6000806040838503121561383257600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561388057613880613841565b604052919050565b600067ffffffffffffffff8211156138a2576138a2613841565b5060051b60200190565b600082601f8301126138bd57600080fd5b813560206138d26138cd83613888565b613857565b82815260059290921b840181019181810190868411156138f157600080fd5b8286015b8481101561390c57803583529183019183016138f5565b509695505050505050565b6000806040838503121561392a57600080fd5b823567ffffffffffffffff8082111561394257600080fd5b818501915085601f83011261395657600080fd5b813560206139666138cd83613888565b82815260059290921b8401810191818101908984111561398557600080fd5b948201945b838610156139ac57853561399d81613780565b8252948201949082019061398a565b965050860135925050808211156139c257600080fd5b506139cf858286016138ac565b9150509250929050565b803561ffff811681146139eb57600080fd5b919050565b600080600060608486031215613a0557600080fd5b613a0e846139d9565b9250613a1c602085016139d9565b9150613a2a604085016139d9565b90509250925092565b60008060408385031215613a4657600080fd5b823561371781613780565b600060208284031215613a6357600080fd5b5035919050565b60008060408385031215613a7d57600080fd5b613a86836139d9565b9150613a94602084016139d9565b90509250929050565b60008060408385031215613ab057600080fd5b8235613abb81613780565b9150602083013561372781613780565b60008060008060808587031215613ae157600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613b79578160001904821115613b5f57613b5f613b28565b80851615613b6c57918102915b93841c9390800290613b43565b509250929050565b600082613b9057506001610c12565b81613b9d57506000610c12565b8160018114613bb35760028114613bbd57613bd9565b6001915050610c12565b60ff841115613bce57613bce613b28565b50506001821b610c12565b5060208310610133831016604e8410600b8410161715613bfc575081810a610c12565b613c068383613b3e565b8060001904821115613c1a57613c1a613b28565b029392505050565b600061316660ff841683613b81565b600082613c4e57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c1257610c12613b28565b81810381811115610c1257610c12613b28565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613caa57613caa613b28565b6001019392505050565b80820180821115610c1257610c12613b28565b60008060408385031215613cda57600080fd5b8251613ce581613780565b602084015190925061372781613780565b60008060408385031215613d0957600080fd5b505080516020909101519092909150565b600060208284031215613d2c57600080fd5b5051919050565b600060208284031215613d4557600080fd5b8151613166816136eb565b61ffff818116838216019080821115613d6b57613d6b613b28565b5092915050565b600060208284031215613d8457600080fd5b815161316681613780565b6020808252602d908201527f43616e6e6f74206265206c6f776572207468616e20302e3030303125206f662060408201526c3a37ba30b61039bab838363c9760991b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613e2c5784516001600160a01b031683529383019391830191600101613e07565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220a057ca4e9e16799c33c219e0045543ac1ecfef37989df06b8e7ddbd7d664367e64736f6c63430008130033

Deployed Bytecode Sourcemap

4090:22047:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5605:73;;;;;;;;;;;;5636:42;5605:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5605:73:0;;;;;;;;6071:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;6071:28:0;222:177:1;14442:153:0;;;;;;;;;;-1:-1:-1;14442:153:0;;;;;:::i;:::-;;:::i;:::-;;5073:107;;;;;;;;;;-1:-1:-1;5073:107:0;;;;;;;;;;;;;;;-1:-1:-1;;;5073:107:0;;;;;;;;;;1114:6:1;1147:15;;;1129:34;;1199:15;;;1194:2;1179:18;;1172:43;1251:15;;1231:18;;;1224:43;;;;1092:2;1077:18;5073:107:0;908:365:1;9832:80:0;;;;;;;;;;-1:-1:-1;9904:5:0;;;;;;;;;;;;-1:-1:-1;;;9904:5:0;;;;9832:80;;;;;;;:::i;5544:26::-;;;;;;;;;;-1:-1:-1;5544:26:0;;;;;;;-1:-1:-1;;;;;5544:26:0;;;5511;;;;;;;;;;-1:-1:-1;5511:26:0;;;;;;;;;;;2221:14:1;;2214:22;2196:41;;2184:2;2169:18;5511:26:0;2056:187:1;10440:161:0;;;;;;;;;;-1:-1:-1;10440:161:0;;;;;:::i;:::-;;:::i;13871:140::-;;;;;;;;;;-1:-1:-1;13871:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13969:34:0;13945:4;13969:34;;;:25;:34;;;;;;;;;13871:140;16625:114;;;;;;;;;;;;;:::i;9567:83::-;;;;;;;;;;;;;:::i;11110:306::-;;;;;;;;;;-1:-1:-1;11110:306:0;;;;;:::i;:::-;;:::i;16237:264::-;;;;;;;;;;-1:-1:-1;16237:264:0;;;;;:::i;:::-;;:::i;23849:447::-;;;;;;;;;;-1:-1:-1;23849:447:0;;;;;:::i;:::-;;:::i;6179:33::-;;;;;;;;;;;;;;;;14175:141;;;;;;;;;;;;;:::i;5308:42::-;;;;;;;;;;;;5346:4;5308:42;;6106:25;;;;;;;;;;;;;;;;9656:80;;;;;;;;;;-1:-1:-1;9656:80:0;;4771:2;6299:36:1;;6287:2;6272:18;9656:80:0;6157:184:1;14793:453:0;;;;;;;;;;-1:-1:-1;14793:453:0;;;;;:::i;:::-;;:::i;14324:110::-;;;;;;;;;;-1:-1:-1;14324:110:0;;;;;:::i;:::-;;:::i;13446:140::-;;;;;;;;;;-1:-1:-1;13446:140:0;;;;;:::i;:::-;;:::i;15956:273::-;;;;;;;;;;-1:-1:-1;15956:273:0;;;;;:::i;:::-;;:::i;5577:21::-;;;;;;;;;;-1:-1:-1;5577:21:0;;;;-1:-1:-1;;;;;5577:21:0;;;6343:34;;;;;;;;;;-1:-1:-1;6343:34:0;;;;;;;;16747:189;;;;;;;;;;-1:-1:-1;16747:189:0;;;;;:::i;:::-;;:::i;17649:217::-;;;;;;;;;;-1:-1:-1;17649:217:0;;;;;:::i;:::-;;:::i;8131:728::-;;;;;;;;;;-1:-1:-1;8131:728:0;;;;;:::i;:::-;;:::i;13594:127::-;;;;;;;;;;-1:-1:-1;13594:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13685:28:0;13661:4;13685:28;;;:19;:28;;;;;;;;;13594:127;6384:36;;;;;;;;;;-1:-1:-1;6384:36:0;;;;;;;;;;;13729:134;;;;;;;;;;-1:-1:-1;13729:134:0;;;;;:::i;:::-;;:::i;6457:26::-;;;;;;;;;;;;;;;;12741:557;;;;;;;;;;-1:-1:-1;12741:557:0;;;;;:::i;:::-;;:::i;13306:132::-;;;;;;;;;;-1:-1:-1;13306:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;13400:30:0;13376:4;13400:30;;;:21;:30;;;;;;;;;13306:132;16509:108;;;;;;;;;;;;;:::i;10142:117::-;;;;;;;;;;-1:-1:-1;10142:117:0;;;;;:::i;:::-;;:::i;8867:310::-;;;;;;;;;;;;;:::i;14603:182::-;;;;;;;;;;;;;:::i;12169:564::-;;;;;;;;;;-1:-1:-1;12169:564:0;;;;;:::i;:::-;;:::i;9918:79::-;;;;;;;;;;-1:-1:-1;9988:6:0;;-1:-1:-1;;;;;9988:6:0;9918:79;;10927:175;;;;;;;;;;;;;:::i;22652:695::-;;;;;;;;;;;;;:::i;9742:84::-;;;;;;;;;;-1:-1:-1;9816:7:0;;;;;;;;;;;;-1:-1:-1;;;9816:7:0;;;;9742:84;;10267:165;;;;;;;;;;-1:-1:-1;10267:165:0;;;;;:::i;:::-;;:::i;23545:296::-;;;;;;;;;;-1:-1:-1;23545:296:0;;;;;:::i;:::-;;:::i;5407:47::-;;;;;;;;;;;;5450:4;5407:47;;6138:34;;;;;;;;;;-1:-1:-1;6138:34:0;;;;;;;;15254:374;;;;;;;;;;-1:-1:-1;15254:374:0;;;;;:::i;:::-;;:::i;17874:263::-;;;;;;;;;;-1:-1:-1;17874:263:0;;;;;:::i;:::-;;:::i;5189:110::-;;;;;;;;;;-1:-1:-1;5189:110:0;;;;;;;;;;;;;;;-1:-1:-1;;;5189:110:0;;;;;;15636:312;;;;;;;;;;-1:-1:-1;15636:312:0;;;;;:::i;:::-;;:::i;10003:133::-;;;;;;;;;;-1:-1:-1;10003:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10105:19:0;;;10087:7;10105:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10003:133;11424:737;;;;;;;;;;-1:-1:-1;11424:737:0;;;;;:::i;:::-;;:::i;23355:182::-;;;;;;;;;;;;;:::i;5795:199::-;;;;;;;;;;-1:-1:-1;5795:199:0;;;;;;-1:-1:-1;;;;;5795:199:0;;;;;;;;;;;-1:-1:-1;;;;;8740:15:1;;;8722:34;;8792:15;;;;8787:2;8772:18;;8765:43;8657:18;5795:199:0;8478:336:1;16944:697:0;;;;;;;;;;-1:-1:-1;16944:697:0;;;;;:::i;:::-;;:::i;6025:39::-;;;;;;;;;;-1:-1:-1;6025:39:0;;;;;;;;;;;14019:148;;;;;;;;;;-1:-1:-1;14019:148:0;;;;;:::i;:::-;;:::i;14442:153::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;;;;;;;;;14537:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;14537:50:0;;9742:14:1;;9735:22;14537:50:0::1;::::0;::::1;9717:41:1::0;9801:14;;9794:22;9774:18;;;9767:50;14537:11:0;;;::::1;-1:-1:-1::0;;;;;14537:11:0::1;::::0;:26:::1;::::0;9690:18:1;;14537:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14442:153:::0;;:::o;10440:161::-;10517:4;10534:37;10543:10;10555:7;10564:6;10534:8;:37::i;:::-;-1:-1:-1;10589:4:0;10440:161;;;;;:::o;16625:114::-;16672:7;16717:13;4771:2;16717;:13;:::i;:::-;16699:14;;:32;;;;:::i;:::-;16692:39;;16625:114;:::o;9567:83::-;9622:7;4832:13;4771:2;4832;:13;:::i;:::-;4815:30;;4622:13;4815:30;:::i;11110:306::-;-1:-1:-1;;;;;11231:19:0;;11210:4;11231:19;;;:11;:19;;;;;;;;11251:10;11231:31;;;;;;;;-1:-1:-1;;11231:52:0;11227:126;;-1:-1:-1;;;;;11300:19:0;;;;;;:11;:19;;;;;;;;11320:10;11300:31;;;;;;;:41;;11335:6;;11300:19;:41;;11335:6;;11300:41;:::i;:::-;;;;-1:-1:-1;;11227:126:0;11372:36;11382:6;11390:9;11401:6;11372:9;:36::i;:::-;11365:43;11110:306;-1:-1:-1;;;;11110:306:0:o;16237:264::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;16379:3:::1;4832:13;4771:2;4832;:13;:::i;:::-;4815:30;::::0;4622:13:::1;4815:30;:::i;:::-;16369:13;;;;:::i;:::-;16357:7:::0;16346;4832:13:::1;4771:2;4832;:13;:::i;:::-;4815:30;::::0;4622:13:::1;4815:30;:::i;:::-;16336:17;;;;:::i;:::-;16335:29;;;;:::i;:::-;:48;;16327:109;;;::::0;-1:-1:-1;;;16327:109:0;;12073:2:1;16327:109:0::1;::::0;::::1;12055:21:1::0;12112:2;12092:18;;;12085:30;12151:34;12131:18;;;12124:62;-1:-1:-1;;;12202:18:1;;;12195:46;12258:19;;16327:109:0::1;11871:412:1::0;16327:109:0::1;16486:7:::0;16475;4832:13:::1;4771:2;4832;:13;:::i;:::-;4815:30;::::0;4622:13:::1;4815:30;:::i;:::-;16465:17;;;;:::i;:::-;16464:29;;;;:::i;:::-;16447:14;:46:::0;-1:-1:-1;;16237:264:0:o;23849:447::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;23984:7:::1;:14;23965:8;:15;:33;23957:67;;;::::0;-1:-1:-1;;;23957:67:0;;12490:2:1;23957:67:0::1;::::0;::::1;12472:21:1::0;12529:2;12509:18;;;12502:30;-1:-1:-1;;;12548:18:1;;;12541:51;12609:18;;23957:67:0::1;12288:345:1::0;23957:67:0::1;24040:8;24035:254;24058:8;:15;24054:1;:19;;;24035:254;;;24139:13;4771:2;24139;:13;:::i;:::-;24128:7;24136:1;24128:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24103:21;24113:10;24103:9;:21::i;:::-;:49;;24095:80;;;::::0;-1:-1:-1;;;24095:80:0;;12972:2:1;24095:80:0::1;::::0;::::1;12954:21:1::0;13011:2;12991:18;;;12984:30;-1:-1:-1;;;13030:18:1;;;13023:48;13088:18;;24095:80:0::1;12770:342:1::0;24095:80:0::1;24190:87;24207:10;24219:8;24228:1;24219:11;;;;;;;;;;:::i;:::-;;;;;;;4771:2;24243;:13;;;;:::i;:::-;24232:7;24240:1;24232:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;24258:5;24265::::0;24272:4:::1;24190:16;:87::i;:::-;-1:-1:-1::0;24075:3:0;::::1;::::0;::::1;:::i;:::-;;;;24035:254;;;;23849:447:::0;;:::o;14175:141::-;14228:7;14285:21;14303:1;14285:9;:21::i;:::-;14267:15;5636:42;14267:9;:15::i;:::-;:39;;;;:::i;:::-;4832:13;4771:2;4832;:13;:::i;:::-;4815:30;;4622:13;4815:30;:::i;:::-;14256:51;;;;:::i;14793:453::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;14901:14:::1;::::0;::::1;;14900:15;14892:45;;;::::0;-1:-1:-1;;;14892:45:0;;13651:2:1;14892:45:0::1;::::0;::::1;13633:21:1::0;13690:2;13670:18;;;13663:30;-1:-1:-1;;;13709:18:1;;;13702:47;13766:18;;14892:45:0::1;13449:341:1::0;14892:45:0::1;5346:4;14956:6;:21;;;;:65;;;;;5396:4;14998:7;:23;;;;14956:65;:117;;;;;5450:4;15042:11;:31;;;;14956:117;14948:170;;;::::0;-1:-1:-1;;;14948:170:0;;13997:2:1;14948:170:0::1;::::0;::::1;13979:21:1::0;14036:2;14016:18;;;14009:30;14075:25;14055:18;;;14048:53;14118:18;;14948:170:0::1;13795:347:1::0;14948:170:0::1;15129:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15165:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15203:35:0::1;-1:-1:-1::0;;;15203:35:0;;;::::1;;::::0;;;::::1;::::0;;14793:453::o;14324:110::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;14393:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;14393:33:0;;-1:-1:-1;;;;;178:32:1;;;14393:33:0::1;::::0;::::1;160:51:1::0;14393:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;14393:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14324:110:::0;:::o;13446:140::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13538:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13538:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13446:140::o;15956:273::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;16101:4:::1;4832:13;4771:2;4832;:13;:::i;:::-;4815:30;::::0;4622:13:::1;4815:30;:::i;:::-;16087:11;::::0;16097:1:::1;16087:11;:::i;:::-;:18;;;;:::i;:::-;16075:7:::0;16064;4832:13:::1;4771:2;4832;:13;:::i;:::-;4815:30;::::0;4622:13:::1;4815:30;:::i;:::-;16054:17;;;;:::i;:::-;16053:29;;;;:::i;:::-;:53;;16045:121;;;::::0;-1:-1:-1;;;16045:121:0;;14349:2:1;16045:121:0::1;::::0;::::1;14331:21:1::0;14388:2;14368:18;;;14361:30;14427:34;14407:18;;;14400:62;14498:25;14478:18;;;14471:53;14541:19;;16045:121:0::1;14147:419:1::0;16045:121:0::1;16214:7:::0;16203;4832:13:::1;4771:2;4832;:13;:::i;:::-;4815:30;::::0;4622:13:::1;4815:30;:::i;:::-;16193:17;;;;:::i;:::-;16192:29;;;;:::i;:::-;16177:12;:44:::0;-1:-1:-1;;15956:273:0:o;16747:189::-;16876:6;;16838:7;;5497:5;;16886:21;;16866:17;;-1:-1:-1;;;;;16876:6:0;16866:9;:17::i;:::-;:41;;;;:::i;:::-;16865:62;;;;:::i;17649:217::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;17779:3:::1;17753:22;:29;;17745:64;;;::::0;-1:-1:-1;;;17745:64:0;;14773:2:1;17745:64:0::1;::::0;::::1;14755:21:1::0;14812:2;14792:18;;;14785:30;-1:-1:-1;;;14831:18:1;;;14824:52;14893:18;;17745:64:0::1;14571:346:1::0;17745:64:0::1;17820:13;:38:::0;17649:217::o;8131:728::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8210:22:0;::::1;8202:66;;;::::0;-1:-1:-1;;;8202:66:0;;15124:2:1;8202:66:0::1;::::0;::::1;15106:21:1::0;15163:2;15143:18;;;15136:30;15202:33;15182:18;;;15175:61;15253:18;;8202:66:0::1;14922:355:1::0;8202:66:0::1;-1:-1:-1::0;;;;;;;8287:16:0;::::1;::::0;8279:60:::1;;;::::0;-1:-1:-1;;;8279:60:0;;15124:2:1;8279:60:0::1;::::0;::::1;15106:21:1::0;15163:2;15143:18;;;15136:30;15202:33;15182:18;;;15175:61;15253:18;;8279:60:0::1;14922:355:1::0;8279:60:0::1;8370:6;::::0;8350:34:::1;::::0;-1:-1:-1;;;;;8370:6:0::1;;8350:19;:34::i;:::-;8395:35;8415:8;8425:4;8395:19;:35::i;:::-;8465:6;::::0;8475:1:::1;::::0;8455:17:::1;::::0;-1:-1:-1;;;;;8465:6:0::1;8455:9;:17::i;:::-;:21;8451:127;;;8510:6;::::0;8493:73:::1;::::0;-1:-1:-1;;;;;8510:6:0::1;8518:8:::0;8528:17:::1;8510:6:::0;8528:9:::1;:17::i;8493:73::-;;8451:127;8617:6;::::0;;-1:-1:-1;;;;;8634:17:0;;::::1;-1:-1:-1::0;;;;;;8634:17:0;::::1;;::::0;;;8667:16:::1;::::0;8617:6;::::1;::::0;8667:16:::1;8617:6;8667:16:::0;;::::1;;8662:134;;-1:-1:-1::0;;;;;8700:27:0;;::::1;8730:5;8700:27:::0;;;:17:::1;:27;::::0;;;;;:35;;-1:-1:-1;;8700:35:0;;::::1;::::0;;;8750:27;;::::1;::::0;;;;:34;;;;::::1;8700:35:::0;8750:34:::1;::::0;;8662:134:::1;8842:8;-1:-1:-1::0;;;;;8811:40:0::1;8832:8;-1:-1:-1::0;;;;;8811:40:0::1;;;;;;;;;;;8191:668;8131:728:::0;:::o;13729:134::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13817:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13817:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13729:134::o;12741:557::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;12816:14:::1;::::0;::::1;;12815:15;12807:24;;;::::0;::::1;;12866:4;-1:-1:-1::0;;;;;12850:21:0;::::1;::::0;12842:48:::1;;;::::0;-1:-1:-1;;;12842:48:0;;15484:2:1;12842:48:0::1;::::0;::::1;15466:21:1::0;15523:2;15503:18;;;15496:30;-1:-1:-1;;;15542:18:1;;;15535:44;15596:18;;12842:48:0::1;15282:338:1::0;12842:48:0::1;12901:11;:31:::0;;-1:-1:-1;;;;;;12901:31:0::1;::::0;-1:-1:-1;;;;;12901:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12947:23:::1;::::0;;-1:-1:-1;;;12947:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12947:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12947:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12947:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12943:348;;13280:8;::::0;::::1;12943:348;13034:9;:29:::0;;-1:-1:-1;;;;;;13034:29:0::1;;-1:-1:-1::0;;;;;13034:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13065:6:::1;:22:::0;;-1:-1:-1;;;;;;13065:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13089:15:0;;;-1:-1:-1;13089:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13089:22:0::1;::::0;;::::1;::::0;;13136:6:::1;::::0;13152:9;;13127:55:::1;::::0;13136:6;::::1;::::0;13152:9;;::::1;;-1:-1:-1::0;;13127:8:0::1;:55::i;:::-;13229:9;::::0;13197:62:::1;::::0;13214:4:::1;::::0;13229:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13229:9:0::1;-1:-1:-1::0;;13197:8:0::1;:62::i;12943:348::-;12741:557:::0;:::o;16509:108::-;16552:7;16595:13;4771:2;16595;:13;:::i;:::-;16579:12;;:30;;;;:::i;10142:117::-;-1:-1:-1;;;;;10235:16:0;10208:7;10235:16;;;;;;;;;;;;10142:117::o;8867:310::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;8934:14:::1;::::0;::::1;;8926:74;;;::::0;-1:-1:-1;;;8926:74:0;;16217:2:1;8926:74:0::1;::::0;::::1;16199:21:1::0;16256:2;16236:18;;;16229:30;16295:34;16275:18;;;16268:62;-1:-1:-1;;;16346:18:1;;;16339:45;16401:19;;8926:74:0::1;16015:411:1::0;8926:74:0::1;9031:6;::::0;9011:34:::1;::::0;-1:-1:-1;;;;;9031:6:0::1;;9011:19;:34::i;:::-;9075:6;::::0;;-1:-1:-1;;;;;;9092:19:0;::::1;::::0;;;9127:42:::1;::::0;-1:-1:-1;;;;;9075:6:0;;::::1;::::0;9056:16:::1;::::0;9075:6;;9127:42:::1;::::0;9056:16;;9127:42:::1;8915:262;8867:310::o:0;14603:182::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;14756:14:::1;:21:::0;;-1:-1:-1;;14756:21:0::1;14773:4;14756:21;::::0;;14603:182::o;12169:564::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;12251:7:::1;12246:480;;-1:-1:-1::0;;;;;12275:13:0;;::::1;12291:5;12275:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12275:21:0::1;::::0;;12311:11:::1;::::0;:34;;-1:-1:-1;;;12311:34:0;;::::1;::::0;::::1;16599:51:1::0;;;;16666:18;;;16659:50;;;;12311:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16572:18:1;;12311:34:0::1;16431:284:1::0;12246:480:0::1;12382:17;::::0;:22;12378:135:::1;;12471:6;12451:17;;12433:15;:35;;;;:::i;:::-;:44;12425:72;;;::::0;-1:-1:-1;;;12425:72:0;;16922:2:1;12425:72:0::1;::::0;::::1;16904:21:1::0;16961:2;16941:18;;;16934:30;-1:-1:-1;;;16980:18:1;;;16973:45;17035:18;;12425:72:0::1;16720:339:1::0;12425:72:0::1;-1:-1:-1::0;;;;;12536:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12535:14;12527:54;;;::::0;-1:-1:-1;;;12527:54:0;;17266:2:1;12527:54:0::1;::::0;::::1;17248:21:1::0;17305:2;17285:18;;;17278:30;17344:29;17324:18;;;17317:57;17391:18;;12527:54:0::1;17064:351:1::0;12527:54:0::1;-1:-1:-1::0;;;;;12596:13:0;;::::1;;::::0;;;12612:4:::1;12596:13;::::0;;;;;;;;:20;;-1:-1:-1;;12596:20:0::1;::::0;::::1;::::0;;12651:15:::1;12631:17;:35:::0;12681:11:::1;::::0;:33;;-1:-1:-1;;;12681:33:0;;::::1;::::0;::::1;16599:51:1::0;;;;16666:18;;;16659:50;12681:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16572:18:1;;12681:33:0::1;16431:284:1::0;12246:480:0::1;12169:564:::0;;:::o;10927:175::-;7985:6;;10993:4;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;11042:9:::1;::::0;11010:62:::1;::::0;11027:4:::1;::::0;11042:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11042:9:0::1;-1:-1:-1::0;;11010:8:0::1;:62::i;:::-;-1:-1:-1::0;11090:4:0::1;10927:175:::0;:::o;22652:695::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;22714:14:::1;::::0;::::1;;22713:15;22705:52;;;::::0;-1:-1:-1;;;22705:52:0;;17622:2:1;22705:52:0::1;::::0;::::1;17604:21:1::0;17661:2;17641:18;;;17634:30;17700:26;17680:18;;;17673:54;17744:18;;22705:52:0::1;17420:348:1::0;22705:52:0::1;22776:16;::::0;::::1;::::0;::::1;;;22768:53;;;::::0;-1:-1:-1;;;22768:53:0;;17975:2:1;22768:53:0::1;::::0;::::1;17957:21:1::0;18014:2;17994:18;;;17987:30;18053:26;18033:18;;;18026:54;18097:18;;22768:53:0::1;17773:348:1::0;22768:53:0::1;22844:11;::::0;;;::::1;-1:-1:-1::0;;;;;22844:11:0::1;22832:106;;22886:11;:40:::0;;-1:-1:-1;;;;;;22886:40:0::1;22920:4;22886:40:::0;::::1;;::::0;;22832:106:::1;22952:11;::::0;22974:6:::1;::::0;22952:87:::1;::::0;-1:-1:-1;;;22952:87:0;;-1:-1:-1;;;;;22974:6:0;;::::1;22952:87;::::0;::::1;18349:51:1::0;18448:10;22989:12:0::1;18436:23:1::0;18416:18;;;18409:51;18508:18;23011:15:0::1;18496:31:1::0;18476:18;;;18469:59;4771:2:0::1;18544:18:1::0;;;18537:45;22952:11:0;;;::::1;;::::0;:21:::1;::::0;18321:19:1;;22952:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;22948:103:::0;23065:11:::1;::::0;23096:6:::1;::::0;-1:-1:-1;;;;;23065:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;23086:17:::1;::::0;23096:6:::1;23086:9;:17::i;:::-;23065:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;23065:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;23065:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;23065:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;23061:207:::0;::::1;;23176:13;:29:::0;;;;23220:10:::1;:27:::0;23061:207:::1;23278:14;:21:::0;;-1:-1:-1;;23278:21:0::1;23295:4;23278:21;::::0;;23324:15:::1;23310:11;:29:::0;22652:695::o;10267:165::-;10345:4;10362:40;10372:10;10384:9;10395:6;10362:9;:40::i;:::-;-1:-1:-1;10420:4:0;;10267:165;-1:-1:-1;;;10267:165:0:o;23545:296::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;23623:16:::1;::::0;::::1;::::0;::::1;;;23619:111;;;23681:4;-1:-1:-1::0;;;;;23664:22:0;::::1;::::0;23656:62:::1;;;::::0;-1:-1:-1;;;23656:62:0;;19045:2:1;23656:62:0::1;::::0;::::1;19027:21:1::0;19084:2;19064:18;;;19057:30;19123:29;19103:18;;;19096:57;19170:18;;23656:62:0::1;18843:351:1::0;23656:62:0::1;23794:6;::::0;23802:30:::1;::::0;-1:-1:-1;;;23802:30:0;;23826:4:::1;23802:30;::::0;::::1;160:51:1::0;23762:5:0;;-1:-1:-1;;;;;23779:14:0;;::::1;::::0;::::1;::::0;23794:6;;;::::1;::::0;23779:14;;23802:15:::1;::::0;133:18:1;;23802:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23779:54;::::0;-1:-1:-1;;;;;;23779:54:0::1;::::0;;;;;;-1:-1:-1;;;;;19580:32:1;;;23779:54:0::1;::::0;::::1;19562:51:1::0;19629:18;;;19622:34;19535:18;;23779:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15254:374::-:0;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;15341:7:::1;:33:::0;;::::1;15385:29:::0;;::::1;::::0;::::1;-1:-1:-1::0;;15385:29:0;;;15341:33;;::::1;15385:29:::0;::::1;::::0;;15445:23:::1;15405:9:::0;15363:11;15445:23:::1;:::i;:::-;15425:7;:43:::0;;-1:-1:-1;;15425:43:0::1;-1:-1:-1::0;;;15425:43:0::1;::::0;;::::1;;;::::0;;15514:9:::1;:17:::0;-1:-1:-1;;15495:36:0::1;::::0;15514:17;;::::1;::::0;::::1;::::0;15495:16:::1;:36;:::i;:::-;15550:7;:17:::0;15479:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;15550:17:0;::::1;;:26:::0;-1:-1:-1;15550:26:0::1;15542:78;;;::::0;-1:-1:-1;;;15542:78:0;;20292:2:1;15542:78:0::1;::::0;::::1;20274:21:1::0;20331:2;20311:18;;;20304:30;20370:34;20350:18;;;20343:62;-1:-1:-1;;;20421:18:1;;;20414:37;20468:19;;15542:78:0::1;20090:403:1::0;17874:263:0;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;17983:19:::1;:33:::0;;-1:-1:-1;;17983:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;18027:22:::1;:47:::0;;-1:-1:-1;;18027:47:0::1;::::0;::::1;;;::::0;;18090:39:::1;::::0;2196:41:1;;;18090:39:0::1;::::0;2184:2:1;2169:18;18090:39:0::1;;;;;;;;17874:263:::0;;:::o;15636:312::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15750:23:0;::::1;::::0;;::::1;::::0;:52:::1;;-1:-1:-1::0;;;;;;15777:25:0;::::1;::::0;::::1;15750:52;15742:88;;;::::0;-1:-1:-1;;;15742:88:0;;20700:2:1;15742:88:0::1;::::0;::::1;20682:21:1::0;20739:2;20719:18;;;20712:30;20778:25;20758:18;;;20751:53;20821:18;;15742:88:0::1;20498:347:1::0;15742:88:0::1;15841:11;:42:::0;;-1:-1:-1;;;;;15841:42:0;;::::1;-1:-1:-1::0;;;;;;15841:42:0;;::::1;;::::0;;;15894:23;:46;;;;;::::1;::::0;::::1;;::::0;;15636:312::o;11424:737::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;11504:16:::1;::::0;::::1;::::0;::::1;;;11503:17;11495:60;;;::::0;-1:-1:-1;;;11495:60:0;;21052:2:1;11495:60:0::1;::::0;::::1;21034:21:1::0;21091:2;21071:18;;;21064:30;21130:32;21110:18;;;21103:60;21180:18;;11495:60:0::1;20850:354:1::0;11495:60:0::1;11598:9;::::0;11566:46:::1;::::0;11583:4:::1;::::0;11598:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11598:9:0::1;11610:1;11566:8;:46::i;:::-;11623:20;11656:9;11623:43;;11677:16;11707:10;-1:-1:-1::0;;;;;11707:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11696:40:0::1;;11745:4;11752:10;-1:-1:-1::0;;;;;11752:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11696:74;::::0;-1:-1:-1;;;;;;11696:74:0::1;::::0;;;;;;-1:-1:-1;;;;;8740:15:1;;;11696:74:0::1;::::0;::::1;8722:34:1::0;8792:15;;8772:18;;;8765:43;8657:18;;11696:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11789:6;::::0;-1:-1:-1;;;;;11789:6:0;;::::1;11799:5;11781:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;11781:23:0::1;::::0;;11677:93;;-1:-1:-1;11819:22:0;::::1;11815:200;;11878:10;-1:-1:-1::0;;;;;11878:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11867:43:0::1;;11919:4;11926:10;-1:-1:-1::0;;;;;11926:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11867:77;::::0;-1:-1:-1;;;;;;11867:77:0::1;::::0;;;;;;-1:-1:-1;;;;;8740:15:1;;;11867:77:0::1;::::0;::::1;8722:34:1::0;8792:15;;8772:18;;;8765:43;8657:18;;11867:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11858:6;:86:::0;;-1:-1:-1;;;;;;11858:86:0::1;-1:-1:-1::0;;;;;11858:86:0;;;::::1;::::0;;;::::1;::::0;;11815:200:::1;;;11986:6;:17:::0;;-1:-1:-1;;;;;;11986:17:0::1;-1:-1:-1::0;;;;;11986:17:0;::::1;;::::0;;11815:200:::1;12025:9;:22:::0;;-1:-1:-1;;;;;;12025:22:0::1;;-1:-1:-1::0;;;;;12025:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12066:6:::1;::::0;;::::1;-1:-1:-1::0;12058:15:0;;;-1:-1:-1;12058:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12058:22:0::1;::::0;;::::1;::::0;;12123:9;;12091:62:::1;::::0;12108:4:::1;::::0;12123:9;::::1;;-1:-1:-1::0;;12091:8:0::1;:62::i;23355:182::-:0;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;23422:16:::1;::::0;::::1;::::0;::::1;;;23421:17;23413:58;;;::::0;-1:-1:-1;;;23413:58:0;;21976:2:1;23413:58:0::1;::::0;::::1;21958:21:1::0;22015:2;21995:18;;;21988:30;22054;22034:18;;;22027:58;22102:18;;23413:58:0::1;21774:352:1::0;23413:58:0::1;23490:6;::::0;23482:47:::1;::::0;-1:-1:-1;;;;;23490:6:0;;::::1;::::0;23507:21:::1;23482:47:::0;::::1;;;::::0;23490:6:::1;23482:47:::0;23490:6;23482:47;23507:21;23490:6;23482:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;16944:697:::0;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;17144:16;17124;4832:13:::1;4771:2;4832;:13;:::i;:::-;4815:30;::::0;4622:13:::1;4815:30;:::i;:::-;17114:26;;;;:::i;:::-;17113:47;;;;:::i;:::-;17097:13;:63:::0;17212:13;17195;4832::::1;4771:2;4832;:13;:::i;:::-;4815:30;::::0;4622:13:::1;4815:30;:::i;:::-;17185:23;;;;:::i;:::-;17184:41;;;;:::i;:::-;17171:10;:54:::0;;;17244:13:::1;::::0;:27:::1;;17236:73;;;::::0;-1:-1:-1;;;17236:73:0;;22333:2:1;17236:73:0::1;::::0;::::1;22315:21:1::0;22372:2;22352:18;;;22345:30;22411:34;22391:18;;;22384:62;-1:-1:-1;;;22462:18:1;;;22455:31;22503:19;;17236:73:0::1;22131:397:1::0;17236:73:0::1;17353:6;::::0;5497:5:::1;::::0;17343:17:::1;::::0;-1:-1:-1;;;;;17353:6:0::1;17343:9;:17::i;:::-;:23;::::0;17363:3:::1;17343:23;:::i;:::-;17342:44;;;;:::i;:::-;17328:10;;:58;;17320:106;;;::::0;-1:-1:-1;;;17320:106:0;;22735:2:1;17320:106:0::1;::::0;::::1;22717:21:1::0;22774:2;22754:18;;;22747:30;22813:34;22793:18;;;22786:62;-1:-1:-1;;;22864:18:1;;;22857:33;22907:19;;17320:106:0::1;22533:399:1::0;17320:106:0::1;17469:9;4832:13;4771:2;4832;:13;:::i;:::-;4815:30;::::0;4622:13:::1;4815:30;:::i;:::-;17459:19;;;;:::i;:::-;17445:10;;:33;;17437:91;;;;-1:-1:-1::0;;;17437:91:0::1;;;;;;;:::i;:::-;17574:9;4832:13;4771:2;4832;:13;:::i;:::-;4815:30;::::0;4622:13:::1;4815:30;:::i;:::-;17564:19;;;;:::i;:::-;17547:13;;:36;;17539:94;;;;-1:-1:-1::0;;;17539:94:0::1;;;;;;;:::i;:::-;16944:697:::0;;;;:::o;14019:148::-;7985:6;;-1:-1:-1;;;;;7985:6:0;7995:10;7985:20;7977:50;;;;-1:-1:-1;;;7977:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14115:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14115:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14019:148::o;10609:310::-;-1:-1:-1;;;;;10704:20:0;;10696:52;;;;-1:-1:-1;;;10696:52:0;;23553:2:1;10696:52:0;;;23535:21:1;23592:2;23572:18;;;23565:30;-1:-1:-1;;;23611:18:1;;;23604:49;23670:18;;10696:52:0;23351:343:1;10696:52:0;-1:-1:-1;;;;;10767:21:0;;10759:53;;;;-1:-1:-1;;;10759:53:0;;23553:2:1;10759:53:0;;;23535:21:1;23592:2;23572:18;;;23565:30;-1:-1:-1;;;23611:18:1;;;23604:49;23670:18;;10759:53:0;23351:343:1;10759:53:0;-1:-1:-1;;;;;10825:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10878:33;;368:25:1;;;10878:33:0;;341:18:1;10878:33:0;;;;;;;10609:310;;;:::o;18599:2176::-;18678:4;-1:-1:-1;;;;;18703:18:0;;18695:68;;;;-1:-1:-1;;;18695:68:0;;23901:2:1;18695:68:0;;;23883:21:1;23940:2;23920:18;;;23913:30;23979:34;23959:18;;;23952:62;-1:-1:-1;;;24030:18:1;;;24023:35;24075:19;;18695:68:0;23699:401:1;18695:68:0;-1:-1:-1;;;;;18782:16:0;;18774:64;;;;-1:-1:-1;;;18774:64:0;;24307:2:1;18774:64:0;;;24289:21:1;24346:2;24326:18;;;24319:30;24385:34;24365:18;;;24358:62;-1:-1:-1;;;24436:18:1;;;24429:33;24479:19;;18774:64:0;24105:399:1;18774:64:0;18866:1;18857:6;:10;18849:64;;;;-1:-1:-1;;;18849:64:0;;24711:2:1;18849:64:0;;;24693:21:1;24750:2;24730:18;;;24723:30;24789:34;24769:18;;;24762:62;-1:-1:-1;;;24840:18:1;;;24833:39;24889:19;;18849:64:0;24509:405:1;18849:64:0;-1:-1:-1;;;;;19012:13:0;;18924:8;19012:13;;;:7;:13;;;;;;18924:8;;;;19012:13;;19008:162;;;19048:4;19042:10;;19008:162;;;-1:-1:-1;;;;;19074:11:0;;;;;;:7;:11;;;;;;;;19070:100;;;19109:4;19102:11;;19070:100;;;-1:-1:-1;19154:4:0;19070:100;19184:20;19195:4;19201:2;19184:10;:20::i;:::-;19180:874;;;19225:14;;;;19221:319;;19265:5;19260:265;;19295:34;;-1:-1:-1;;;19295:34:0;;25121:2:1;19295:34:0;;;25103:21:1;25160:2;25140:18;;;25133:30;25199:26;25179:18;;;25172:54;25243:18;;19295:34:0;24919:348:1;19260:265:0;-1:-1:-1;;;;;19360:31:0;;;;;;:25;:31;;;;;;;;19359:32;:66;;;;-1:-1:-1;;;;;;19396:29:0;;;;;;:25;:29;;;;;;;;19395:30;19359:66;19355:170;;;19450:55;;-1:-1:-1;;;19450:55:0;;25474:2:1;19450:55:0;;;25456:21:1;25513:2;25493:18;;;25486:30;25552:34;25532:18;;;25525:62;-1:-1:-1;;;25603:18:1;;;25596:43;25656:19;;19450:55:0;25272:409:1;19355:170:0;19558:3;:11;;;;19565:4;19558:11;19554:232;;;-1:-1:-1;;;;;19594:27:0;;;;;;:21;:27;;;;;;;;19593:28;:58;;;;-1:-1:-1;;;;;;19626:25:0;;;;;;:21;:25;;;;;;;;19625:26;19593:58;19589:182;;;19694:12;;19684:6;:22;;19676:75;;;;-1:-1:-1;;;19676:75:0;;25888:2:1;19676:75:0;;;25870:21:1;25927:2;25907:18;;;25900:30;25966:34;25946:18;;;25939:62;-1:-1:-1;;;26017:18:1;;;26010:38;26065:19;;19676:75:0;25686:404:1;19676:75:0;19818:9;;-1:-1:-1;;;;;19804:24:0;;;19818:9;;;;;19804:24;;;;:33;;;19833:4;19832:5;19804:33;19800:243;;;-1:-1:-1;;;;;19863:25:0;;;;;;:21;:25;;;;;;;;19858:170;;19947:14;;19937:6;19921:13;19931:2;19921:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;19913:95;;;;-1:-1:-1;;;19913:95:0;;26297:2:1;19913:95:0;;;26279:21:1;26336:2;26316:18;;;26309:30;26375:34;26355:18;;;26348:62;-1:-1:-1;;;26426:18:1;;;26419:40;26476:19;;19913:95:0;26095:406:1;19913:95:0;20070:4;20066:632;;;20096:6;;;;20091:596;;20127:19;;;;;;;20123:549;;;20171:28;20202:24;20220:4;20202:9;:24::i;:::-;20171:55;;20277:13;;20253:20;:37;20249:404;;20337:10;;20378:22;;;;20374:97;;;20435:13;;20425:6;;5497:5;;20435:13;20415:17;;-1:-1:-1;;;;;20425:6:0;20415:9;:17::i;:::-;:33;;;;:::i;:::-;20414:54;;;;:::i;:::-;20404:64;;20374:97;20525:7;20501:20;:31;20497:72;;20559:7;20536:30;;20497:72;20595:34;20608:20;20595:12;:34::i;:::-;20292:361;20249:404;20148:524;20123:549;20715:52;20732:4;20738:2;20742:6;20750:3;20755:4;20761:5;20715:16;:52::i;:::-;20708:59;18599:2176;-1:-1:-1;;;;;;;18599:2176:0:o;24304:1055::-;24423:4;24444:20;24455:4;24461:2;24444:10;:20::i;:::-;24440:228;;;24499:11;;:39;;-1:-1:-1;;;24499:39:0;;-1:-1:-1;;;;;26764:15:1;;;24499:39:0;;;26746:34:1;26816:15;;;26796:18;;;26789:43;26848:18;;;26841:34;;;24468:12:0;;24499:11;;;;;:21;;26681:18:1;;24499:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24499:39:0;;;;;;;;-1:-1:-1;;24499:39:0;;;;;;;;;;;;:::i;:::-;;;24495:122;;24606:8;;;24495:122;24589:5;-1:-1:-1;24635:7:0;24631:26;;24646:8;;;24631:26;24466:202;24440:228;-1:-1:-1;;;;;24712:25:0;;24678:12;24712:25;;;:19;:25;;;;;;24693:4;;24712:25;;;:52;;-1:-1:-1;;;;;;24741:23:0;;;;;;:19;:23;;;;;;;;24712:52;24708:99;;;-1:-1:-1;24790:5:0;24708:99;-1:-1:-1;;;;;24817:13:0;;:7;:13;;;;;;;;;;:23;;24834:6;;24817:7;:23;;24834:6;;24817:23;:::i;:::-;;;;-1:-1:-1;24851:22:0;;-1:-1:-1;24877:7:0;24876:55;;24925:6;24876:55;;;24888:34;24898:4;24904:6;24912:3;24917:4;24888:9;:34::i;:::-;24851:80;;24957:14;24942:7;:11;24950:2;-1:-1:-1;;;;;24942:11:0;-1:-1:-1;;;;;24942:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;25002:2;-1:-1:-1;;;;;24987:34:0;24996:4;-1:-1:-1;;;;;24987:34:0;;25006:14;24987:34;;;;368:25:1;;356:2;341:18;;222:177;24987:34:0;;;;;;;;25037:16;;;;;;;25032:298;;25070:28;25089:4;25095:2;25070:18;:28::i;:::-;25118:16;;;;;;;25117:17;:41;;;;;25138:20;25149:4;25155:2;25138:10;:20::i;:::-;25117:77;;;;-1:-1:-1;;;;;;25163:31:0;;;;;;:25;:31;;;;;;;;25162:32;25117:77;:111;;;;-1:-1:-1;;;;;;25199:29:0;;;;;;:25;:29;;;;;;;;25198:30;25117:111;:121;;;;;25233:5;25232:6;25117:121;25113:206;;;25259:44;;-1:-1:-1;;;25259:44:0;;27088:2:1;25259:44:0;;;27070:21:1;27127:2;27107:18;;;27100:30;27166:34;27146:18;;;27139:62;-1:-1:-1;;;27217:18:1;;;27210:32;27259:19;;25259:44:0;26886:398:1;25113:206:0;-1:-1:-1;25347:4:0;;24304:1055;-1:-1:-1;;;;;;;;24304:1055:0:o;18145:446::-;18246:6;;18214:4;;-1:-1:-1;;;;;18238:14:0;;;18246:6;;18238:14;;;;:43;;-1:-1:-1;18275:6:0;;-1:-1:-1;;;;;18269:12:0;;;18275:6;;18269:12;;18238:43;:79;;;;-1:-1:-1;18311:6:0;;-1:-1:-1;;;;;18311:6:0;18298:9;:19;;18238:79;:118;;;;-1:-1:-1;;;;;;18335:21:0;;;;;;:17;:21;;;;;;;;18334:22;18238:118;:159;;;;-1:-1:-1;;;;;;18374:23:0;;;;;;:17;:23;;;;;;;;18373:24;18238:159;:186;;;;-1:-1:-1;;;;;;18414:10:0;;5636:42;18414:10;;18238:186;:219;;;;-1:-1:-1;;;;;;18441:16:0;;;;18238:219;:257;;;;-1:-1:-1;;;;;;18474:21:0;;18490:4;18474:21;;18238:257;:302;;;;-1:-1:-1;18528:11:0;;-1:-1:-1;;;;;18512:28:0;;;18528:11;;;;;18512:28;;18238:302;:345;;;;-1:-1:-1;18571:11:0;;-1:-1:-1;;;;;18557:26:0;;;18571:11;;;;;18557:26;;18238:345;18231:352;18145:446;-1:-1:-1;;;18145:446:0:o;20783:1290::-;6648:6;:13;;-1:-1:-1;;6648:13:0;6657:4;6648:13;;;20866:30:::1;::::0;;::::1;::::0;::::1;::::0;;20889:7:::1;20866:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;20866:30:0;;::::1;;::::0;;;;;;;6648:6;20911:21;20907:60:::1;;20949:7;;;20907:60;21003:4;20983:26;::::0;;;:11:::1;:26;::::0;;;;;;;21018:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21018:9:0::1;20983:46:::0;;;;;;;;-1:-1:-1;;20983:67:0::1;20979:166;;21087:4;21067:26;::::0;;;:11:::1;:26;::::0;;;;;;;21102:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21102:9:0::1;21067:46:::0;;;;;;;-1:-1:-1;;21067:66:0;;20979:166:::1;21189:16;::::0;;21203:1:::1;21189:16:::0;;;;;::::1;::::0;;21165:21:::1;::::0;21189:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21189:16:0::1;21165:40;;21234:4;21216;21221:1;21216:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;21216:23:0::1;;;-1:-1:-1::0;;;;;21216:23:0::1;;;::::0;::::1;21260:9;;;;;;;;;-1:-1:-1::0;;;;;21260:9:0::1;-1:-1:-1::0;;;;;21260:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21250:4;21255:1;21250:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21250:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21293:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;21293:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;21368:20;;21403:1:::1;::::0;21419:4;;21446::::1;::::0;21466:15:::1;::::0;21293:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21289:246;;21517:7;;;;21289:246;21688:16;::::0;::::1;::::0;21666:18;;21568:21:::1;::::0;21547:18:::1;::::0;;;21652:52:::1;::::0;;::::1;::::0;21653:31:::1;::::0;::::1;21568:21:::0;21653:31:::1;:::i;:::-;21652:52;;;;:::i;:::-;21623:81:::0;-1:-1:-1;21715:24:0::1;21742:31;21623:81:::0;21742:10;:31:::1;:::i;:::-;21788:16;::::0;::::1;::::0;21715:58;;-1:-1:-1;21788:20:0::1;;::::0;21784:133:::1;;21838:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;21838:21:0;;::::1;::::0;21895:5:::1;::::0;21872:16;;21838:67:::1;::::0;;;21872:16;21838:21;21895:5;21838:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21825:80:0;;-1:-1:-1;;21784:133:0::1;21931:18:::0;;:22:::1;;::::0;21927:139:::1;;21983:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;21983:23:0;;::::1;::::0;22044:5:::1;::::0;22019:18;;21983:71:::1;::::0;;;22019:18;21983:23;22044:5;21983:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21970:84:0;;-1:-1:-1;;21927:139:0::1;20855:1218;;;;;;6672:1;-1:-1:-1::0;6684:6:0;:14;;-1:-1:-1;;6684:14:0;;;20783:1290::o;25367:767::-;25455:7;25475:18;25508:3;25504:205;;;-1:-1:-1;25541:9:0;:16;;;25504:205;;;25579:4;25575:134;;;-1:-1:-1;25613:9:0;:17;;;;;;25575:134;;;-1:-1:-1;25676:9:0;:21;-1:-1:-1;;;25676:21:0;;;;25575:134;25731:11;;;;;-1:-1:-1;;;;;25731:11:0;25755:4;25723:37;:73;;;;;25777:13;25794:2;25777:19;;25723:73;25719:101;;;-1:-1:-1;25813:4:0;25719:101;25834:10;25848:1;25834:15;25830:39;;25860:6;25853:13;;;;;25830:39;25879:17;5497:5;25899:19;25908:10;25899:6;:19;:::i;:::-;:38;;;;:::i;:::-;25879:58;-1:-1:-1;25952:13:0;;25948:141;;25998:4;25982:7;:22;;;;;;;;;;:35;;26008:9;;25982:7;:35;;26008:9;;25982:35;:::i;:::-;;;;-1:-1:-1;;26037:40:0;;368:25:1;;;26060:4:0;;-1:-1:-1;;;;;26037:40:0;;;;;356:2:1;341:18;26037:40:0;;;;;;;25948:141;26108:18;26117:9;26108:6;:18;:::i;22081:563::-;22164:16;;;;;;;22163:17;22155:65;;;;-1:-1:-1;;;22155:65:0;;28686:2:1;22155:65:0;;;28668:21:1;28725:2;28705:18;;;28698:30;28764:34;28744:18;;;28737:62;-1:-1:-1;;;28815:18:1;;;28808:33;28858:19;;22155:65:0;28484:399:1;22155:65:0;22236:20;22247:4;22253:2;22236:10;:20::i;:::-;22235:21;:37;;;;-1:-1:-1;22266:6:0;;-1:-1:-1;;;;;22260:12:0;;;22266:6;;22260:12;22235:37;22231:406;;;-1:-1:-1;;;;;22289:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;22289:30:0;;;22315:4;22289:30;;;;;;22334:19;:25;;;;;:32;;;;;;;;;;22381:16;:23;;-1:-1:-1;;22381:23:0;22289:30;22381:23;;;;;22431:11;;;;22419:114;;22477:11;:40;;-1:-1:-1;;;;;;22477:40:0;22511:4;22477:40;;;;;22419:114;22547:19;:26;;-1:-1:-1;;22547:26:0;;;;;22593:32;;-1:-1:-1;2196:41:1;;22593:32:0;;2184:2:1;2169:18;22593:32:0;2056:187:1;404:118;490:5;483:13;476:21;469:5;466:32;456:60;;512:1;509;502:12;527:376;589:6;597;650:2;638:9;629:7;625:23;621:32;618:52;;;666:1;663;656:12;618:52;705:9;692:23;724:28;746:5;724:28;:::i;:::-;771:5;-1:-1:-1;828:2:1;813:18;;800:32;841:30;800:32;841:30;:::i;:::-;890:7;880:17;;;527:376;;;;;:::o;1278:548::-;1390:4;1419:2;1448;1437:9;1430:21;1480:6;1474:13;1523:6;1518:2;1507:9;1503:18;1496:34;1548:1;1558:140;1572:6;1569:1;1566:13;1558:140;;;1667:14;;;1663:23;;1657:30;1633:17;;;1652:2;1629:26;1622:66;1587:10;;1558:140;;;1562:3;1747:1;1742:2;1733:6;1722:9;1718:22;1714:31;1707:42;1817:2;1810;1806:7;1801:2;1793:6;1789:15;1785:29;1774:9;1770:45;1766:54;1758:62;;;;1278:548;;;;:::o;2248:131::-;-1:-1:-1;;;;;2323:31:1;;2313:42;;2303:70;;2369:1;2366;2359:12;2384:315;2452:6;2460;2513:2;2501:9;2492:7;2488:23;2484:32;2481:52;;;2529:1;2526;2519:12;2481:52;2568:9;2555:23;2587:31;2612:5;2587:31;:::i;:::-;2637:5;2689:2;2674:18;;;;2661:32;;-1:-1:-1;;;2384:315:1:o;2704:247::-;2763:6;2816:2;2804:9;2795:7;2791:23;2787:32;2784:52;;;2832:1;2829;2822:12;2784:52;2871:9;2858:23;2890:31;2915:5;2890:31;:::i;2956:456::-;3033:6;3041;3049;3102:2;3090:9;3081:7;3077:23;3073:32;3070:52;;;3118:1;3115;3108:12;3070:52;3157:9;3144:23;3176:31;3201:5;3176:31;:::i;:::-;3226:5;-1:-1:-1;3283:2:1;3268:18;;3255:32;3296:33;3255:32;3296:33;:::i;:::-;2956:456;;3348:7;;-1:-1:-1;;;3402:2:1;3387:18;;;;3374:32;;2956:456::o;3417:248::-;3485:6;3493;3546:2;3534:9;3525:7;3521:23;3517:32;3514:52;;;3562:1;3559;3552:12;3514:52;-1:-1:-1;;3585:23:1;;;3655:2;3640:18;;;3627:32;;-1:-1:-1;3417:248:1:o;3670:127::-;3731:10;3726:3;3722:20;3719:1;3712:31;3762:4;3759:1;3752:15;3786:4;3783:1;3776:15;3802:275;3873:2;3867:9;3938:2;3919:13;;-1:-1:-1;;3915:27:1;3903:40;;3973:18;3958:34;;3994:22;;;3955:62;3952:88;;;4020:18;;:::i;:::-;4056:2;4049:22;3802:275;;-1:-1:-1;3802:275:1:o;4082:183::-;4142:4;4175:18;4167:6;4164:30;4161:56;;;4197:18;;:::i;:::-;-1:-1:-1;4242:1:1;4238:14;4254:4;4234:25;;4082:183::o;4270:662::-;4324:5;4377:3;4370:4;4362:6;4358:17;4354:27;4344:55;;4395:1;4392;4385:12;4344:55;4431:6;4418:20;4457:4;4481:60;4497:43;4537:2;4497:43;:::i;:::-;4481:60;:::i;:::-;4575:15;;;4661:1;4657:10;;;;4645:23;;4641:32;;;4606:12;;;;4685:15;;;4682:35;;;4713:1;4710;4703:12;4682:35;4749:2;4741:6;4737:15;4761:142;4777:6;4772:3;4769:15;4761:142;;;4843:17;;4831:30;;4881:12;;;;4794;;4761:142;;;-1:-1:-1;4921:5:1;4270:662;-1:-1:-1;;;;;;4270:662:1:o;4937:1215::-;5055:6;5063;5116:2;5104:9;5095:7;5091:23;5087:32;5084:52;;;5132:1;5129;5122:12;5084:52;5172:9;5159:23;5201:18;5242:2;5234:6;5231:14;5228:34;;;5258:1;5255;5248:12;5228:34;5296:6;5285:9;5281:22;5271:32;;5341:7;5334:4;5330:2;5326:13;5322:27;5312:55;;5363:1;5360;5353:12;5312:55;5399:2;5386:16;5421:4;5445:60;5461:43;5501:2;5461:43;:::i;5445:60::-;5539:15;;;5621:1;5617:10;;;;5609:19;;5605:28;;;5570:12;;;;5645:19;;;5642:39;;;5677:1;5674;5667:12;5642:39;5701:11;;;;5721:217;5737:6;5732:3;5729:15;5721:217;;;5817:3;5804:17;5834:31;5859:5;5834:31;:::i;:::-;5878:18;;5754:12;;;;5916;;;;5721:217;;;5957:5;-1:-1:-1;;6000:18:1;;5987:32;;-1:-1:-1;;6031:16:1;;;6028:36;;;6060:1;6057;6050:12;6028:36;;6083:63;6138:7;6127:8;6116:9;6112:24;6083:63;:::i;:::-;6073:73;;;4937:1215;;;;;:::o;6346:159::-;6413:20;;6473:6;6462:18;;6452:29;;6442:57;;6495:1;6492;6485:12;6442:57;6346:159;;;:::o;6510:328::-;6584:6;6592;6600;6653:2;6641:9;6632:7;6628:23;6624:32;6621:52;;;6669:1;6666;6659:12;6621:52;6692:28;6710:9;6692:28;:::i;:::-;6682:38;;6739:37;6772:2;6761:9;6757:18;6739:37;:::i;:::-;6729:47;;6795:37;6828:2;6817:9;6813:18;6795:37;:::i;:::-;6785:47;;6510:328;;;;;:::o;6843:382::-;6908:6;6916;6969:2;6957:9;6948:7;6944:23;6940:32;6937:52;;;6985:1;6982;6975:12;6937:52;7024:9;7011:23;7043:31;7068:5;7043:31;:::i;7230:180::-;7289:6;7342:2;7330:9;7321:7;7317:23;7313:32;7310:52;;;7358:1;7355;7348:12;7310:52;-1:-1:-1;7381:23:1;;7230:180;-1:-1:-1;7230:180:1:o;7415:256::-;7481:6;7489;7542:2;7530:9;7521:7;7517:23;7513:32;7510:52;;;7558:1;7555;7548:12;7510:52;7581:28;7599:9;7581:28;:::i;:::-;7571:38;;7628:37;7661:2;7650:9;7646:18;7628:37;:::i;:::-;7618:47;;7415:256;;;;;:::o;7676:404::-;7760:6;7768;7821:2;7809:9;7800:7;7796:23;7792:32;7789:52;;;7837:1;7834;7827:12;7789:52;7876:9;7863:23;7895:31;7920:5;7895:31;:::i;:::-;7945:5;-1:-1:-1;8002:2:1;7987:18;;7974:32;8015:33;7974:32;8015:33;:::i;8819:385::-;8905:6;8913;8921;8929;8982:3;8970:9;8961:7;8957:23;8953:33;8950:53;;;8999:1;8996;8989:12;8950:53;-1:-1:-1;;9022:23:1;;;9092:2;9077:18;;9064:32;;-1:-1:-1;9143:2:1;9128:18;;9115:32;;9194:2;9179:18;9166:32;;-1:-1:-1;8819:385:1;-1:-1:-1;8819:385:1:o;9209:341::-;9411:2;9393:21;;;9450:2;9430:18;;;9423:30;-1:-1:-1;;;9484:2:1;9469:18;;9462:47;9541:2;9526:18;;9209:341::o;9828:127::-;9889:10;9884:3;9880:20;9877:1;9870:31;9920:4;9917:1;9910:15;9944:4;9941:1;9934:15;9960:422;10049:1;10092:5;10049:1;10106:270;10127:7;10117:8;10114:21;10106:270;;;10186:4;10182:1;10178:6;10174:17;10168:4;10165:27;10162:53;;;10195:18;;:::i;:::-;10245:7;10235:8;10231:22;10228:55;;;10265:16;;;;10228:55;10344:22;;;;10304:15;;;;10106:270;;;10110:3;9960:422;;;;;:::o;10387:806::-;10436:5;10466:8;10456:80;;-1:-1:-1;10507:1:1;10521:5;;10456:80;10555:4;10545:76;;-1:-1:-1;10592:1:1;10606:5;;10545:76;10637:4;10655:1;10650:59;;;;10723:1;10718:130;;;;10630:218;;10650:59;10680:1;10671:10;;10694:5;;;10718:130;10755:3;10745:8;10742:17;10739:43;;;10762:18;;:::i;:::-;-1:-1:-1;;10818:1:1;10804:16;;10833:5;;10630:218;;10932:2;10922:8;10919:16;10913:3;10907:4;10904:13;10900:36;10894:2;10884:8;10881:16;10876:2;10870:4;10867:12;10863:35;10860:77;10857:159;;;-1:-1:-1;10969:19:1;;;11001:5;;10857:159;11048:34;11073:8;11067:4;11048:34;:::i;:::-;11118:6;11114:1;11110:6;11106:19;11097:7;11094:32;11091:58;;;11129:18;;:::i;:::-;11167:20;;10387:806;-1:-1:-1;;;10387:806:1:o;11198:140::-;11256:5;11285:47;11326:4;11316:8;11312:19;11306:4;11285:47;:::i;11343:217::-;11383:1;11409;11399:132;;11453:10;11448:3;11444:20;11441:1;11434:31;11488:4;11485:1;11478:15;11516:4;11513:1;11506:15;11399:132;-1:-1:-1;11545:9:1;;11343:217::o;11565:168::-;11638:9;;;11669;;11686:15;;;11680:22;;11666:37;11656:71;;11707:18;;:::i;11738:128::-;11805:9;;;11826:11;;;11823:37;;;11840:18;;:::i;12638:127::-;12699:10;12694:3;12690:20;12687:1;12680:31;12730:4;12727:1;12720:15;12754:4;12751:1;12744:15;13117:197;13155:3;13183:6;13224:2;13217:5;13213:14;13251:2;13242:7;13239:15;13236:41;;13257:18;;:::i;:::-;13306:1;13293:15;;13117:197;-1:-1:-1;;;13117:197:1:o;13319:125::-;13384:9;;;13405:10;;;13402:36;;;13418:18;;:::i;15625:385::-;15704:6;15712;15765:2;15753:9;15744:7;15740:23;15736:32;15733:52;;;15781:1;15778;15771:12;15733:52;15813:9;15807:16;15832:31;15857:5;15832:31;:::i;:::-;15932:2;15917:18;;15911:25;15882:5;;-1:-1:-1;15945:33:1;15911:25;15945:33;:::i;18593:245::-;18672:6;18680;18733:2;18721:9;18712:7;18708:23;18704:32;18701:52;;;18749:1;18746;18739:12;18701:52;-1:-1:-1;;18772:16:1;;18828:2;18813:18;;;18807:25;18772:16;;18807:25;;-1:-1:-1;18593:245:1:o;19199:184::-;19269:6;19322:2;19310:9;19301:7;19297:23;19293:32;19290:52;;;19338:1;19335;19328:12;19290:52;-1:-1:-1;19361:16:1;;19199:184;-1:-1:-1;19199:184:1:o;19667:245::-;19734:6;19787:2;19775:9;19766:7;19762:23;19758:32;19755:52;;;19803:1;19800;19793:12;19755:52;19835:9;19829:16;19854:28;19876:5;19854:28;:::i;19917:168::-;19984:6;20010:10;;;20022;;;20006:27;;20045:11;;;20042:37;;;20059:18;;:::i;:::-;20042:37;19917:168;;;;:::o;21209:251::-;21279:6;21332:2;21320:9;21311:7;21307:23;21303:32;21300:52;;;21348:1;21345;21338:12;21300:52;21380:9;21374:16;21399:31;21424:5;21399:31;:::i;22937:409::-;23139:2;23121:21;;;23178:2;23158:18;;;23151:30;23217:34;23212:2;23197:18;;23190:62;-1:-1:-1;;;23283:2:1;23268:18;;23261:43;23336:3;23321:19;;22937:409::o;27289:980::-;27551:4;27599:3;27588:9;27584:19;27630:6;27619:9;27612:25;27656:2;27694:6;27689:2;27678:9;27674:18;27667:34;27737:3;27732:2;27721:9;27717:18;27710:31;27761:6;27796;27790:13;27827:6;27819;27812:22;27865:3;27854:9;27850:19;27843:26;;27904:2;27896:6;27892:15;27878:29;;27925:1;27935:195;27949:6;27946:1;27943:13;27935:195;;;28014:13;;-1:-1:-1;;;;;28010:39:1;27998:52;;28105:15;;;;28070:12;;;;28046:1;27964:9;27935:195;;;-1:-1:-1;;;;;;;28186:32:1;;;;28181:2;28166:18;;28159:60;-1:-1:-1;;;28250:3:1;28235:19;28228:35;28147:3;27289:980;-1:-1:-1;;;27289:980:1:o

Swarm Source

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