ETH Price: $3,508.53 (+2.76%)
Gas: 5 Gwei

Token

Raise All-In x Pugsy Poker ($RAISE)
 

Overview

Max Total Supply

7,770,000,000 $RAISE

Holders

197

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
83,969,436.281361556 $RAISE

Value
$0.00
0x3358d839b6db1c6a8a68c0751b700cf5bba505b1
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:
RaiseAllInxPugsyPoker

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-04-01
*/

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

/*

https://t.me/PugsyMaloneETH

*/

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;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
}

contract RaiseAllInxPugsyPoker is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;

    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 7_770_000_000;
    string constant private _name = "Raise All-In x Pugsy Poker";
    string constant private _symbol = "$RAISE";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 project;
        uint16 operations;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        liquidity: 2,
        marketing: 1,
        operations: 1,
        project: 1,
        totalSwap: 5
    });

    uint256 constant public maxBuyTaxes = 3000;
    uint256 constant public maxSellTaxes = 3000;
    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 operations;
        address payable project;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x3e51878B5cC7db6867949A77Aad27992f2B73592),
        operations: payable(0xE44A109cC5782c080629EA8774be069174257187),
        project: payable(0xF37428dfeE044416Bd200210bD228D1604c9f2D4)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;

    uint256 private _maxTxAmount = (_tTotal * 5) / 1000;
    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 to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

//================================================ BLACKLIST

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        initializer.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        // Cannot blacklist contract, LP pair, or anything that would otherwise stop trading entirely.
        require(accounts.length <= 100, "Too many at once.");
        initializer.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function isBlacklisted(address account) external view returns (bool) {
        return initializer.isBlacklisted(account);
    }

    function removeBlacklisted(address account) external onlyOwner {
        // To remove from the pre-built blacklist ONLY. Cannot add to blacklist.
        initializer.removeBlacklisted(account);
    }

//================================================ BLACKLIST

    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 liquidity, uint16 operations, uint16 project, uint16 marketing) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.operations = operations;
        _ratios.project = project;
        _ratios.totalSwap = liquidity + marketing + operations + project;
        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 project, address payable operations) external onlyOwner {
        require(marketing != address(0) && project != address(0) && operations != address(0), "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.project = payable(project);
        _taxWallets.operations = payable(operations);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        bool success;
        uint256 operationsBalance = (amtBalance * ratios.operations) / ratios.totalSwap;
        uint256 projectBalance = (amtBalance * ratios.operations) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (projectBalance + operationsBalance);
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.project > 0) {
            (success,) = _taxWallets.project.call{value: projectBalance, gas: 55000}("");
        }        
        if (ratios.operations > 0) {
            (success,) = _taxWallets.operations.call{value: operationsBalance, gas: 55000}("");
        }
    }

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

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

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

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

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

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        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":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"project","type":"uint16"},{"internalType":"uint16","name":"operations","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":"operations","type":"address"},{"internalType":"address payable","name":"project","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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","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":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","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":"liquidity","type":"uint16"},{"internalType":"uint16","name":"operations","type":"uint16"},{"internalType":"uint16","name":"project","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":"project","type":"address"},{"internalType":"address payable","name":"operations","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"}]

600060028181556009805460ff191660019081178255610bb8608081905260a05260c093909352600a805465ffffffffffff1916630bb80bb817815560e09290925261010083905261012083905261014092909252600561016052600b8054680500010001000100026001600160501b03199091161790556101e0604052733e51878b5cc7db6867949a77aad27992f2b7359261018081905273e44a109cc5782c080629ea8774be0691742571876101a081905273f37428dfee044416bd200210bd228d1604c9f2d46101c0819052600e80546001600160a01b03199081169094179055600f80548416909217909155601080549092161790556011805461ff001916905560158190556103e89162000118916200045d565b62000129906401cf20ca8062000475565b6200013690600562000475565b6200014291906200048f565b6016556064620001556009600a6200045d565b62000166906401cf20ca8062000475565b6200017390600262000475565b6200017f91906200048f565b6017556018805461ffff19169055601a80546001600160a01b03191633179055620001ad6009600a6200045d565b620001be906401cf20ca8062000475565b601a80546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002126009600a6200045d565b62000223906401cf20ca8062000475565b60405190815260200160405180910390a3601a80546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965490951684526004825283208054861685179055527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf98054909216179055620004b2565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200039f57816000190482111562000383576200038362000348565b808516156200039157918102915b93841c939080029062000363565b509250929050565b600082620003b85750600162000457565b81620003c75750600062000457565b8160018114620003e05760028114620003eb576200040b565b600191505062000457565b60ff841115620003ff57620003ff62000348565b50506001821b62000457565b5060208310610133831016604e8410600b841016171562000430575081810a62000457565b6200043c83836200035e565b806000190482111562000453576200045362000348565b0290505b92915050565b60006200046e60ff841683620003a7565b9392505050565b808202811582820484141762000457576200045762000348565b600082620004ad57634e487b7160e01b600052601260045260246000fd5b500490565b61450380620004c26000396000f3fe6080604052600436106103bc5760003560e01c806350a8e016116101f2578063ab558e4d1161010d578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610bfe578063fdb78c0e14610c1e578063fe575a8714610c3d578063feadde9c14610c5d57600080fd5b8063eafb5a3c14610b52578063ee5d9c2d14610b72578063eec2744e14610b87578063f94aa1b414610ba757600080fd5b8063bfc2fc35116100dc578063bfc2fc3514610a52578063c6a276c214610a72578063cf84770614610a92578063dd62ed3e14610b0c57600080fd5b8063ab558e4d14610a02578063b1b08f7114610a22578063b3d514fb14610683578063b7df8b3614610a3857600080fd5b806375cb1bd1116101855780638a63bd9b116101545780638a63bd9b146109895780638a8c523c1461099e57806395d89b41146109b3578063a9059cbb146109e257600080fd5b806375cb1bd11461091657806378648edf1461093657806380c581d11461094b578063893d20e81461096b57600080fd5b80635cce86cd116101c15780635cce86cd146108935780636ebd0078146108cc57806370a08231146108e1578063715018a61461090157600080fd5b806350a8e0161461081e578063590ffdce1461083d5780635a6f09181461085d5780635c24b0741461087357600080fd5b80632610eaca116102e257806336fddb04116102755780634bbb93eb116102445780634bbb93eb146107855780634e718e48146107a55780634fb2e45d146107c55780634fbee193146107e557600080fd5b806336fddb041461070b5780633f3cf56c1461072b578063452ed4f11461074b5780634ada218b1461076b57600080fd5b80632e8fa821116102b15780632e8fa82114610699578063313ce567146106af57806332cde664146106cb57806333251a0b146106eb57600080fd5b80632610eaca1461063857806328577751146106585780632b112e491461066e5780632b28fc7a1461068357600080fd5b80630758d9241161035a5780630fa604e4116103295780630fa604e4146105ce57806318160ddd146105e357806323b872dd146105f8578063260039571461061857600080fd5b80630758d9241461052657806307dd79e01461054b578063095ea7b3146105755780630dcbcf1c1461059557600080fd5b806305bbedb61161039657806305bbedb614610441578063069d955f1461046157806306fdde03146104b75780630712d1651461050657600080fd5b806303fd2a45146103c85780630445b667146103fb578063044df7261461041f57600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103de61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561040757600080fd5b5061041160125481565b6040519081526020016103f2565b34801561042b57600080fd5b5061043f61043a366004613bea565b610c7d565b005b34801561044d57600080fd5b5061043f61045c366004613d17565b610d21565b34801561046d57600080fd5b50600a546104929061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103f2565b3480156104c357600080fd5b5060408051808201909152601a81527f526169736520416c6c2d496e207820507567737920506f6b657200000000000060208201525b6040516103f29190613d5e565b34801561051257600080fd5b5061043f610521366004613dc3565b610dc8565b34801561053257600080fd5b50600c546103de9061010090046001600160a01b031681565b34801561055757600080fd5b50600c546105659060ff1681565b60405190151581526020016103f2565b34801561058157600080fd5b50610565610590366004613e17565b610f12565b3480156105a157600080fd5b506105656105b0366004613e43565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105da57600080fd5b50610411610f29565b3480156105ef57600080fd5b50610411610f49565b34801561060457600080fd5b50610565610613366004613e60565b610f66565b34801561062457600080fd5b5061043f610633366004613ea1565b610fde565b34801561064457600080fd5b5061043f610653366004613ec3565b6110ff565b34801561066457600080fd5b5061041160155481565b34801561067a57600080fd5b5061041161127c565b34801561068f57600080fd5b50610411610bb881565b3480156106a557600080fd5b5061041160135481565b3480156106bb57600080fd5b50604051600981526020016103f2565b3480156106d757600080fd5b5061043f6106e6366004613f7e565b6112c2565b3480156106f757600080fd5b5061043f610706366004613e43565b6113ec565b34801561071757600080fd5b5061043f610726366004613fc1565b611479565b34801561073757600080fd5b5061043f610746366004613ea1565b6114ce565b34801561075757600080fd5b50600d546103de906001600160a01b031681565b34801561077757600080fd5b506018546105659060ff1681565b34801561079157600080fd5b506104116107a0366004613fdf565b611608565b3480156107b157600080fd5b5061043f6107c0366004613fdf565b61163a565b3480156107d157600080fd5b5061043f6107e0366004613e43565b6116b3565b3480156107f157600080fd5b50610565610800366004613e43565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561082a57600080fd5b5060185461056590610100900460ff1681565b34801561084957600080fd5b5061043f610858366004613fc1565b6117dc565b34801561086957600080fd5b5061041160195481565b34801561087f57600080fd5b5061043f61088e366004613e43565b611831565b34801561089f57600080fd5b506105656108ae366004613e43565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108d857600080fd5b506104116119d5565b3480156108ed57600080fd5b506104116108fc366004613e43565b6119f0565b34801561090d57600080fd5b5061043f611a0b565b34801561092257600080fd5b5061043f610931366004613ff8565b611b04565b34801561094257600080fd5b5061043f611bed565b34801561095757600080fd5b5061043f610966366004613fc1565b611c26565b34801561097757600080fd5b50601a546001600160a01b03166103de565b34801561099557600080fd5b50610565611dd3565b3480156109aa57600080fd5b5061043f611e25565b3480156109bf57600080fd5b5060408051808201909152600681526524524149534560d01b60208201526104f9565b3480156109ee57600080fd5b506105656109fd366004613e17565b61205b565b348015610a0e57600080fd5b5061043f610a1d366004613e43565b612072565b348015610a2e57600080fd5b506104116103e881565b348015610a4457600080fd5b506014546105659060ff1681565b348015610a5e57600080fd5b5061043f610a6d366004613bea565b6121ee565b348015610a7e57600080fd5b5061043f610a8d366004613e43565b612277565b348015610a9e57600080fd5b50600b54610ad79061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b9091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103f2565b348015610b1857600080fd5b50610411610b27366004614043565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b5e57600080fd5b5061043f610b6d366004613e43565b6122da565b348015610b7e57600080fd5b5061043f6126b0565b348015610b9357600080fd5b5061043f610ba2366004613fc1565b61276b565b348015610bb357600080fd5b50600e54600f54601054610bd4926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103f2565b348015610c0a57600080fd5b5061043f610c19366004614071565b6127d6565b348015610c2a57600080fd5b5060115461056590610100900460ff1681565b348015610c4957600080fd5b50610565610c58366004613e43565b6129ea565b348015610c6957600080fd5b5061043f610c78366004613fc1565b612a5f565b601a546001600160a01b03163314610cb05760405162461bcd60e51b8152600401610ca7906140a3565b60405180910390fd5b60185460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d0557600080fd5b505af1158015610d19573d6000803e3d6000fd5b505050505050565b601a546001600160a01b03163314610d4b5760405162461bcd60e51b8152600401610ca7906140a3565b606482511115610d915760405162461bcd60e51b81526020600482015260116024820152702a37b79036b0b73c9030ba1037b731b29760791b6044820152606401610ca7565b6018546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610ceb9085908590600401614112565b601a546001600160a01b03163314610df25760405162461bcd60e51b8152600401610ca7906140a3565b600b805461ffff86811663ffffffff199092169190911762010000848316021767ffffffff000000001916600160301b8683160265ffff00000000191617640100000000918516919091021790558183610e4c838761414c565b610e56919061414c565b610e60919061414c565b600b805469ffff00000000000000001916600160401b61ffff93841602179055600a54600091610e99916201000081048216911661414c565b600b5461ffff9182169250600160401b900416811015610f0b5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ca7565b5050505050565b6000610f1f338484612ab4565b5060015b92915050565b6000610f376009600a614252565b601754610f449190614261565b905090565b6000610f576009600a614252565b610f44906401cf20ca80614283565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610fcb576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610fc590849061429a565b90915550505b610fd6848484612bad565b949350505050565b601a546001600160a01b031633146110085760405162461bcd60e51b8152600401610ca7906140a3565b60646110166009600a614252565b611025906401cf20ca80614283565b61102f9190614261565b818361103d6009600a614252565b61104c906401cf20ca80614283565b6110569190614283565b6110609190614261565b10156110c75760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610ca7565b80826110d56009600a614252565b6110e4906401cf20ca80614283565b6110ee9190614283565b6110f89190614261565b6017555050565b601a546001600160a01b031633146111295760405162461bcd60e51b8152600401610ca7906140a3565b80518251146111725760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610ca7565b60005b82518161ffff1610156112775761118e6009600a614252565b828261ffff16815181106111a4576111a46142ad565b60200260200101516111b69190614283565b6111bf336119f0565b10156112025760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610ca7565b61126433848361ffff168151811061121c5761121c6142ad565b60200260200101516009600a6112329190614252565b858561ffff1681518110611248576112486142ad565b602002602001015161125a9190614283565b600080600161305d565b508061126f816142c3565b915050611175565b505050565b600061128860006119f0565b61129361dead6119f0565b61129d91906142e4565b6112a96009600a614252565b6112b8906401cf20ca80614283565b610f44919061429a565b601a546001600160a01b031633146112ec5760405162461bcd60e51b8152600401610ca7906140a3565b600c5460ff16156113335760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610ca7565b610bb88361ffff161115801561134f5750610bb88261ffff1611155b801561136157506103e88161ffff1611155b6113ad5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ca7565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601a546001600160a01b031633146114165760405162461bcd60e51b8152600401610ca7906140a3565b6018546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561146557600080fd5b505af1158015610f0b573d6000803e3d6000fd5b601a546001600160a01b031633146114a35760405162461bcd60e51b8152600401610ca7906140a3565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601a546001600160a01b031633146114f85760405162461bcd60e51b8152600401610ca7906140a3565b6103e86115076009600a614252565b611516906401cf20ca80614283565b611521906005614283565b61152b9190614261565b81836115396009600a614252565b611548906401cf20ca80614283565b6115529190614283565b61155c9190614261565b10156115d05760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ca7565b80826115de6009600a614252565b6115ed906401cf20ca80614283565b6115f79190614283565b6116019190614261565b6016555050565b600d54600090612710908390611626906001600160a01b03166119f0565b6116309190614283565b610f239190614261565b601a546001600160a01b031633146116645760405162461bcd60e51b8152600401610ca7906140a3565b60968111156116ae5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610ca7565b601555565b601a546001600160a01b031633146116dd5760405162461bcd60e51b8152600401610ca7906140a3565b6001600160a01b0381166117035760405162461bcd60e51b8152600401610ca7906142f7565b61deac196001600160a01b0382160161172e5760405162461bcd60e51b8152600401610ca7906142f7565b601a54611745906001600160a01b031660006117dc565b6117508160016117dc565b601a54600090611768906001600160a01b03166119f0565b111561178a57601a54611788906001600160a01b03168261125a826119f0565b505b601a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a546001600160a01b031633146118065760405162461bcd60e51b8152600401610ca7906140a3565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601a546001600160a01b0316331461185b5760405162461bcd60e51b8152600401610ca7906140a3565b60185460ff161561186b57600080fd5b306001600160a01b038216036118b45760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610ca7565b6018805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af192505050801561193a575060408051601f3d908101601f1916820190925261193791810190614354565b60015b61194357600080fd5b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601a5492546119b39383169291900416600019612ab4565b600c5461127790309061010090046001600160a01b0316600019612ab4565b50565b60006119e36009600a614252565b601654610f449190614261565b6001600160a01b031660009081526020819052604090205490565b601a546001600160a01b03163314611a355760405162461bcd60e51b8152600401610ca7906140a3565b60185460ff16611a9f5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610ca7565b601a54611ab6906001600160a01b031660006117dc565b601a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601a546001600160a01b03163314611b2e5760405162461bcd60e51b8152600401610ca7906140a3565b6001600160a01b03831615801590611b4e57506001600160a01b03821615155b8015611b6257506001600160a01b03811615155b611bae5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ca7565b600e80546001600160a01b039485166001600160a01b0319918216179091556010805493851693821693909317909255600f8054919093169116179055565b601a546001600160a01b03163314611c175760405162461bcd60e51b8152600401610ca7906140a3565b600c805460ff19166001179055565b601a546001600160a01b03163314611c505760405162461bcd60e51b8152600401610ca7906140a3565b80611cae576001600160a01b03828116600081815260016020526040808220805460ff1916905560185490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610ceb565b60025415611d07576203f48060025442611cc8919061429a565b11611d075760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610ca7565b6001600160a01b03821660009081526001602052604090205460ff1615611d705760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ca7565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560185491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610ceb565b5050565b601a546000906001600160a01b03163314611e005760405162461bcd60e51b8152600401610ca7906140a3565b600c54611e1f90309061010090046001600160a01b0316600019612ab4565b50600190565b601a546001600160a01b03163314611e4f5760405162461bcd60e51b8152600401610ca7906140a3565b60185460ff1615611ea25760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ca7565b601854610100900460ff16611ef95760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ca7565b6018546201000090046001600160a01b0316611f29576018805462010000600160b01b0319163062010000021790555b601854600d54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611f9b57600080fd5b505af1925050508015611fac575060015b50601854600d546001600160a01b03620100009092048216916325a71cae91611fd591166119f0565b6040518263ffffffff1660e01b8152600401611ff391815260200190565b60408051808303816000875af192505050801561202d575060408051601f3d908101601f1916820190925261202a91810190614383565b60015b1561203c576012919091556013555b6018805460ff1990811660011790915560098054909116905542601955565b6000612068338484612bad565b5060019392505050565b601a546001600160a01b0316331461209c5760405162461bcd60e51b8152600401610ca7906140a3565b601854610100900460ff161561210457306001600160a01b038216036121045760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ca7565b601a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561215b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217f91906143a7565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156121ca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127791906143c0565b601a546001600160a01b031633146122185760405162461bcd60e51b8152600401610ca7906140a3565b6011805461ff001916610100841515908102919091179091556014805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601a546001600160a01b031633146122a15760405162461bcd60e51b8152600401610ca7906140a3565b6018546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c29060240161144b565b601a546001600160a01b031633146123045760405162461bcd60e51b8152600401610ca7906140a3565b601854610100900460ff161561235c5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ca7565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c591906143dd565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243691906143dd565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a591906143dd565b600d546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661263b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612510573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253491906143dd565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a591906143dd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156125f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261691906143dd565b600d80546001600160a01b0319166001600160a01b0392909216919091179055612657565b600d80546001600160a01b0319166001600160a01b0383161790555b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d5482166000908152600160208190526040909120805460ff191690911790559154611277923092910416600019612ab4565b601a546001600160a01b031633146126da5760405162461bcd60e51b8152600401610ca7906140a3565b601854610100900460ff16156127325760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ca7565b601a546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156119d2573d6000803e3d6000fd5b601a546001600160a01b031633146127955760405162461bcd60e51b8152600401610ca7906140a3565b6018546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610ceb565b601a546001600160a01b031633146128005760405162461bcd60e51b8152600401610ca7906140a3565b828461280e6009600a614252565b61281d906401cf20ca80614283565b6128279190614283565b6128319190614261565b60125580826128426009600a614252565b612851906401cf20ca80614283565b61285b9190614283565b6128659190614261565b601381905560125411156128c55760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ca7565b600d54612710906128de906001600160a01b03166119f0565b6128e9906096614283565b6128f39190614261565b60135411156129505760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ca7565b620f42406129606009600a614252565b61296f906401cf20ca80614283565b6129799190614261565b601354101561299a5760405162461bcd60e51b8152600401610ca7906143fa565b620f42406129aa6009600a614252565b6129b9906401cf20ca80614283565b6129c39190614261565b60125410156129e45760405162461bcd60e51b8152600401610ca7906143fa565b50505050565b60185460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2391906143c0565b601a546001600160a01b03163314612a895760405162461bcd60e51b8152600401610ca7906140a3565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612b005760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ca7565b6001600160a01b038216612b4c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ca7565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612c135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ca7565b6001600160a01b038316612c755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ca7565b60008211612cd75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ca7565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612d055760019250612d33565b6001600160a01b03861660009081526001602052604090205460ff1615612d2f5760019150612d33565b5060015b612d3d8787613310565b15612fb45760185460ff16612e3e5780612d995760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ca7565b6001600160a01b03871660009081526005602052604090205460ff16158015612ddb57506001600160a01b03861660009081526005602052604090205460ff16155b15612e3e5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ca7565b8280612e475750815b15612ef6576001600160a01b03871660009081526007602052604090205460ff16158015612e8e57506001600160a01b03861660009081526007602052604090205460ff16155b15612ef657601654851115612ef65760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ca7565b600c546001600160a01b038781166101009092041614801590612f17575081155b15612fb4576001600160a01b03861660009081526007602052604090205460ff16612fb45760175485612f49886119f0565b612f5391906142e4565b1115612fb45760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610ca7565b81156130445760115460ff1661304457601154610100900460ff1615613044576000612fdf306119f0565b905060125481106130425760135460145460ff161561302c57601554600d546127109190613015906001600160a01b03166119f0565b61301f9190614283565b6130299190614261565b90505b808210613037578091505b61304082613427565b505b505b61305287878786868661305d565b979650505050505050565b60006130698787613310565b156131035760185460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156130ec575060408051601f3d908101601f191682019092526130e9918101906143c0565b60015b6130f557600080fd5b90508061310157600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061314557506001600160a01b03871660009081526006602052604090205460ff165b1561314e575060005b6001600160a01b0388166000908152602081905260408120805488929061317690849061429a565b9091555060009050816131895786613195565b61319589888888613990565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546131cb91906142e4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161321791815260200190565b60405180910390a3601854610100900460ff16613301576132388989613a9c565b601854610100900460ff1615801561325557506132558989613310565b801561327a57506001600160a01b03891660009081526005602052604090205460ff16155b801561329f57506001600160a01b03881660009081526005602052604090205460ff16155b80156132a9575083155b156133015760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ca7565b50600198975050505050505050565b601a546000906001600160a01b0384811691161480159061333f5750601a546001600160a01b03838116911614155b80156133565750601a546001600160a01b03163214155b801561337b57506001600160a01b03821660009081526004602052604090205460ff16155b80156133a057506001600160a01b03831660009081526004602052604090205460ff16155b80156133b757506001600160a01b03821661dead14155b80156133cb57506001600160a01b03821615155b80156133e057506001600160a01b0383163014155b801561340057506018546001600160a01b03848116620100009092041614155b801561342057506018546001600160a01b03838116620100009092041614155b9392505050565b6011805460ff191660011790556040805160a081018252600b5461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b810483166060830152600160401b9004909116608082018190526000036134935750613983565b306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902054600019146134f657306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b60006002826080015161ffff16836000015161ffff16856135179190614283565b6135219190614261565b61352b9190614261565b90506000613539828561429a565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613573576135736142ad565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360a91906143dd565b8160018151811061361d5761361d6142ad565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac9479061366a908590600090869030904290600401614448565b600060405180830381600087803b15801561368457600080fd5b505af1925050508015613695575060015b6136a25750505050613983565b476000836136b08684614283565b6136ba9190614261565b9050841561379d57600c5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015613751575060408051601f3d908101601f1916820190925261374e91810190614484565b60015b61376057505050505050613983565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6137a7818361429a565b91508560000151866080018181516137bf91906144b2565b61ffff90811690915260808801516060890151600093508392918216916137e7911686614283565b6137f19190614261565b90506000886080015161ffff16896060015161ffff16866138129190614283565b61381c9190614261565b9050600061382a83836142e4565b613834908761429a565b60208b015190915061ffff16156138a257600e546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613897576040519150601f19603f3d011682016040523d82523d6000602084013e61389c565b606091505b50909450505b60408a015161ffff161561390d576010546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613902576040519150601f19603f3d011682016040523d82523d6000602084013e613907565b606091505b50909450505b60608a015161ffff161561397857600f546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d806000811461396d576040519150601f19603f3d011682016040523d82523d6000602084013e613972565b606091505b50909450505b505050505050505050505b506011805460ff19169055565b60008083156139a65750600a5461ffff166139d0565b82156139bf5750600a5462010000900461ffff166139d0565b50600a54640100000000900461ffff165b6018546201000090046001600160a01b0316301480156139f1575046606114155b156139fb57506111945b80600003613a0c5784915050610fd6565b6000612710613a1b8388614283565b613a259190614261565b90508015613a92573060009081526020819052604081208054839290613a4c9084906142e4565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613052818761429a565b601854610100900460ff1615613b005760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ca7565b613b0a8282613310565b158015613b245750600d546001600160a01b038281169116145b15611dcf576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556018805461ff001916610100179081905562010000900416613b9c576018805462010000600160b01b0319163062010000021790555b6011805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161226b565b80151581146119d257600080fd5b60008060408385031215613bfd57600080fd5b8235613c0881613bdc565b91506020830135613c1881613bdc565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613c6257613c62613c23565b604052919050565b600067ffffffffffffffff821115613c8457613c84613c23565b5060051b60200190565b6001600160a01b03811681146119d257600080fd5b600082601f830112613cb457600080fd5b81356020613cc9613cc483613c6a565b613c39565b82815260059290921b84018101918181019086841115613ce857600080fd5b8286015b84811015613d0c578035613cff81613c8e565b8352918301918301613cec565b509695505050505050565b60008060408385031215613d2a57600080fd5b823567ffffffffffffffff811115613d4157600080fd5b613d4d85828601613ca3565b9250506020830135613c1881613bdc565b600060208083528351808285015260005b81811015613d8b57858101830151858201604001528201613d6f565b506000604082860101526040601f19601f8301168501019250505092915050565b803561ffff81168114613dbe57600080fd5b919050565b60008060008060808587031215613dd957600080fd5b613de285613dac565b9350613df060208601613dac565b9250613dfe60408601613dac565b9150613e0c60608601613dac565b905092959194509250565b60008060408385031215613e2a57600080fd5b8235613e3581613c8e565b946020939093013593505050565b600060208284031215613e5557600080fd5b813561342081613c8e565b600080600060608486031215613e7557600080fd5b8335613e8081613c8e565b92506020840135613e9081613c8e565b929592945050506040919091013590565b60008060408385031215613eb457600080fd5b50508035926020909101359150565b60008060408385031215613ed657600080fd5b823567ffffffffffffffff80821115613eee57600080fd5b613efa86838701613ca3565b9350602091508185013581811115613f1157600080fd5b85019050601f81018613613f2457600080fd5b8035613f32613cc482613c6a565b81815260059190911b82018301908381019088831115613f5157600080fd5b928401925b82841015613f6f57833582529284019290840190613f56565b80955050505050509250929050565b600080600060608486031215613f9357600080fd5b613f9c84613dac565b9250613faa60208501613dac565b9150613fb860408501613dac565b90509250925092565b60008060408385031215613fd457600080fd5b8235613c0881613c8e565b600060208284031215613ff157600080fd5b5035919050565b60008060006060848603121561400d57600080fd5b833561401881613c8e565b9250602084013561402881613c8e565b9150604084013561403881613c8e565b809150509250925092565b6000806040838503121561405657600080fd5b823561406181613c8e565b91506020830135613c1881613c8e565b6000806000806080858703121561408757600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b600081518084526020808501945080840160005b838110156141075781516001600160a01b0316875295820195908201906001016140e2565b509495945050505050565b60408152600061412560408301856140ce565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b61ffff81811683821601908082111561416757614167614136565b5092915050565b600181815b808511156141a957816000190482111561418f5761418f614136565b8085161561419c57918102915b93841c9390800290614173565b509250929050565b6000826141c057506001610f23565b816141cd57506000610f23565b81600181146141e357600281146141ed57614209565b6001915050610f23565b60ff8411156141fe576141fe614136565b50506001821b610f23565b5060208310610133831016604e8410600b841016171561422c575081810a610f23565b614236838361416e565b806000190482111561424a5761424a614136565b029392505050565b600061342060ff8416836141b1565b60008261427e57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610f2357610f23614136565b81810381811115610f2357610f23614136565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036142da576142da614136565b6001019392505050565b80820180821115610f2357610f23614136565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6000806040838503121561436757600080fd5b825161437281613c8e565b6020840151909250613c1881613c8e565b6000806040838503121561439657600080fd5b505080516020909101519092909150565b6000602082840312156143b957600080fd5b5051919050565b6000602082840312156143d257600080fd5b815161342081613bdc565b6000602082840312156143ef57600080fd5b815161342081613c8e565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b85815284602082015260a06040820152600061446760a08301866140ce565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561449957600080fd5b8351925060208401519150604084015190509250925092565b61ffff8281168282160390808211156141675761416761413656fea264697066735822122025f88ba0f45d917362cce5ce61410043ecb2c1a26d790d94ea6e255647cd47fd64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103bc5760003560e01c806350a8e016116101f2578063ab558e4d1161010d578063eafb5a3c116100a0578063fb78680d1161006f578063fb78680d14610bfe578063fdb78c0e14610c1e578063fe575a8714610c3d578063feadde9c14610c5d57600080fd5b8063eafb5a3c14610b52578063ee5d9c2d14610b72578063eec2744e14610b87578063f94aa1b414610ba757600080fd5b8063bfc2fc35116100dc578063bfc2fc3514610a52578063c6a276c214610a72578063cf84770614610a92578063dd62ed3e14610b0c57600080fd5b8063ab558e4d14610a02578063b1b08f7114610a22578063b3d514fb14610683578063b7df8b3614610a3857600080fd5b806375cb1bd1116101855780638a63bd9b116101545780638a63bd9b146109895780638a8c523c1461099e57806395d89b41146109b3578063a9059cbb146109e257600080fd5b806375cb1bd11461091657806378648edf1461093657806380c581d11461094b578063893d20e81461096b57600080fd5b80635cce86cd116101c15780635cce86cd146108935780636ebd0078146108cc57806370a08231146108e1578063715018a61461090157600080fd5b806350a8e0161461081e578063590ffdce1461083d5780635a6f09181461085d5780635c24b0741461087357600080fd5b80632610eaca116102e257806336fddb04116102755780634bbb93eb116102445780634bbb93eb146107855780634e718e48146107a55780634fb2e45d146107c55780634fbee193146107e557600080fd5b806336fddb041461070b5780633f3cf56c1461072b578063452ed4f11461074b5780634ada218b1461076b57600080fd5b80632e8fa821116102b15780632e8fa82114610699578063313ce567146106af57806332cde664146106cb57806333251a0b146106eb57600080fd5b80632610eaca1461063857806328577751146106585780632b112e491461066e5780632b28fc7a1461068357600080fd5b80630758d9241161035a5780630fa604e4116103295780630fa604e4146105ce57806318160ddd146105e357806323b872dd146105f8578063260039571461061857600080fd5b80630758d9241461052657806307dd79e01461054b578063095ea7b3146105755780630dcbcf1c1461059557600080fd5b806305bbedb61161039657806305bbedb614610441578063069d955f1461046157806306fdde03146104b75780630712d1651461050657600080fd5b806303fd2a45146103c85780630445b667146103fb578063044df7261461041f57600080fd5b366103c357005b600080fd5b3480156103d457600080fd5b506103de61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561040757600080fd5b5061041160125481565b6040519081526020016103f2565b34801561042b57600080fd5b5061043f61043a366004613bea565b610c7d565b005b34801561044d57600080fd5b5061043f61045c366004613d17565b610d21565b34801561046d57600080fd5b50600a546104929061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103f2565b3480156104c357600080fd5b5060408051808201909152601a81527f526169736520416c6c2d496e207820507567737920506f6b657200000000000060208201525b6040516103f29190613d5e565b34801561051257600080fd5b5061043f610521366004613dc3565b610dc8565b34801561053257600080fd5b50600c546103de9061010090046001600160a01b031681565b34801561055757600080fd5b50600c546105659060ff1681565b60405190151581526020016103f2565b34801561058157600080fd5b50610565610590366004613e17565b610f12565b3480156105a157600080fd5b506105656105b0366004613e43565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105da57600080fd5b50610411610f29565b3480156105ef57600080fd5b50610411610f49565b34801561060457600080fd5b50610565610613366004613e60565b610f66565b34801561062457600080fd5b5061043f610633366004613ea1565b610fde565b34801561064457600080fd5b5061043f610653366004613ec3565b6110ff565b34801561066457600080fd5b5061041160155481565b34801561067a57600080fd5b5061041161127c565b34801561068f57600080fd5b50610411610bb881565b3480156106a557600080fd5b5061041160135481565b3480156106bb57600080fd5b50604051600981526020016103f2565b3480156106d757600080fd5b5061043f6106e6366004613f7e565b6112c2565b3480156106f757600080fd5b5061043f610706366004613e43565b6113ec565b34801561071757600080fd5b5061043f610726366004613fc1565b611479565b34801561073757600080fd5b5061043f610746366004613ea1565b6114ce565b34801561075757600080fd5b50600d546103de906001600160a01b031681565b34801561077757600080fd5b506018546105659060ff1681565b34801561079157600080fd5b506104116107a0366004613fdf565b611608565b3480156107b157600080fd5b5061043f6107c0366004613fdf565b61163a565b3480156107d157600080fd5b5061043f6107e0366004613e43565b6116b3565b3480156107f157600080fd5b50610565610800366004613e43565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561082a57600080fd5b5060185461056590610100900460ff1681565b34801561084957600080fd5b5061043f610858366004613fc1565b6117dc565b34801561086957600080fd5b5061041160195481565b34801561087f57600080fd5b5061043f61088e366004613e43565b611831565b34801561089f57600080fd5b506105656108ae366004613e43565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108d857600080fd5b506104116119d5565b3480156108ed57600080fd5b506104116108fc366004613e43565b6119f0565b34801561090d57600080fd5b5061043f611a0b565b34801561092257600080fd5b5061043f610931366004613ff8565b611b04565b34801561094257600080fd5b5061043f611bed565b34801561095757600080fd5b5061043f610966366004613fc1565b611c26565b34801561097757600080fd5b50601a546001600160a01b03166103de565b34801561099557600080fd5b50610565611dd3565b3480156109aa57600080fd5b5061043f611e25565b3480156109bf57600080fd5b5060408051808201909152600681526524524149534560d01b60208201526104f9565b3480156109ee57600080fd5b506105656109fd366004613e17565b61205b565b348015610a0e57600080fd5b5061043f610a1d366004613e43565b612072565b348015610a2e57600080fd5b506104116103e881565b348015610a4457600080fd5b506014546105659060ff1681565b348015610a5e57600080fd5b5061043f610a6d366004613bea565b6121ee565b348015610a7e57600080fd5b5061043f610a8d366004613e43565b612277565b348015610a9e57600080fd5b50600b54610ad79061ffff808216916201000081048216916401000000008204811691600160301b8104821691600160401b9091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103f2565b348015610b1857600080fd5b50610411610b27366004614043565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b5e57600080fd5b5061043f610b6d366004613e43565b6122da565b348015610b7e57600080fd5b5061043f6126b0565b348015610b9357600080fd5b5061043f610ba2366004613fc1565b61276b565b348015610bb357600080fd5b50600e54600f54601054610bd4926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103f2565b348015610c0a57600080fd5b5061043f610c19366004614071565b6127d6565b348015610c2a57600080fd5b5060115461056590610100900460ff1681565b348015610c4957600080fd5b50610565610c58366004613e43565b6129ea565b348015610c6957600080fd5b5061043f610c78366004613fc1565b612a5f565b601a546001600160a01b03163314610cb05760405162461bcd60e51b8152600401610ca7906140a3565b60405180910390fd5b60185460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d0557600080fd5b505af1158015610d19573d6000803e3d6000fd5b505050505050565b601a546001600160a01b03163314610d4b5760405162461bcd60e51b8152600401610ca7906140a3565b606482511115610d915760405162461bcd60e51b81526020600482015260116024820152702a37b79036b0b73c9030ba1037b731b29760791b6044820152606401610ca7565b6018546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb690610ceb9085908590600401614112565b601a546001600160a01b03163314610df25760405162461bcd60e51b8152600401610ca7906140a3565b600b805461ffff86811663ffffffff199092169190911762010000848316021767ffffffff000000001916600160301b8683160265ffff00000000191617640100000000918516919091021790558183610e4c838761414c565b610e56919061414c565b610e60919061414c565b600b805469ffff00000000000000001916600160401b61ffff93841602179055600a54600091610e99916201000081048216911661414c565b600b5461ffff9182169250600160401b900416811015610f0b5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ca7565b5050505050565b6000610f1f338484612ab4565b5060015b92915050565b6000610f376009600a614252565b601754610f449190614261565b905090565b6000610f576009600a614252565b610f44906401cf20ca80614283565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610fcb576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610fc590849061429a565b90915550505b610fd6848484612bad565b949350505050565b601a546001600160a01b031633146110085760405162461bcd60e51b8152600401610ca7906140a3565b60646110166009600a614252565b611025906401cf20ca80614283565b61102f9190614261565b818361103d6009600a614252565b61104c906401cf20ca80614283565b6110569190614283565b6110609190614261565b10156110c75760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610ca7565b80826110d56009600a614252565b6110e4906401cf20ca80614283565b6110ee9190614283565b6110f89190614261565b6017555050565b601a546001600160a01b031633146111295760405162461bcd60e51b8152600401610ca7906140a3565b80518251146111725760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610ca7565b60005b82518161ffff1610156112775761118e6009600a614252565b828261ffff16815181106111a4576111a46142ad565b60200260200101516111b69190614283565b6111bf336119f0565b10156112025760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610ca7565b61126433848361ffff168151811061121c5761121c6142ad565b60200260200101516009600a6112329190614252565b858561ffff1681518110611248576112486142ad565b602002602001015161125a9190614283565b600080600161305d565b508061126f816142c3565b915050611175565b505050565b600061128860006119f0565b61129361dead6119f0565b61129d91906142e4565b6112a96009600a614252565b6112b8906401cf20ca80614283565b610f44919061429a565b601a546001600160a01b031633146112ec5760405162461bcd60e51b8152600401610ca7906140a3565b600c5460ff16156113335760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610ca7565b610bb88361ffff161115801561134f5750610bb88261ffff1611155b801561136157506103e88161ffff1611155b6113ad5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ca7565b600a805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601a546001600160a01b031633146114165760405162461bcd60e51b8152600401610ca7906140a3565b6018546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b15801561146557600080fd5b505af1158015610f0b573d6000803e3d6000fd5b601a546001600160a01b031633146114a35760405162461bcd60e51b8152600401610ca7906140a3565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601a546001600160a01b031633146114f85760405162461bcd60e51b8152600401610ca7906140a3565b6103e86115076009600a614252565b611516906401cf20ca80614283565b611521906005614283565b61152b9190614261565b81836115396009600a614252565b611548906401cf20ca80614283565b6115529190614283565b61155c9190614261565b10156115d05760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ca7565b80826115de6009600a614252565b6115ed906401cf20ca80614283565b6115f79190614283565b6116019190614261565b6016555050565b600d54600090612710908390611626906001600160a01b03166119f0565b6116309190614283565b610f239190614261565b601a546001600160a01b031633146116645760405162461bcd60e51b8152600401610ca7906140a3565b60968111156116ae5760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610ca7565b601555565b601a546001600160a01b031633146116dd5760405162461bcd60e51b8152600401610ca7906140a3565b6001600160a01b0381166117035760405162461bcd60e51b8152600401610ca7906142f7565b61deac196001600160a01b0382160161172e5760405162461bcd60e51b8152600401610ca7906142f7565b601a54611745906001600160a01b031660006117dc565b6117508160016117dc565b601a54600090611768906001600160a01b03166119f0565b111561178a57601a54611788906001600160a01b03168261125a826119f0565b505b601a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a546001600160a01b031633146118065760405162461bcd60e51b8152600401610ca7906140a3565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601a546001600160a01b0316331461185b5760405162461bcd60e51b8152600401610ca7906140a3565b60185460ff161561186b57600080fd5b306001600160a01b038216036118b45760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610ca7565b6018805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af192505050801561193a575060408051601f3d908101601f1916820190925261193791810190614354565b60015b61194357600080fd5b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601a5492546119b39383169291900416600019612ab4565b600c5461127790309061010090046001600160a01b0316600019612ab4565b50565b60006119e36009600a614252565b601654610f449190614261565b6001600160a01b031660009081526020819052604090205490565b601a546001600160a01b03163314611a355760405162461bcd60e51b8152600401610ca7906140a3565b60185460ff16611a9f5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610ca7565b601a54611ab6906001600160a01b031660006117dc565b601a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601a546001600160a01b03163314611b2e5760405162461bcd60e51b8152600401610ca7906140a3565b6001600160a01b03831615801590611b4e57506001600160a01b03821615155b8015611b6257506001600160a01b03811615155b611bae5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ca7565b600e80546001600160a01b039485166001600160a01b0319918216179091556010805493851693821693909317909255600f8054919093169116179055565b601a546001600160a01b03163314611c175760405162461bcd60e51b8152600401610ca7906140a3565b600c805460ff19166001179055565b601a546001600160a01b03163314611c505760405162461bcd60e51b8152600401610ca7906140a3565b80611cae576001600160a01b03828116600081815260016020526040808220805460ff1916905560185490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610ceb565b60025415611d07576203f48060025442611cc8919061429a565b11611d075760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610ca7565b6001600160a01b03821660009081526001602052604090205460ff1615611d705760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ca7565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560185491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610ceb565b5050565b601a546000906001600160a01b03163314611e005760405162461bcd60e51b8152600401610ca7906140a3565b600c54611e1f90309061010090046001600160a01b0316600019612ab4565b50600190565b601a546001600160a01b03163314611e4f5760405162461bcd60e51b8152600401610ca7906140a3565b60185460ff1615611ea25760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ca7565b601854610100900460ff16611ef95760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ca7565b6018546201000090046001600160a01b0316611f29576018805462010000600160b01b0319163062010000021790555b601854600d54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611f9b57600080fd5b505af1925050508015611fac575060015b50601854600d546001600160a01b03620100009092048216916325a71cae91611fd591166119f0565b6040518263ffffffff1660e01b8152600401611ff391815260200190565b60408051808303816000875af192505050801561202d575060408051601f3d908101601f1916820190925261202a91810190614383565b60015b1561203c576012919091556013555b6018805460ff1990811660011790915560098054909116905542601955565b6000612068338484612bad565b5060019392505050565b601a546001600160a01b0316331461209c5760405162461bcd60e51b8152600401610ca7906140a3565b601854610100900460ff161561210457306001600160a01b038216036121045760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ca7565b601a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa15801561215b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217f91906143a7565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156121ca573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127791906143c0565b601a546001600160a01b031633146122185760405162461bcd60e51b8152600401610ca7906140a3565b6011805461ff001916610100841515908102919091179091556014805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601a546001600160a01b031633146122a15760405162461bcd60e51b8152600401610ca7906140a3565b6018546040516363513b6160e11b81526001600160a01b038381166004830152620100009092049091169063c6a276c29060240161144b565b601a546001600160a01b031633146123045760405162461bcd60e51b8152600401610ca7906140a3565b601854610100900460ff161561235c5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ca7565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c591906143dd565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612412573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243691906143dd565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612481573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a591906143dd565b600d546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661263b57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612510573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253491906143dd565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a591906143dd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156125f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261691906143dd565b600d80546001600160a01b0319166001600160a01b0392909216919091179055612657565b600d80546001600160a01b0319166001600160a01b0383161790555b600c8054610100600160a81b0319166101006001600160a01b038581168202929092178355600d5482166000908152600160208190526040909120805460ff191690911790559154611277923092910416600019612ab4565b601a546001600160a01b031633146126da5760405162461bcd60e51b8152600401610ca7906140a3565b601854610100900460ff16156127325760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ca7565b601a546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156119d2573d6000803e3d6000fd5b601a546001600160a01b031633146127955760405162461bcd60e51b8152600401610ca7906140a3565b6018546040516377613a2760e11b81526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610ceb565b601a546001600160a01b031633146128005760405162461bcd60e51b8152600401610ca7906140a3565b828461280e6009600a614252565b61281d906401cf20ca80614283565b6128279190614283565b6128319190614261565b60125580826128426009600a614252565b612851906401cf20ca80614283565b61285b9190614283565b6128659190614261565b601381905560125411156128c55760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ca7565b600d54612710906128de906001600160a01b03166119f0565b6128e9906096614283565b6128f39190614261565b60135411156129505760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ca7565b620f42406129606009600a614252565b61296f906401cf20ca80614283565b6129799190614261565b601354101561299a5760405162461bcd60e51b8152600401610ca7906143fa565b620f42406129aa6009600a614252565b6129b9906401cf20ca80614283565b6129c39190614261565b60125410156129e45760405162461bcd60e51b8152600401610ca7906143fa565b50505050565b60185460405163fe575a8760e01b81526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2391906143c0565b601a546001600160a01b03163314612a895760405162461bcd60e51b8152600401610ca7906140a3565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612b005760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ca7565b6001600160a01b038216612b4c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ca7565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612c135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ca7565b6001600160a01b038316612c755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ca7565b60008211612cd75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ca7565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612d055760019250612d33565b6001600160a01b03861660009081526001602052604090205460ff1615612d2f5760019150612d33565b5060015b612d3d8787613310565b15612fb45760185460ff16612e3e5780612d995760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ca7565b6001600160a01b03871660009081526005602052604090205460ff16158015612ddb57506001600160a01b03861660009081526005602052604090205460ff16155b15612e3e5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ca7565b8280612e475750815b15612ef6576001600160a01b03871660009081526007602052604090205460ff16158015612e8e57506001600160a01b03861660009081526007602052604090205460ff16155b15612ef657601654851115612ef65760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ca7565b600c546001600160a01b038781166101009092041614801590612f17575081155b15612fb4576001600160a01b03861660009081526007602052604090205460ff16612fb45760175485612f49886119f0565b612f5391906142e4565b1115612fb45760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610ca7565b81156130445760115460ff1661304457601154610100900460ff1615613044576000612fdf306119f0565b905060125481106130425760135460145460ff161561302c57601554600d546127109190613015906001600160a01b03166119f0565b61301f9190614283565b6130299190614261565b90505b808210613037578091505b61304082613427565b505b505b61305287878786868661305d565b979650505050505050565b60006130698787613310565b156131035760185460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156130ec575060408051601f3d908101601f191682019092526130e9918101906143c0565b60015b6130f557600080fd5b90508061310157600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061314557506001600160a01b03871660009081526006602052604090205460ff165b1561314e575060005b6001600160a01b0388166000908152602081905260408120805488929061317690849061429a565b9091555060009050816131895786613195565b61319589888888613990565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546131cb91906142e4565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161321791815260200190565b60405180910390a3601854610100900460ff16613301576132388989613a9c565b601854610100900460ff1615801561325557506132558989613310565b801561327a57506001600160a01b03891660009081526005602052604090205460ff16155b801561329f57506001600160a01b03881660009081526005602052604090205460ff16155b80156132a9575083155b156133015760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ca7565b50600198975050505050505050565b601a546000906001600160a01b0384811691161480159061333f5750601a546001600160a01b03838116911614155b80156133565750601a546001600160a01b03163214155b801561337b57506001600160a01b03821660009081526004602052604090205460ff16155b80156133a057506001600160a01b03831660009081526004602052604090205460ff16155b80156133b757506001600160a01b03821661dead14155b80156133cb57506001600160a01b03821615155b80156133e057506001600160a01b0383163014155b801561340057506018546001600160a01b03848116620100009092041614155b801561342057506018546001600160a01b03838116620100009092041614155b9392505050565b6011805460ff191660011790556040805160a081018252600b5461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b810483166060830152600160401b9004909116608082018190526000036134935750613983565b306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902054600019146134f657306000908152600360209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b60006002826080015161ffff16836000015161ffff16856135179190614283565b6135219190614261565b61352b9190614261565b90506000613539828561429a565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613573576135736142ad565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360a91906143dd565b8160018151811061361d5761361d6142ad565b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac9479061366a908590600090869030904290600401614448565b600060405180830381600087803b15801561368457600080fd5b505af1925050508015613695575060015b6136a25750505050613983565b476000836136b08684614283565b6136ba9190614261565b9050841561379d57600c5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015613751575060408051601f3d908101601f1916820190925261374e91810190614484565b60015b61376057505050505050613983565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6137a7818361429a565b91508560000151866080018181516137bf91906144b2565b61ffff90811690915260808801516060890151600093508392918216916137e7911686614283565b6137f19190614261565b90506000886080015161ffff16896060015161ffff16866138129190614283565b61381c9190614261565b9050600061382a83836142e4565b613834908761429a565b60208b015190915061ffff16156138a257600e546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613897576040519150601f19603f3d011682016040523d82523d6000602084013e61389c565b606091505b50909450505b60408a015161ffff161561390d576010546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613902576040519150601f19603f3d011682016040523d82523d6000602084013e613907565b606091505b50909450505b60608a015161ffff161561397857600f546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d806000811461396d576040519150601f19603f3d011682016040523d82523d6000602084013e613972565b606091505b50909450505b505050505050505050505b506011805460ff19169055565b60008083156139a65750600a5461ffff166139d0565b82156139bf5750600a5462010000900461ffff166139d0565b50600a54640100000000900461ffff165b6018546201000090046001600160a01b0316301480156139f1575046606114155b156139fb57506111945b80600003613a0c5784915050610fd6565b6000612710613a1b8388614283565b613a259190614261565b90508015613a92573060009081526020819052604081208054839290613a4c9084906142e4565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613052818761429a565b601854610100900460ff1615613b005760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ca7565b613b0a8282613310565b158015613b245750600d546001600160a01b038281169116145b15611dcf576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556018805461ff001916610100179081905562010000900416613b9c576018805462010000600160b01b0319163062010000021790555b6011805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161226b565b80151581146119d257600080fd5b60008060408385031215613bfd57600080fd5b8235613c0881613bdc565b91506020830135613c1881613bdc565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613c6257613c62613c23565b604052919050565b600067ffffffffffffffff821115613c8457613c84613c23565b5060051b60200190565b6001600160a01b03811681146119d257600080fd5b600082601f830112613cb457600080fd5b81356020613cc9613cc483613c6a565b613c39565b82815260059290921b84018101918181019086841115613ce857600080fd5b8286015b84811015613d0c578035613cff81613c8e565b8352918301918301613cec565b509695505050505050565b60008060408385031215613d2a57600080fd5b823567ffffffffffffffff811115613d4157600080fd5b613d4d85828601613ca3565b9250506020830135613c1881613bdc565b600060208083528351808285015260005b81811015613d8b57858101830151858201604001528201613d6f565b506000604082860101526040601f19601f8301168501019250505092915050565b803561ffff81168114613dbe57600080fd5b919050565b60008060008060808587031215613dd957600080fd5b613de285613dac565b9350613df060208601613dac565b9250613dfe60408601613dac565b9150613e0c60608601613dac565b905092959194509250565b60008060408385031215613e2a57600080fd5b8235613e3581613c8e565b946020939093013593505050565b600060208284031215613e5557600080fd5b813561342081613c8e565b600080600060608486031215613e7557600080fd5b8335613e8081613c8e565b92506020840135613e9081613c8e565b929592945050506040919091013590565b60008060408385031215613eb457600080fd5b50508035926020909101359150565b60008060408385031215613ed657600080fd5b823567ffffffffffffffff80821115613eee57600080fd5b613efa86838701613ca3565b9350602091508185013581811115613f1157600080fd5b85019050601f81018613613f2457600080fd5b8035613f32613cc482613c6a565b81815260059190911b82018301908381019088831115613f5157600080fd5b928401925b82841015613f6f57833582529284019290840190613f56565b80955050505050509250929050565b600080600060608486031215613f9357600080fd5b613f9c84613dac565b9250613faa60208501613dac565b9150613fb860408501613dac565b90509250925092565b60008060408385031215613fd457600080fd5b8235613c0881613c8e565b600060208284031215613ff157600080fd5b5035919050565b60008060006060848603121561400d57600080fd5b833561401881613c8e565b9250602084013561402881613c8e565b9150604084013561403881613c8e565b809150509250925092565b6000806040838503121561405657600080fd5b823561406181613c8e565b91506020830135613c1881613c8e565b6000806000806080858703121561408757600080fd5b5050823594602084013594506040840135936060013592509050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b600081518084526020808501945080840160005b838110156141075781516001600160a01b0316875295820195908201906001016140e2565b509495945050505050565b60408152600061412560408301856140ce565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b61ffff81811683821601908082111561416757614167614136565b5092915050565b600181815b808511156141a957816000190482111561418f5761418f614136565b8085161561419c57918102915b93841c9390800290614173565b509250929050565b6000826141c057506001610f23565b816141cd57506000610f23565b81600181146141e357600281146141ed57614209565b6001915050610f23565b60ff8411156141fe576141fe614136565b50506001821b610f23565b5060208310610133831016604e8410600b841016171561422c575081810a610f23565b614236838361416e565b806000190482111561424a5761424a614136565b029392505050565b600061342060ff8416836141b1565b60008261427e57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610f2357610f23614136565b81810381811115610f2357610f23614136565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036142da576142da614136565b6001019392505050565b80820180821115610f2357610f23614136565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b6000806040838503121561436757600080fd5b825161437281613c8e565b6020840151909250613c1881613c8e565b6000806040838503121561439657600080fd5b505080516020909101519092909150565b6000602082840312156143b957600080fd5b5051919050565b6000602082840312156143d257600080fd5b815161342081613bdc565b6000602082840312156143ef57600080fd5b815161342081613c8e565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b85815284602082015260a06040820152600061446760a08301866140ce565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561449957600080fd5b8351925060208401519150604084015190509250925092565b61ffff8281168282160390808211156141675761416761413656fea264697066735822122025f88ba0f45d917362cce5ce61410043ecb2c1a26d790d94ea6e255647cd47fd64736f6c63430008130033

Deployed Bytecode Sourcemap

4435:24578:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6196:73;;;;;;;;;;;;6227:42;6196:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;6196:73:0;;;;;;;;6765:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;6765:28:0;222:177:1;16085:153:0;;;;;;;;;;-1:-1:-1;16085:153:0;;;;;:::i;:::-;;:::i;:::-;;15207:341;;;;;;;;;;-1:-1:-1;15207:341:0;;;;;:::i;:::-;;:::i;5619:109::-;;;;;;;;;;-1:-1:-1;5619:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;3074:6:1;3107:15;;;3089:34;;3159:15;;;3154:2;3139:18;;3132:43;3211:15;;3191:18;;;3184:43;;;;3052:2;3037:18;5619:109:0;2868:365:1;10449:80:0;;;;;;;;;;-1:-1:-1;10521:5:0;;;;;;;;;;;;;;;;;10449:80;;;;;;;:::i;16897:502::-;;;;;;;;;;-1:-1:-1;16897:502:0;;;;;:::i;:::-;;:::i;6135:26::-;;;;;;;;;;-1:-1:-1;6135:26:0;;;;;;;-1:-1:-1;;;;;6135:26:0;;;6102;;;;;;;;;;-1:-1:-1;6102:26:0;;;;;;;;;;;4751:14:1;;4744:22;4726:41;;4714:2;4699:18;6102:26:0;4586:187:1;11057:161:0;;;;;;;;;;-1:-1:-1;11057:161:0;;;;;:::i;:::-;;:::i;14431:140::-;;;;;;;;;;-1:-1:-1;14431:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14529:34:0;14505:4;14529:34;;;:25;:34;;;;;;;;;14431:140;18491:114;;;;;;;;;;;;;:::i;10184:83::-;;;;;;;;;;;;;:::i;11727:306::-;;;;;;;;;;-1:-1:-1;11727:306:0;;;;;:::i;:::-;;:::i;18103:264::-;;;;;;;;;;-1:-1:-1;18103:264:0;;;;;:::i;:::-;;:::i;26725:447::-;;;;;;;;;;-1:-1:-1;26725:447:0;;;;;:::i;:::-;;:::i;6873:33::-;;;;;;;;;;;;;;;;14735:141;;;;;;;;;;;;;:::i;5899:42::-;;;;;;;;;;;;5937:4;5899:42;;6800:25;;;;;;;;;;;;;;;;10273:80;;;;;;;;;;-1:-1:-1;10273:80:0;;5267:1;7349:36:1;;7337:2;7322:18;10273:80:0;7207:184:1;16436:453:0;;;;;;;;;;-1:-1:-1;16436:453:0;;;;;:::i;:::-;;:::i;15967:110::-;;;;;;;;;;-1:-1:-1;15967:110:0;;;;;:::i;:::-;;:::i;14006:140::-;;;;;;;;;;-1:-1:-1;14006:140:0;;;;;:::i;:::-;;:::i;17822:273::-;;;;;;;;;;-1:-1:-1;17822:273:0;;;;;:::i;:::-;;:::i;6168:21::-;;;;;;;;;;-1:-1:-1;6168:21:0;;;;-1:-1:-1;;;;;6168:21:0;;;7034:34;;;;;;;;;;-1:-1:-1;7034:34:0;;;;;;;;18613:189;;;;;;;;;;-1:-1:-1;18613:189:0;;;;;:::i;:::-;;:::i;19517:217::-;;;;;;;;;;-1:-1:-1;19517:217:0;;;;;:::i;:::-;;:::i;8822:654::-;;;;;;;;;;-1:-1:-1;8822:654:0;;;;;:::i;:::-;;:::i;14154:127::-;;;;;;;;;;-1:-1:-1;14154:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14245:28:0;14221:4;14245:28;;;:19;:28;;;;;;;;;14154:127;7075:36;;;;;;;;;;-1:-1:-1;7075:36:0;;;;;;;;;;;14289:134;;;;;;;;;;-1:-1:-1;14289:134:0;;;;;:::i;:::-;;:::i;7148:26::-;;;;;;;;;;;;;;;;13301:557;;;;;;;;;;-1:-1:-1;13301:557:0;;;;;:::i;:::-;;:::i;13866:132::-;;;;;;;;;;-1:-1:-1;13866:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;13960:30:0;13936:4;13960:30;;;:21;:30;;;;;;;;;13866:132;18375:108;;;;;;;;;;;;;:::i;10759:117::-;;;;;;;;;;-1:-1:-1;10759:117:0;;;;;:::i;:::-;;:::i;9484:310::-;;;;;;;;;;;;;:::i;17407:407::-;;;;;;;;;;-1:-1:-1;17407:407:0;;;;;:::i;:::-;;:::i;16246:182::-;;;;;;;;;;;;;:::i;12729:564::-;;;;;;;;;;-1:-1:-1;12729:564:0;;;;;:::i;:::-;;:::i;10535:79::-;;;;;;;;;;-1:-1:-1;10605:6:0;;-1:-1:-1;;;;;10605:6:0;10535:79;;11544:175;;;;;;;;;;;;;:::i;25486:737::-;;;;;;;;;;;;;:::i;10359:84::-;;;;;;;;;;-1:-1:-1;10433:7:0;;;;;;;;;;;;-1:-1:-1;;;10433:7:0;;;;10359:84;;10884:165;;;;;;;;;;-1:-1:-1;10884:165:0;;;;;:::i;:::-;;:::i;26421:296::-;;;;;;;;;;-1:-1:-1;26421:296:0;;;;;:::i;:::-;;:::i;5998:47::-;;;;;;;;;;;;6041:4;5998:47;;6832:34;;;;;;;;;;-1:-1:-1;6832:34:0;;;;;;;;19742:263;;;;;;;;;;-1:-1:-1;19742:263:0;;;;;:::i;:::-;;:::i;15693:202::-;;;;;;;;;;-1:-1:-1;15693:202:0;;;;;:::i;:::-;;:::i;5737:153::-;;;;;;;;;;-1:-1:-1;5737:153:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5737:153:0;;;;;-1:-1:-1;;;5737:153:0;;;;;;;;;;9118:6:1;9151:15;;;9133:34;;9203:15;;;9198:2;9183:18;;9176:43;9255:15;;;9235:18;;;9228:43;;;;9307:15;;9302:2;9287:18;;9280:43;9360:15;;;9354:3;9339:19;;9332:44;9095:3;9080:19;5737:153:0;8859:523:1;10620:133:0;;;;;;;;;;-1:-1:-1;10620:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10722:19:0;;;10704:7;10722:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10620:133;12041:680;;;;;;;;;;-1:-1:-1;12041:680:0;;;;;:::i;:::-;;:::i;26231:182::-;;;;;;;;;;;;;:::i;14948:251::-;;;;;;;;;;-1:-1:-1;14948:251:0;;;;;:::i;:::-;;:::i;6419:269::-;;;;;;;;;;-1:-1:-1;6419:269:0;;;;;;;;-1:-1:-1;;;;;6419:269:0;;;;;;;;;;;;;;-1:-1:-1;;;;;10086:15:1;;;10068:34;;10138:15;;;10133:2;10118:18;;10111:43;10190:15;;10170:18;;;10163:43;;;;10018:2;10003:18;6419:269:0;9780:432:1;18810:699:0;;;;;;;;;;-1:-1:-1;18810:699:0;;;;;:::i;:::-;;:::i;6719:39::-;;;;;;;;;;-1:-1:-1;6719:39:0;;;;;;;;;;;15556:129;;;;;;;;;;-1:-1:-1;15556:129:0;;;;;:::i;:::-;;:::i;14579:148::-;;;;;;;;;;-1:-1:-1;14579:148:0;;;;;:::i;:::-;;:::i;16085:153::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;;;;;;;;;16180:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;16180:50:0;;11140:14:1;;11133:22;16180:50:0::1;::::0;::::1;11115:41:1::0;11199:14;;11192:22;11172:18;;;11165:50;16180:11:0;;;::::1;-1:-1:-1::0;;;;;16180:11:0::1;::::0;:26:::1;::::0;11088:18:1;;16180:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16085:153:::0;;:::o;15207:341::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;15446:3:::1;15427:8;:15;:22;;15419:52;;;::::0;-1:-1:-1;;;15419:52:0;;11428:2:1;15419:52:0::1;::::0;::::1;11410:21:1::0;11467:2;11447:18;;;11440:30;-1:-1:-1;;;11486:18:1;;;11479:47;11543:18;;15419:52:0::1;11226:341:1::0;15419:52:0::1;15482:11;::::0;:58:::1;::::0;-1:-1:-1;;;15482:58:0;;:11;;;::::1;-1:-1:-1::0;;;;;15482:11:0::1;::::0;:39:::1;::::0;:58:::1;::::0;15522:8;;15532:7;;15482:58:::1;;;:::i;16897:502::-:0;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;17017:7:::1;:29:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;17057:29:0;;;;;;;;;;::::1;;;-1:-1:-1::0;;17139:25:0;-1:-1:-1;;;17097:31:0;;::::1;;-1:-1:-1::0;;17139:25:0;;;;;::::1;::::0;;;::::1;;::::0;;;17097:31;17195:21:::1;17057:29:::0;17017;17195:21:::1;:::i;:::-;:34;;;;:::i;:::-;:44;;;;:::i;:::-;17175:7;:64:::0;;-1:-1:-1;;17175:64:0::1;-1:-1:-1::0;;;17175:64:0::1;::::0;;::::1;;;::::0;;17285:9:::1;:17:::0;-1:-1:-1;;17266:36:0::1;::::0;17285:17;;::::1;::::0;::::1;::::0;17266:16:::1;:36;:::i;:::-;17321:7;:17:::0;17250:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;17321:17:0;::::1;;:26:::0;-1:-1:-1;17321:26:0::1;17313:78;;;::::0;-1:-1:-1;;;17313:78:0;;12892:2:1;17313:78:0::1;::::0;::::1;12874:21:1::0;12931:2;12911:18;;;12904:30;12970:34;12950:18;;;12943:62;-1:-1:-1;;;13021:18:1;;;13014:37;13068:19;;17313:78:0::1;12690:403:1::0;17313:78:0::1;17006:393;16897:502:::0;;;;:::o;11057:161::-;11134:4;11151:37;11160:10;11172:7;11181:6;11151:8;:37::i;:::-;-1:-1:-1;11206:4:0;11057:161;;;;;:::o;18491:114::-;18538:7;18583:13;5267:1;18583:2;:13;:::i;:::-;18565:14;;:32;;;;:::i;:::-;18558:39;;18491:114;:::o;10184:83::-;10239:7;5327:13;5267:1;5327:2;:13;:::i;:::-;5310:30;;5096:13;5310:30;:::i;11727:306::-;-1:-1:-1;;;;;11848:19:0;;11827:4;11848:19;;;:11;:19;;;;;;;;11868:10;11848:31;;;;;;;;-1:-1:-1;;11848:52:0;11844:126;;-1:-1:-1;;;;;11917:19:0;;;;;;:11;:19;;;;;;;;11937:10;11917:31;;;;;;;:41;;11952:6;;11917:19;:41;;11952:6;;11917:41;:::i;:::-;;;;-1:-1:-1;;11844:126:0;11989:36;11999:6;12007:9;12018:6;11989:9;:36::i;:::-;11982:43;11727:306;-1:-1:-1;;;;11727:306:0:o;18103:264::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;18245:3:::1;5327:13;5267:1;5327:2;:13;:::i;:::-;5310:30;::::0;5096:13:::1;5310:30;:::i;:::-;18235:13;;;;:::i;:::-;18223:7:::0;18212;5327:13:::1;5267:1;5327:2;:13;:::i;:::-;5310:30;::::0;5096:13:::1;5310:30;:::i;:::-;18202:17;;;;:::i;:::-;18201:29;;;;:::i;:::-;:48;;18193:109;;;::::0;-1:-1:-1;;;18193:109:0;;15211:2:1;18193:109:0::1;::::0;::::1;15193:21:1::0;15250:2;15230:18;;;15223:30;15289:34;15269:18;;;15262:62;-1:-1:-1;;;15340:18:1;;;15333:46;15396:19;;18193:109:0::1;15009:412:1::0;18193:109:0::1;18352:7:::0;18341;5327:13:::1;5267:1;5327:2;:13;:::i;:::-;5310:30;::::0;5096:13:::1;5310:30;:::i;:::-;18331:17;;;;:::i;:::-;18330:29;;;;:::i;:::-;18313:14;:46:::0;-1:-1:-1;;18103:264:0:o;26725:447::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;26860:7:::1;:14;26841:8;:15;:33;26833:67;;;::::0;-1:-1:-1;;;26833:67:0;;15628:2:1;26833:67:0::1;::::0;::::1;15610:21:1::0;15667:2;15647:18;;;15640:30;-1:-1:-1;;;15686:18:1;;;15679:51;15747:18;;26833:67:0::1;15426:345:1::0;26833:67:0::1;26916:8;26911:254;26934:8;:15;26930:1;:19;;;26911:254;;;27015:13;5267:1;27015:2;:13;:::i;:::-;27004:7;27012:1;27004:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;26979:21;26989:10;26979:9;:21::i;:::-;:49;;26971:80;;;::::0;-1:-1:-1;;;26971:80:0;;16110:2:1;26971:80:0::1;::::0;::::1;16092:21:1::0;16149:2;16129:18;;;16122:30;-1:-1:-1;;;16168:18:1;;;16161:48;16226:18;;26971:80:0::1;15908:342:1::0;26971:80:0::1;27066:87;27083:10;27095:8;27104:1;27095:11;;;;;;;;;;:::i;:::-;;;;;;;5267:1;27119:2;:13;;;;:::i;:::-;27108:7;27116:1;27108:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27134:5;27141::::0;27148:4:::1;27066:16;:87::i;:::-;-1:-1:-1::0;26951:3:0;::::1;::::0;::::1;:::i;:::-;;;;26911:254;;;;26725:447:::0;;:::o;14735:141::-;14788:7;14845:21;14863:1;14845:9;:21::i;:::-;14827:15;6227:42;14827:9;:15::i;:::-;:39;;;;:::i;:::-;5327:13;5267:1;5327:2;:13;:::i;:::-;5310:30;;5096:13;5310:30;:::i;:::-;14816:51;;;;:::i;16436:453::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;16544:14:::1;::::0;::::1;;16543:15;16535:45;;;::::0;-1:-1:-1;;;16535:45:0;;16789:2:1;16535:45:0::1;::::0;::::1;16771:21:1::0;16828:2;16808:18;;;16801:30;-1:-1:-1;;;16847:18:1;;;16840:47;16904:18;;16535:45:0::1;16587:341:1::0;16535:45:0::1;5937:4;16599:6;:21;;;;:65;;;;;5987:4;16641:7;:23;;;;16599:65;:117;;;;;6041:4;16685:11;:31;;;;16599:117;16591:170;;;::::0;-1:-1:-1;;;16591:170:0;;17135:2:1;16591:170:0::1;::::0;::::1;17117:21:1::0;17174:2;17154:18;;;17147:30;17213:25;17193:18;;;17186:53;17256:18;;16591:170:0::1;16933:347:1::0;16591:170:0::1;16772:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;16808:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;16846:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16436:453::o;15967:110::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;16036:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;16036:33:0;;-1:-1:-1;;;;;178:32:1;;;16036:33:0::1;::::0;::::1;160:51:1::0;16036:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;16036:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;14006:140:::0;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14098:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;14098:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14006:140::o;17822:273::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;17967:4:::1;5327:13;5267:1;5327:2;:13;:::i;:::-;5310:30;::::0;5096:13:::1;5310:30;:::i;:::-;17953:11;::::0;17963:1:::1;17953:11;:::i;:::-;:18;;;;:::i;:::-;17941:7:::0;17930;5327:13:::1;5267:1;5327:2;:13;:::i;:::-;5310:30;::::0;5096:13:::1;5310:30;:::i;:::-;17920:17;;;;:::i;:::-;17919:29;;;;:::i;:::-;:53;;17911:121;;;::::0;-1:-1:-1;;;17911:121:0;;17487:2:1;17911:121:0::1;::::0;::::1;17469:21:1::0;17526:2;17506:18;;;17499:30;17565:34;17545:18;;;17538:62;17636:25;17616:18;;;17609:53;17679:19;;17911:121:0::1;17285:419:1::0;17911:121:0::1;18080:7:::0;18069;5327:13:::1;5267:1;5327:2;:13;:::i;:::-;5310:30;::::0;5096:13:::1;5310:30;:::i;:::-;18059:17;;;;:::i;:::-;18058:29;;;;:::i;:::-;18043:12;:44:::0;-1:-1:-1;;17822:273:0:o;18613:189::-;18742:6;;18704:7;;6088:5;;18752:21;;18732:17;;-1:-1:-1;;;;;18742:6:0;18732:9;:17::i;:::-;:41;;;;:::i;:::-;18731:62;;;;:::i;19517:217::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;19647:3:::1;19621:22;:29;;19613:64;;;::::0;-1:-1:-1;;;19613:64:0;;17911:2:1;19613:64:0::1;::::0;::::1;17893:21:1::0;17950:2;17930:18;;;17923:30;-1:-1:-1;;;17969:18:1;;;17962:52;18031:18;;19613:64:0::1;17709:346:1::0;19613:64:0::1;19688:13;:38:::0;19517:217::o;8822:654::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8901:22:0;::::1;8893:96;;;;-1:-1:-1::0;;;8893:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;9008:16:0;::::1;::::0;9000:90:::1;;;;-1:-1:-1::0;;;9000:90:0::1;;;;;;;:::i;:::-;9121:6;::::0;9101:34:::1;::::0;-1:-1:-1;;;;;9121:6:0::1;;9101:19;:34::i;:::-;9146:35;9166:8;9176:4;9146:19;:35::i;:::-;9216:6;::::0;9226:1:::1;::::0;9206:17:::1;::::0;-1:-1:-1;;;;;9216:6:0::1;9206:9;:17::i;:::-;:21;9202:127;;;9261:6;::::0;9244:73:::1;::::0;-1:-1:-1;;;;;9261:6:0::1;9269:8:::0;9279:17:::1;9261:6:::0;9279:9:::1;:17::i;9244:73::-;;9202:127;9368:6;::::0;;-1:-1:-1;;;;;9385:17:0;;::::1;-1:-1:-1::0;;;;;;9385:17:0;::::1;::::0;::::1;::::0;;;9418:40:::1;::::0;9368:6;::::1;::::0;9385:17;9368:6;;9418:40:::1;::::0;9349:16:::1;::::0;9418:40:::1;8882:594;8822:654:::0;:::o;14289:134::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14377:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14377:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14289:134::o;13301:557::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;13376:14:::1;::::0;::::1;;13375:15;13367:24;;;::::0;::::1;;13426:4;-1:-1:-1::0;;;;;13410:21:0;::::1;::::0;13402:48:::1;;;::::0;-1:-1:-1;;;13402:48:0;;18692:2:1;13402:48:0::1;::::0;::::1;18674:21:1::0;18731:2;18711:18;;;18704:30;-1:-1:-1;;;18750:18:1;;;18743:44;18804:18;;13402:48:0::1;18490:338:1::0;13402:48:0::1;13461:11;:31:::0;;-1:-1:-1;;;;;;13461:31:0::1;::::0;-1:-1:-1;;;;;13461:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;13507:23:::1;::::0;;-1:-1:-1;;;13507:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;13507:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;13507:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;13507:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;13503:348;;13840:8;::::0;::::1;13503:348;13594:9;:29:::0;;-1:-1:-1;;;;;;13594:29:0::1;;-1:-1:-1::0;;;;;13594:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13625:6:::1;:22:::0;;-1:-1:-1;;;;;;13625:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13649:15:0;;;-1:-1:-1;13649:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13649:22:0::1;::::0;;::::1;::::0;;13696:6:::1;::::0;13712:9;;13687:55:::1;::::0;13696:6;::::1;::::0;13712:9;;::::1;;-1:-1:-1::0;;13687:8:0::1;:55::i;:::-;13789:9;::::0;13757:62:::1;::::0;13774:4:::1;::::0;13789:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13789:9:0::1;-1:-1:-1::0;;13757:8:0::1;:62::i;13503:348::-;13301:557:::0;:::o;18375:108::-;18418:7;18461:13;5267:1;18461:2;:13;:::i;:::-;18445:12;;:30;;;;:::i;10759:117::-;-1:-1:-1;;;;;10852:16:0;10825:7;10852:16;;;;;;;;;;;;10759:117::o;9484:310::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;9551:14:::1;::::0;::::1;;9543:74;;;::::0;-1:-1:-1;;;9543:74:0;;19425:2:1;9543:74:0::1;::::0;::::1;19407:21:1::0;19464:2;19444:18;;;19437:30;19503:34;19483:18;;;19476:62;-1:-1:-1;;;19554:18:1;;;19547:45;19609:19;;9543:74:0::1;19223:411:1::0;9543:74:0::1;9648:6;::::0;9628:34:::1;::::0;-1:-1:-1;;;;;9648:6:0::1;;9628:19;:34::i;:::-;9692:6;::::0;;-1:-1:-1;;;;;;9709:19:0;::::1;::::0;;;9744:42:::1;::::0;-1:-1:-1;;;;;9692:6:0;;::::1;::::0;9673:16:::1;::::0;9692:6;;9744:42:::1;::::0;9673:16;;9744:42:::1;9532:262;9484:310::o:0;17407:407::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17545:23:0;::::1;::::0;;::::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;17572:21:0;::::1;::::0;::::1;17545:48;:76;;;;-1:-1:-1::0;;;;;;17597:24:0;::::1;::::0;::::1;17545:76;17537:112;;;::::0;-1:-1:-1;;;17537:112:0;;19841:2:1;17537:112:0::1;::::0;::::1;19823:21:1::0;19880:2;19860:18;;;19853:30;19919:25;19899:18;;;19892:53;19962:18;;17537:112:0::1;19639:347:1::0;17537:112:0::1;17660:11;:42:::0;;-1:-1:-1;;;;;17660:42:0;;::::1;-1:-1:-1::0;;;;;;17660:42:0;;::::1;;::::0;;;17713:19;:38;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17762:22;:44;;;;;::::1;::::0;::::1;;::::0;;17407:407::o;16246:182::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;16399:14:::1;:21:::0;;-1:-1:-1;;16399:21:0::1;16416:4;16399:21;::::0;;16246:182::o;12729:564::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;12811:7:::1;12806:480;;-1:-1:-1::0;;;;;12835:13:0;;::::1;12851:5;12835:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12835:21:0::1;::::0;;12871:11:::1;::::0;:34;;-1:-1:-1;;;12871:34:0;;::::1;::::0;::::1;20159:51:1::0;;;;20226:18;;;20219:50;;;;12871:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;20132:18:1;;12871:34:0::1;19991:284:1::0;12806:480:0::1;12942:17;::::0;:22;12938:135:::1;;13031:6;13011:17;;12993:15;:35;;;;:::i;:::-;:44;12985:72;;;::::0;-1:-1:-1;;;12985:72:0;;20482:2:1;12985:72:0::1;::::0;::::1;20464:21:1::0;20521:2;20501:18;;;20494:30;-1:-1:-1;;;20540:18:1;;;20533:45;20595:18;;12985:72:0::1;20280:339:1::0;12985:72:0::1;-1:-1:-1::0;;;;;13096:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;13095:14;13087:54;;;::::0;-1:-1:-1;;;13087:54:0;;20826:2:1;13087:54:0::1;::::0;::::1;20808:21:1::0;20865:2;20845:18;;;20838:30;20904:29;20884:18;;;20877:57;20951:18;;13087:54:0::1;20624:351:1::0;13087:54:0::1;-1:-1:-1::0;;;;;13156:13:0;;::::1;;::::0;;;13172:4:::1;13156:13;::::0;;;;;;;;:20;;-1:-1:-1;;13156:20:0::1;::::0;::::1;::::0;;13211:15:::1;13191:17;:35:::0;13241:11:::1;::::0;:33;;-1:-1:-1;;;13241:33:0;;::::1;::::0;::::1;20159:51:1::0;;;;20226:18;;;20219:50;13241:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;20132:18:1;;13241:33:0::1;19991:284:1::0;12806:480:0::1;12729:564:::0;;:::o;11544:175::-;8676:6;;11610:4;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;11659:9:::1;::::0;11627:62:::1;::::0;11644:4:::1;::::0;11659:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11659:9:0::1;-1:-1:-1::0;;11627:8:0::1;:62::i;:::-;-1:-1:-1::0;11707:4:0::1;11544:175:::0;:::o;25486:737::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;25548:14:::1;::::0;::::1;;25547:15;25539:52;;;::::0;-1:-1:-1;;;25539:52:0;;21182:2:1;25539:52:0::1;::::0;::::1;21164:21:1::0;21221:2;21201:18;;;21194:30;21260:26;21240:18;;;21233:54;21304:18;;25539:52:0::1;20980:348:1::0;25539:52:0::1;25610:16;::::0;::::1;::::0;::::1;;;25602:53;;;::::0;-1:-1:-1;;;25602:53:0;;21535:2:1;25602:53:0::1;::::0;::::1;21517:21:1::0;21574:2;21554:18;;;21547:30;21613:26;21593:18;;;21586:54;21657:18;;25602:53:0::1;21333:348:1::0;25602:53:0::1;25678:11;::::0;;;::::1;-1:-1:-1::0;;;;;25678:11:0::1;25666:106;;25720:11;:40:::0;;-1:-1:-1;;;;;;25720:40:0::1;25754:4;25720:40:::0;::::1;;::::0;;25666:106:::1;25786:11;::::0;25808:6:::1;::::0;25786:87:::1;::::0;-1:-1:-1;;;25786:87:0;;-1:-1:-1;;;;;25808:6:0;;::::1;25786:87;::::0;::::1;21909:51:1::0;22008:10;25823:12:0::1;21996:23:1::0;21976:18;;;21969:51;22068:18;25845:15:0::1;22056:31:1::0;22036:18;;;22029:59;5267:1:0::1;22104:18:1::0;;;22097:45;25786:11:0;;;::::1;;::::0;:21:::1;::::0;21881:19:1;;25786:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25782:103:::0;25899:11:::1;::::0;25930:6:::1;::::0;-1:-1:-1;;;;;25899:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;25920:17:::1;::::0;25930:6:::1;25920:9;:17::i;:::-;25899:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;25899:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;25899:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;25899:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;25895:207:::0;::::1;;26010:13;:29:::0;;;;26054:10:::1;:27:::0;25895:207:::1;26112:14;:21:::0;;-1:-1:-1;;26112:21:0;;::::1;26129:4;26112:21;::::0;;;26144:23:::1;:31:::0;;;;::::1;::::0;;26200:15:::1;26186:11;:29:::0;25486:737::o;10884:165::-;10962:4;10979:40;10989:10;11001:9;11012:6;10979:9;:40::i;:::-;-1:-1:-1;11037:4:0;;10884:165;-1:-1:-1;;;10884:165:0:o;26421:296::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;26499:16:::1;::::0;::::1;::::0;::::1;;;26495:111;;;26557:4;-1:-1:-1::0;;;;;26540:22:0;::::1;::::0;26532:62:::1;;;::::0;-1:-1:-1;;;26532:62:0;;22605:2:1;26532:62:0::1;::::0;::::1;22587:21:1::0;22644:2;22624:18;;;22617:30;22683:29;22663:18;;;22656:57;22730:18;;26532:62:0::1;22403:351:1::0;26532:62:0::1;26670:6;::::0;26678:30:::1;::::0;-1:-1:-1;;;26678:30:0;;26702:4:::1;26678:30;::::0;::::1;160:51:1::0;26638:5:0;;-1:-1:-1;;;;;26655:14:0;;::::1;::::0;::::1;::::0;26670:6;;;::::1;::::0;26655:14;;26678:15:::1;::::0;133:18:1;;26678:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26655:54;::::0;-1:-1:-1;;;;;;26655:54:0::1;::::0;;;;;;-1:-1:-1;;;;;23140:32:1;;;26655:54:0::1;::::0;::::1;23122:51:1::0;23189:18;;;23182:34;23095:18;;26655:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19742:263::-:0;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;19851:19:::1;:33:::0;;-1:-1:-1;;19851:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;19895:22:::1;:47:::0;;-1:-1:-1;;19895:47:0::1;::::0;::::1;;;::::0;;19958:39:::1;::::0;4726:41:1;;;19958:39:0::1;::::0;4714:2:1;4699:18;19958:39:0::1;;;;;;;;19742:263:::0;;:::o;15693:202::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;15849:11:::1;::::0;:38:::1;::::0;-1:-1:-1;;;15849:38:0;;-1:-1:-1;;;;;178:32:1;;;15849:38:0::1;::::0;::::1;160:51:1::0;15849:11:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;133:18:1;;15849:38:0::1;14:203:1::0;12041:680:0;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;12121:16:::1;::::0;::::1;::::0;::::1;;;12120:17;12112:60;;;::::0;-1:-1:-1;;;12112:60:0;;23679:2:1;12112:60:0::1;::::0;::::1;23661:21:1::0;23718:2;23698:18;;;23691:30;23757:32;23737:18;;;23730:60;23807:18;;12112:60:0::1;23477:354:1::0;12112:60:0::1;12183:20;12216:9;12183:43;;12237:16;12267:10;-1:-1:-1::0;;;;;12267:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12256:40:0::1;;12305:4;12312:10;-1:-1:-1::0;;;;;12312:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12256:74;::::0;-1:-1:-1;;;;;;12256:74:0::1;::::0;;;;;;-1:-1:-1;;;;;24322:15:1;;;12256:74:0::1;::::0;::::1;24304:34:1::0;24374:15;;24354:18;;;24347:43;24239:18;;12256:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12349:6;::::0;-1:-1:-1;;;;;12349:6:0;;::::1;12359:5;12341:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;12341:23:0::1;::::0;;12237:93;;-1:-1:-1;12379:22:0;::::1;12375:200;;12438:10;-1:-1:-1::0;;;;;12438:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12427:43:0::1;;12479:4;12486:10;-1:-1:-1::0;;;;;12486:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12427:77;::::0;-1:-1:-1;;;;;;12427:77:0::1;::::0;;;;;;-1:-1:-1;;;;;24322:15:1;;;12427:77:0::1;::::0;::::1;24304:34:1::0;24374:15;;24354:18;;;24347:43;24239:18;;12427:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12418:6;:86:::0;;-1:-1:-1;;;;;;12418:86:0::1;-1:-1:-1::0;;;;;12418:86:0;;;::::1;::::0;;;::::1;::::0;;12375:200:::1;;;12546:6;:17:::0;;-1:-1:-1;;;;;;12546:17:0::1;-1:-1:-1::0;;;;;12546:17:0;::::1;;::::0;;12375:200:::1;12585:9;:22:::0;;-1:-1:-1;;;;;;12585:22:0::1;;-1:-1:-1::0;;;;;12585:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12626:6:::1;::::0;;::::1;-1:-1:-1::0;12618:15:0;;;-1:-1:-1;12618:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12618:22:0::1;::::0;;::::1;::::0;;12683:9;;12651:62:::1;::::0;12668:4:::1;::::0;12683:9;::::1;;-1:-1:-1::0;;12651:8:0::1;:62::i;26231:182::-:0;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;26298:16:::1;::::0;::::1;::::0;::::1;;;26297:17;26289:58;;;::::0;-1:-1:-1;;;26289:58:0;;24603:2:1;26289:58:0::1;::::0;::::1;24585:21:1::0;24642:2;24622:18;;;24615:30;24681;24661:18;;;24654:58;24729:18;;26289:58:0::1;24401:352:1::0;26289:58:0::1;26366:6;::::0;26358:47:::1;::::0;-1:-1:-1;;;;;26366:6:0;;::::1;::::0;26383:21:::1;26358:47:::0;::::1;;;::::0;26366:6:::1;26358:47:::0;26366:6;26358:47;26383:21;26366:6;26358:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;14948:251:::0;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;15142:11:::1;::::0;:49:::1;::::0;-1:-1:-1;;;15142:49:0;;-1:-1:-1;;;;;20177:32:1;;;15142:49:0::1;::::0;::::1;20159:51:1::0;20253:14;;20246:22;20226:18;;;20219:50;15142:11:0;;;::::1;::::0;;::::1;::::0;:31:::1;::::0;20132:18:1;;15142:49:0::1;19991:284:1::0;18810:699:0;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;19010:16;18990;5327:13:::1;5267:1;5327:2;:13;:::i;:::-;5310:30;::::0;5096:13:::1;5310:30;:::i;:::-;18980:26;;;;:::i;:::-;18979:47;;;;:::i;:::-;18963:13;:63:::0;19078:13;19061;5327::::1;5267:1;5327:2;:13;:::i;:::-;5310:30;::::0;5096:13:::1;5310:30;:::i;:::-;19051:23;;;;:::i;:::-;19050:41;;;;:::i;:::-;19037:10;:54:::0;;;19110:13:::1;::::0;:27:::1;;19102:73;;;::::0;-1:-1:-1;;;19102:73:0;;24960:2:1;19102:73:0::1;::::0;::::1;24942:21:1::0;24999:2;24979:18;;;24972:30;25038:34;25018:18;;;25011:62;-1:-1:-1;;;25089:18:1;;;25082:31;25130:19;;19102:73:0::1;24758:397:1::0;19102:73:0::1;19219:6;::::0;6088:5:::1;::::0;19209:17:::1;::::0;-1:-1:-1;;;;;19219:6:0::1;19209:9;:17::i;:::-;:23;::::0;19229:3:::1;19209:23;:::i;:::-;19208:44;;;;:::i;:::-;19194:10;;:58;;19186:106;;;::::0;-1:-1:-1;;;19186:106:0;;25362:2:1;19186:106:0::1;::::0;::::1;25344:21:1::0;25401:2;25381:18;;;25374:30;25440:34;25420:18;;;25413:62;-1:-1:-1;;;25491:18:1;;;25484:33;25534:19;;19186:106:0::1;25160:399:1::0;19186:106:0::1;19335:9;5327:13;5267:1;5327:2;:13;:::i;:::-;5310:30;::::0;5096:13:::1;5310:30;:::i;:::-;19325:19;;;;:::i;:::-;19311:10;;:33;;19303:92;;;;-1:-1:-1::0;;;19303:92:0::1;;;;;;;:::i;:::-;19441:9;5327:13;5267:1;5327:2;:13;:::i;:::-;5310:30;::::0;5096:13:::1;5310:30;:::i;:::-;19431:19;;;;:::i;:::-;19414:13;;:36;;19406:95;;;;-1:-1:-1::0;;;19406:95:0::1;;;;;;;:::i;:::-;18810:699:::0;;;;:::o;15556:129::-;15643:11;;:34;;-1:-1:-1;;;15643:34:0;;-1:-1:-1;;;;;178:32:1;;;15643:34:0;;;160:51:1;15619:4:0;;15643:11;;;;;:25;;133:18:1;;15643:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14579:148::-;8676:6;;-1:-1:-1;;;;;8676:6:0;8686:10;8676:20;8668:50;;;;-1:-1:-1;;;8668:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14675:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14675:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14579:148::o;11226:310::-;-1:-1:-1;;;;;11321:20:0;;11313:52;;;;-1:-1:-1;;;11313:52:0;;26181:2:1;11313:52:0;;;26163:21:1;26220:2;26200:18;;;26193:30;-1:-1:-1;;;26239:18:1;;;26232:49;26298:18;;11313:52:0;25979:343:1;11313:52:0;-1:-1:-1;;;;;11384:21:0;;11376:53;;;;-1:-1:-1;;;11376:53:0;;26181:2:1;11376:53:0;;;26163:21:1;26220:2;26200:18;;;26193:30;-1:-1:-1;;;26239:18:1;;;26232:49;26298:18;;11376:53:0;25979:343:1;11376:53:0;-1:-1:-1;;;;;11442:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11495:33;;368:25:1;;;11495:33:0;;341:18:1;11495:33:0;;;;;;;11226:310;;;:::o;20467:2176::-;20546:4;-1:-1:-1;;;;;20571:18:0;;20563:68;;;;-1:-1:-1;;;20563:68:0;;26529:2:1;20563:68:0;;;26511:21:1;26568:2;26548:18;;;26541:30;26607:34;26587:18;;;26580:62;-1:-1:-1;;;26658:18:1;;;26651:35;26703:19;;20563:68:0;26327:401:1;20563:68:0;-1:-1:-1;;;;;20650:16:0;;20642:64;;;;-1:-1:-1;;;20642:64:0;;26935:2:1;20642:64:0;;;26917:21:1;26974:2;26954:18;;;26947:30;27013:34;26993:18;;;26986:62;-1:-1:-1;;;27064:18:1;;;27057:33;27107:19;;20642:64:0;26733:399:1;20642:64:0;20734:1;20725:6;:10;20717:64;;;;-1:-1:-1;;;20717:64:0;;27339:2:1;20717:64:0;;;27321:21:1;27378:2;27358:18;;;27351:30;27417:34;27397:18;;;27390:62;-1:-1:-1;;;27468:18:1;;;27461:39;27517:19;;20717:64:0;27137:405:1;20717:64:0;-1:-1:-1;;;;;20880:13:0;;20792:8;20880:13;;;:7;:13;;;;;;20792:8;;;;20880:13;;20876:162;;;20916:4;20910:10;;20876:162;;;-1:-1:-1;;;;;20942:11:0;;;;;;:7;:11;;;;;;;;20938:100;;;20977:4;20970:11;;20938:100;;;-1:-1:-1;21022:4:0;20938:100;21052:20;21063:4;21069:2;21052:10;:20::i;:::-;21048:874;;;21093:14;;;;21089:319;;21133:5;21128:265;;21163:34;;-1:-1:-1;;;21163:34:0;;27749:2:1;21163:34:0;;;27731:21:1;27788:2;27768:18;;;27761:30;27827:26;27807:18;;;27800:54;27871:18;;21163:34:0;27547:348:1;21128:265:0;-1:-1:-1;;;;;21228:31:0;;;;;;:25;:31;;;;;;;;21227:32;:66;;;;-1:-1:-1;;;;;;21264:29:0;;;;;;:25;:29;;;;;;;;21263:30;21227:66;21223:170;;;21318:55;;-1:-1:-1;;;21318:55:0;;28102:2:1;21318:55:0;;;28084:21:1;28141:2;28121:18;;;28114:30;28180:34;28160:18;;;28153:62;-1:-1:-1;;;28231:18:1;;;28224:43;28284:19;;21318:55:0;27900:409:1;21223:170:0;21426:3;:11;;;;21433:4;21426:11;21422:232;;;-1:-1:-1;;;;;21462:27:0;;;;;;:21;:27;;;;;;;;21461:28;:58;;;;-1:-1:-1;;;;;;21494:25:0;;;;;;:21;:25;;;;;;;;21493:26;21461:58;21457:182;;;21562:12;;21552:6;:22;;21544:75;;;;-1:-1:-1;;;21544:75:0;;28516:2:1;21544:75:0;;;28498:21:1;28555:2;28535:18;;;28528:30;28594:34;28574:18;;;28567:62;-1:-1:-1;;;28645:18:1;;;28638:38;28693:19;;21544:75:0;28314:404:1;21544:75:0;21686:9;;-1:-1:-1;;;;;21672:24:0;;;21686:9;;;;;21672:24;;;;:33;;;21701:4;21700:5;21672:33;21668:243;;;-1:-1:-1;;;;;21731:25:0;;;;;;:21;:25;;;;;;;;21726:170;;21815:14;;21805:6;21789:13;21799:2;21789:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;21781:95;;;;-1:-1:-1;;;21781:95:0;;28925:2:1;21781:95:0;;;28907:21:1;28964:2;28944:18;;;28937:30;29003:34;28983:18;;;28976:62;-1:-1:-1;;;29054:18:1;;;29047:40;29104:19;;21781:95:0;28723:406:1;21781:95:0;21938:4;21934:632;;;21964:6;;;;21959:596;;21995:19;;;;;;;21991:549;;;22039:28;22070:24;22088:4;22070:9;:24::i;:::-;22039:55;;22145:13;;22121:20;:37;22117:404;;22205:10;;22246:22;;;;22242:97;;;22303:13;;22293:6;;6088:5;;22303:13;22283:17;;-1:-1:-1;;;;;22293:6:0;22283:9;:17::i;:::-;:33;;;;:::i;:::-;22282:54;;;;:::i;:::-;22272:64;;22242:97;22393:7;22369:20;:31;22365:72;;22427:7;22404:30;;22365:72;22463:34;22476:20;22463:12;:34::i;:::-;22160:361;22117:404;22016:524;21991:549;22583:52;22600:4;22606:2;22610:6;22618:3;22623:4;22629:5;22583:16;:52::i;:::-;22576:59;20467:2176;-1:-1:-1;;;;;;;20467:2176:0:o;27180:1055::-;27299:4;27320:20;27331:4;27337:2;27320:10;:20::i;:::-;27316:228;;;27375:11;;:39;;-1:-1:-1;;;27375:39:0;;-1:-1:-1;;;;;29392:15:1;;;27375:39:0;;;29374:34:1;29444:15;;;29424:18;;;29417:43;29476:18;;;29469:34;;;27344:12:0;;27375:11;;;;;:21;;29309:18:1;;27375:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;27375:39:0;;;;;;;;-1:-1:-1;;27375:39:0;;;;;;;;;;;;:::i;:::-;;;27371:122;;27482:8;;;27371:122;27465:5;-1:-1:-1;27511:7:0;27507:26;;27522:8;;;27507:26;27342:202;27316:228;-1:-1:-1;;;;;27588:25:0;;27554:12;27588:25;;;:19;:25;;;;;;27569:4;;27588:25;;;:52;;-1:-1:-1;;;;;;27617:23:0;;;;;;:19;:23;;;;;;;;27588:52;27584:99;;;-1:-1:-1;27666:5:0;27584:99;-1:-1:-1;;;;;27693:13:0;;:7;:13;;;;;;;;;;:23;;27710:6;;27693:7;:23;;27710:6;;27693:23;:::i;:::-;;;;-1:-1:-1;27727:22:0;;-1:-1:-1;27753:7:0;27752:55;;27801:6;27752:55;;;27764:34;27774:4;27780:6;27788:3;27793:4;27764:9;:34::i;:::-;27727:80;;27833:14;27818:7;:11;27826:2;-1:-1:-1;;;;;27818:11:0;-1:-1:-1;;;;;27818:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;27878:2;-1:-1:-1;;;;;27863:34:0;27872:4;-1:-1:-1;;;;;27863:34:0;;27882:14;27863:34;;;;368:25:1;;356:2;341:18;;222:177;27863:34:0;;;;;;;;27913:16;;;;;;;27908:298;;27946:28;27965:4;27971:2;27946:18;:28::i;:::-;27994:16;;;;;;;27993:17;:41;;;;;28014:20;28025:4;28031:2;28014:10;:20::i;:::-;27993:77;;;;-1:-1:-1;;;;;;28039:31:0;;;;;;:25;:31;;;;;;;;28038:32;27993:77;:111;;;;-1:-1:-1;;;;;;28075:29:0;;;;;;:25;:29;;;;;;;;28074:30;27993:111;:121;;;;;28109:5;28108:6;27993:121;27989:206;;;28135:44;;-1:-1:-1;;;28135:44:0;;29716:2:1;28135:44:0;;;29698:21:1;29755:2;29735:18;;;29728:30;29794:34;29774:18;;;29767:62;-1:-1:-1;;;29845:18:1;;;29838:32;29887:19;;28135:44:0;29514:398:1;27989:206:0;-1:-1:-1;28223:4:0;;27180:1055;-1:-1:-1;;;;;;;;27180:1055:0:o;20013:446::-;20114:6;;20082:4;;-1:-1:-1;;;;;20106:14:0;;;20114:6;;20106:14;;;;:43;;-1:-1:-1;20143:6:0;;-1:-1:-1;;;;;20137:12:0;;;20143:6;;20137:12;;20106:43;:79;;;;-1:-1:-1;20179:6:0;;-1:-1:-1;;;;;20179:6:0;20166:9;:19;;20106:79;:118;;;;-1:-1:-1;;;;;;20203:21:0;;;;;;:17;:21;;;;;;;;20202:22;20106:118;:159;;;;-1:-1:-1;;;;;;20242:23:0;;;;;;:17;:23;;;;;;;;20241:24;20106:159;:186;;;;-1:-1:-1;;;;;;20282:10:0;;6227:42;20282:10;;20106:186;:219;;;;-1:-1:-1;;;;;;20309:16:0;;;;20106:219;:257;;;;-1:-1:-1;;;;;;20342:21:0;;20358:4;20342:21;;20106:257;:302;;;;-1:-1:-1;20396:11:0;;-1:-1:-1;;;;;20380:28:0;;;20396:11;;;;;20380:28;;20106:302;:345;;;;-1:-1:-1;20439:11:0;;-1:-1:-1;;;;;20425:26:0;;;20439:11;;;;;20425:26;;20106:345;20099:352;20013:446;-1:-1:-1;;;20013:446:0:o;22651:2256::-;7339:6;:13;;-1:-1:-1;;7339:13:0;7348:4;7339:13;;;22734:30:::1;::::0;;::::1;::::0;::::1;::::0;;22757:7:::1;22734:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;22734:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;22734:30:0;::::1;::::0;;::::1;::::0;;;;;;7339:6;22779:21;22775:60:::1;;22817:7;;;22775:60;22871:4;22851:26;::::0;;;:11:::1;:26;::::0;;;;;;;22886:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;22886:9:0::1;22851:46:::0;;;;;;;;-1:-1:-1;;22851:67:0::1;22847:166;;22955:4;22935:26;::::0;;;:11:::1;:26;::::0;;;;;;;22970:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;22970:9:0::1;22935:46:::0;;;;;;;-1:-1:-1;;22935:66:0;;22847:166:::1;23025:17;23110:1;23090:6;:16;;;23046:60;;23070:6;:16;;;23047:39;;:20;:39;;;;:::i;:::-;23046:60;;;;:::i;:::-;23045:66;;;;:::i;:::-;23025:86:::0;-1:-1:-1;23122:15:0::1;23140:32;23025:86:::0;23140:20;:32:::1;:::i;:::-;23217:16;::::0;;23231:1:::1;23217:16:::0;;;;;::::1;::::0;;23122:50;;-1:-1:-1;23193:21:0::1;::::0;23217:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23217:16:0::1;23193:40;;23262:4;23244;23249:1;23244:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23244:23:0::1;;;-1:-1:-1::0;;;;;23244:23:0::1;;;::::0;::::1;23288:9;;;;;;;;;-1:-1:-1::0;;;;;23288:9:0::1;-1:-1:-1::0;;;;;23288:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23278:4;23283:1;23278:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23278:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23321:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;23321:186:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;23396:7;;23418:1:::1;::::0;23434:4;;23461::::1;::::0;23481:15:::1;::::0;23321:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23317:233;;23532:7;;;;;;23317:233;23583:21;23562:18;23669:7:::0;23643:22:::1;23656:9:::0;23583:21;23643:22:::1;:::i;:::-;23642:34;;;;:::i;:::-;23615:61:::0;-1:-1:-1;23693:13:0;;23689:400:::1;;23727:9;::::0;:222:::1;::::0;-1:-1:-1;;;23727:222:0;;23804:4:::1;23727:222;::::0;::::1;30845:34:1::0;30895:18;;;30888:34;;;23856:1:0::1;30938:18:1::0;;;30931:34;;;30981:18;;;30974:34;6227:42:0::1;31024:19:1::0;;;31017:44;23919:15:0::1;31077:19:1::0;;;31070:35;23727:9:0::1;::::0;;::::1;-1:-1:-1::0;;;;;23727:9:0::1;::::0;:25:::1;::::0;23760:16;;30779:19:1;;23727:222:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23727:222:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;23727:222:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;23723:355;;24056:7;;;;;;;;23723:355;-1:-1:-1::0;;23974:40:0::1;::::0;;31601:25:1;;;31657:2;31642:18;;31635:34;;;23974:40:0::1;::::0;-1:-1:-1;31574:18:1;23974:40:0::1;;;;;;;23723:355;24101:30;24115:16:::0;24101:30;::::1;:::i;:::-;;;24162:6;:16;;;24142:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;24275:16:::1;::::0;::::1;::::0;24254:17:::1;::::0;::::1;::::0;24189:12:::1;::::0;-1:-1:-1;24189:12:0;;24240:51;;::::1;::::0;24241:30:::1;::::0;::::1;:10:::0;:30:::1;:::i;:::-;24240:51;;;;:::i;:::-;24212:79;;24302:22;24362:6;:16;;;24327:51;;24341:6;:17;;;24328:30;;:10;:30;;;;:::i;:::-;24327:51;;;;:::i;:::-;24302:76:::0;-1:-1:-1;24389:24:0::1;24430:34;24447:17:::0;24302:76;24430:34:::1;:::i;:::-;24416:49;::::0;:10;:49:::1;:::i;:::-;24480:16;::::0;::::1;::::0;24389:76;;-1:-1:-1;24480:20:0::1;;::::0;24476:133:::1;;24530:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;24530:21:0;;::::1;::::0;24587:5:::1;::::0;24564:16;;24530:67:::1;::::0;;;24564:16;24530:21;24587:5;24530:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24517:80:0;;-1:-1:-1;;24476:133:0::1;24623:14;::::0;::::1;::::0;:18:::1;;::::0;24619:127:::1;;24671:19:::0;;:63:::1;::::0;-1:-1:-1;;;;;24671:19:0;;::::1;::::0;24724:5:::1;::::0;24703:14;;24671:63:::1;::::0;;;24703:14;24671:19;24724:5;24671:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24658:76:0;;-1:-1:-1;;24619:127:0::1;24768:17;::::0;::::1;::::0;:21:::1;;::::0;24764:136:::1;;24819:22:::0;;:69:::1;::::0;-1:-1:-1;;;;;24819:22:0;;::::1;::::0;24878:5:::1;::::0;24854:17;;24819:69:::1;::::0;;;24854:17;24819:22;24878:5;24819:69:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24806:82:0;;-1:-1:-1;;24764:136:0::1;22723:2184;;;;;;;;;;7363:1;-1:-1:-1::0;7375:6:0;:14;;-1:-1:-1;;7375:14:0;;;22651:2256::o;28243:767::-;28331:7;28351:18;28384:3;28380:205;;;-1:-1:-1;28417:9:0;:16;;;28380:205;;;28455:4;28451:134;;;-1:-1:-1;28489:9:0;:17;;;;;;28451:134;;;-1:-1:-1;28552:9:0;:21;;;;;;28451:134;28607:11;;;;;-1:-1:-1;;;;;28607:11:0;28631:4;28599:37;:73;;;;;28653:13;28670:2;28653:19;;28599:73;28595:101;;;-1:-1:-1;28689:4:0;28595:101;28710:10;28724:1;28710:15;28706:39;;28736:6;28729:13;;;;;28706:39;28755:17;6088:5;28775:19;28784:10;28775:6;:19;:::i;:::-;:38;;;;:::i;:::-;28755:58;-1:-1:-1;28828:13:0;;28824:141;;28874:4;28858:7;:22;;;;;;;;;;:35;;28884:9;;28858:7;:35;;28884:9;;28858:35;:::i;:::-;;;;-1:-1:-1;;28913:40:0;;368:25:1;;;28936:4:0;;-1:-1:-1;;;;;28913:40:0;;;;;356:2:1;341:18;28913:40:0;;;;;;;28824:141;28984:18;28993:9;28984:6;:18;:::i;24915:563::-;24998:16;;;;;;;24997:17;24989:65;;;;-1:-1:-1;;;24989:65:0;;32268:2:1;24989:65:0;;;32250:21:1;32307:2;32287:18;;;32280:30;32346:34;32326:18;;;32319:62;-1:-1:-1;;;32397:18:1;;;32390:33;32440:19;;24989:65:0;32066:399:1;24989:65:0;25070:20;25081:4;25087:2;25070:10;:20::i;:::-;25069:21;:37;;;;-1:-1:-1;25100:6:0;;-1:-1:-1;;;;;25094:12:0;;;25100:6;;25094:12;25069:37;25065:406;;;-1:-1:-1;;;;;25123:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;25123:30:0;;;25149:4;25123:30;;;;;;25168:19;:25;;;;;:32;;;;;;;;;;25215:16;:23;;-1:-1:-1;;25215:23:0;25123:30;25215:23;;;;;25265:11;;;;25253:114;;25311:11;:40;;-1:-1:-1;;;;;;25311:40:0;25345:4;25311:40;;;;;25253:114;25381:19;:26;;-1:-1:-1;;25381:26:0;;;;;25427:32;;-1:-1:-1;4726:41:1;;25427:32:0;;4714:2:1;4699:18;25427:32:0;4586: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;908:127::-;969:10;964:3;960:20;957:1;950:31;1000:4;997:1;990:15;1024:4;1021:1;1014:15;1040:275;1111:2;1105:9;1176:2;1157:13;;-1:-1:-1;;1153:27:1;1141:40;;1211:18;1196:34;;1232:22;;;1193:62;1190:88;;;1258:18;;:::i;:::-;1294:2;1287:22;1040:275;;-1:-1:-1;1040:275:1:o;1320:183::-;1380:4;1413:18;1405:6;1402:30;1399:56;;;1435:18;;:::i;:::-;-1:-1:-1;1480:1:1;1476:14;1492:4;1472:25;;1320:183::o;1508:131::-;-1:-1:-1;;;;;1583:31:1;;1573:42;;1563:70;;1629:1;1626;1619:12;1644:737;1698:5;1751:3;1744:4;1736:6;1732:17;1728:27;1718:55;;1769:1;1766;1759:12;1718:55;1805:6;1792:20;1831:4;1855:60;1871:43;1911:2;1871:43;:::i;:::-;1855:60;:::i;:::-;1949:15;;;2035:1;2031:10;;;;2019:23;;2015:32;;;1980:12;;;;2059:15;;;2056:35;;;2087:1;2084;2077:12;2056:35;2123:2;2115:6;2111:15;2135:217;2151:6;2146:3;2143:15;2135:217;;;2231:3;2218:17;2248:31;2273:5;2248:31;:::i;:::-;2292:18;;2330:12;;;;2168;;2135:217;;;-1:-1:-1;2370:5:1;1644:737;-1:-1:-1;;;;;;1644:737:1:o;2386:477::-;2476:6;2484;2537:2;2525:9;2516:7;2512:23;2508:32;2505:52;;;2553:1;2550;2543:12;2505:52;2593:9;2580:23;2626:18;2618:6;2615:30;2612:50;;;2658:1;2655;2648:12;2612:50;2681:61;2734:7;2725:6;2714:9;2710:22;2681:61;:::i;:::-;2671:71;;;2792:2;2781:9;2777:18;2764:32;2805:28;2827:5;2805:28;:::i;3238:548::-;3350:4;3379:2;3408;3397:9;3390:21;3440:6;3434:13;3483:6;3478:2;3467:9;3463:18;3456:34;3508:1;3518:140;3532:6;3529:1;3526:13;3518:140;;;3627:14;;;3623:23;;3617:30;3593:17;;;3612:2;3589:26;3582:66;3547:10;;3518:140;;;3522:3;3707:1;3702:2;3693:6;3682:9;3678:22;3674:31;3667:42;3777:2;3770;3766:7;3761:2;3753:6;3749:15;3745:29;3734:9;3730:45;3726:54;3718:62;;;;3238:548;;;;:::o;3791:159::-;3858:20;;3918:6;3907:18;;3897:29;;3887:57;;3940:1;3937;3930:12;3887:57;3791:159;;;:::o;3955:401::-;4037:6;4045;4053;4061;4114:3;4102:9;4093:7;4089:23;4085:33;4082:53;;;4131:1;4128;4121:12;4082:53;4154:28;4172:9;4154:28;:::i;:::-;4144:38;;4201:37;4234:2;4223:9;4219:18;4201:37;:::i;:::-;4191:47;;4257:37;4290:2;4279:9;4275:18;4257:37;:::i;:::-;4247:47;;4313:37;4346:2;4335:9;4331:18;4313:37;:::i;:::-;4303:47;;3955:401;;;;;;;:::o;4778:315::-;4846:6;4854;4907:2;4895:9;4886:7;4882:23;4878:32;4875:52;;;4923:1;4920;4913:12;4875:52;4962:9;4949:23;4981:31;5006:5;4981:31;:::i;:::-;5031:5;5083:2;5068:18;;;;5055:32;;-1:-1:-1;;;4778:315:1:o;5098:247::-;5157:6;5210:2;5198:9;5189:7;5185:23;5181:32;5178:52;;;5226:1;5223;5216:12;5178:52;5265:9;5252:23;5284:31;5309:5;5284:31;:::i;5350:456::-;5427:6;5435;5443;5496:2;5484:9;5475:7;5471:23;5467:32;5464:52;;;5512:1;5509;5502:12;5464:52;5551:9;5538:23;5570:31;5595:5;5570:31;:::i;:::-;5620:5;-1:-1:-1;5677:2:1;5662:18;;5649:32;5690:33;5649:32;5690:33;:::i;:::-;5350:456;;5742:7;;-1:-1:-1;;;5796:2:1;5781:18;;;;5768:32;;5350:456::o;5811:248::-;5879:6;5887;5940:2;5928:9;5919:7;5915:23;5911:32;5908:52;;;5956:1;5953;5946:12;5908:52;-1:-1:-1;;5979:23:1;;;6049:2;6034:18;;;6021:32;;-1:-1:-1;5811:248:1:o;6064:1138::-;6182:6;6190;6243:2;6231:9;6222:7;6218:23;6214:32;6211:52;;;6259:1;6256;6249:12;6211:52;6299:9;6286:23;6328:18;6369:2;6361:6;6358:14;6355:34;;;6385:1;6382;6375:12;6355:34;6408:61;6461:7;6452:6;6441:9;6437:22;6408:61;:::i;:::-;6398:71;;6488:2;6478:12;;6543:2;6532:9;6528:18;6515:32;6572:2;6562:8;6559:16;6556:36;;;6588:1;6585;6578:12;6556:36;6611:24;;;-1:-1:-1;6666:4:1;6658:13;;6654:27;-1:-1:-1;6644:55:1;;6695:1;6692;6685:12;6644:55;6731:2;6718:16;6754:60;6770:43;6810:2;6770:43;:::i;6754:60::-;6848:15;;;6930:1;6926:10;;;;6918:19;;6914:28;;;6879:12;;;;6954:19;;;6951:39;;;6986:1;6983;6976:12;6951:39;7010:11;;;;7030:142;7046:6;7041:3;7038:15;7030:142;;;7112:17;;7100:30;;7063:12;;;;7150;;;;7030:142;;;7191:5;7181:15;;;;;;;6064:1138;;;;;:::o;7396:328::-;7470:6;7478;7486;7539:2;7527:9;7518:7;7514:23;7510:32;7507:52;;;7555:1;7552;7545:12;7507:52;7578:28;7596:9;7578:28;:::i;:::-;7568:38;;7625:37;7658:2;7647:9;7643:18;7625:37;:::i;:::-;7615:47;;7681:37;7714:2;7703:9;7699:18;7681:37;:::i;:::-;7671:47;;7396:328;;;;;:::o;7729:382::-;7794:6;7802;7855:2;7843:9;7834:7;7830:23;7826:32;7823:52;;;7871:1;7868;7861:12;7823:52;7910:9;7897:23;7929:31;7954:5;7929:31;:::i;8116:180::-;8175:6;8228:2;8216:9;8207:7;8203:23;8199:32;8196:52;;;8244:1;8241;8234:12;8196:52;-1:-1:-1;8267:23:1;;8116:180;-1:-1:-1;8116:180:1:o;8301:553::-;8402:6;8410;8418;8471:2;8459:9;8450:7;8446:23;8442:32;8439:52;;;8487:1;8484;8477:12;8439:52;8526:9;8513:23;8545:31;8570:5;8545:31;:::i;:::-;8595:5;-1:-1:-1;8652:2:1;8637:18;;8624:32;8665:33;8624:32;8665:33;:::i;:::-;8717:7;-1:-1:-1;8776:2:1;8761:18;;8748:32;8789:33;8748:32;8789:33;:::i;:::-;8841:7;8831:17;;;8301:553;;;;;:::o;9387:388::-;9455:6;9463;9516:2;9504:9;9495:7;9491:23;9487:32;9484:52;;;9532:1;9529;9522:12;9484:52;9571:9;9558:23;9590:31;9615:5;9590:31;:::i;:::-;9640:5;-1:-1:-1;9697:2:1;9682:18;;9669:32;9710:33;9669:32;9710:33;:::i;10217:385::-;10303:6;10311;10319;10327;10380:3;10368:9;10359:7;10355:23;10351:33;10348:53;;;10397:1;10394;10387:12;10348:53;-1:-1:-1;;10420:23:1;;;10490:2;10475:18;;10462:32;;-1:-1:-1;10541:2:1;10526:18;;10513:32;;10592:2;10577:18;10564:32;;-1:-1:-1;10217:385:1;-1:-1:-1;10217:385:1:o;10607:341::-;10809:2;10791:21;;;10848:2;10828:18;;;10821:30;-1:-1:-1;;;10882:2:1;10867:18;;10860:47;10939:2;10924:18;;10607:341::o;11572:461::-;11625:3;11663:5;11657:12;11690:6;11685:3;11678:19;11716:4;11745:2;11740:3;11736:12;11729:19;;11782:2;11775:5;11771:14;11803:1;11813:195;11827:6;11824:1;11821:13;11813:195;;;11892:13;;-1:-1:-1;;;;;11888:39:1;11876:52;;11948:12;;;;11983:15;;;;11924:1;11842:9;11813:195;;;-1:-1:-1;12024:3:1;;11572:461;-1:-1:-1;;;;;11572:461:1:o;12038:342::-;12239:2;12228:9;12221:21;12202:4;12259:56;12311:2;12300:9;12296:18;12288:6;12259:56;:::i;:::-;12251:64;;12365:6;12358:14;12351:22;12346:2;12335:9;12331:18;12324:50;12038:342;;;;;:::o;12385:127::-;12446:10;12441:3;12437:20;12434:1;12427:31;12477:4;12474:1;12467:15;12501:4;12498:1;12491:15;12517:168;12584:6;12610:10;;;12622;;;12606:27;;12645:11;;;12642:37;;;12659:18;;:::i;:::-;12642:37;12517:168;;;;:::o;13098:422::-;13187:1;13230:5;13187:1;13244:270;13265:7;13255:8;13252:21;13244:270;;;13324:4;13320:1;13316:6;13312:17;13306:4;13303:27;13300:53;;;13333:18;;:::i;:::-;13383:7;13373:8;13369:22;13366:55;;;13403:16;;;;13366:55;13482:22;;;;13442:15;;;;13244:270;;;13248:3;13098:422;;;;;:::o;13525:806::-;13574:5;13604:8;13594:80;;-1:-1:-1;13645:1:1;13659:5;;13594:80;13693:4;13683:76;;-1:-1:-1;13730:1:1;13744:5;;13683:76;13775:4;13793:1;13788:59;;;;13861:1;13856:130;;;;13768:218;;13788:59;13818:1;13809:10;;13832:5;;;13856:130;13893:3;13883:8;13880:17;13877:43;;;13900:18;;:::i;:::-;-1:-1:-1;;13956:1:1;13942:16;;13971:5;;13768:218;;14070:2;14060:8;14057:16;14051:3;14045:4;14042:13;14038:36;14032:2;14022:8;14019:16;14014:2;14008:4;14005:12;14001:35;13998:77;13995:159;;;-1:-1:-1;14107:19:1;;;14139:5;;13995:159;14186:34;14211:8;14205:4;14186:34;:::i;:::-;14256:6;14252:1;14248:6;14244:19;14235:7;14232:32;14229:58;;;14267:18;;:::i;:::-;14305:20;;13525:806;-1:-1:-1;;;13525:806:1:o;14336:140::-;14394:5;14423:47;14464:4;14454:8;14450:19;14444:4;14423:47;:::i;14481:217::-;14521:1;14547;14537:132;;14591:10;14586:3;14582:20;14579:1;14572:31;14626:4;14623:1;14616:15;14654:4;14651:1;14644:15;14537:132;-1:-1:-1;14683:9:1;;14481:217::o;14703:168::-;14776:9;;;14807;;14824:15;;;14818:22;;14804:37;14794:71;;14845:18;;:::i;14876:128::-;14943:9;;;14964:11;;;14961:37;;;14978:18;;:::i;15776:127::-;15837:10;15832:3;15828:20;15825:1;15818:31;15868:4;15865:1;15858:15;15892:4;15889:1;15882:15;16255:197;16293:3;16321:6;16362:2;16355:5;16351:14;16389:2;16380:7;16377:15;16374:41;;16395:18;;:::i;:::-;16444:1;16431:15;;16255:197;-1:-1:-1;;;16255:197:1:o;16457:125::-;16522:9;;;16543:10;;;16540:36;;;16556:18;;:::i;18060:425::-;18262:2;18244:21;;;18301:2;18281:18;;;18274:30;18340:34;18335:2;18320:18;;18313:62;18411:31;18406:2;18391:18;;18384:59;18475:3;18460:19;;18060:425::o;18833:385::-;18912:6;18920;18973:2;18961:9;18952:7;18948:23;18944:32;18941:52;;;18989:1;18986;18979:12;18941:52;19021:9;19015:16;19040:31;19065:5;19040:31;:::i;:::-;19140:2;19125:18;;19119:25;19090:5;;-1:-1:-1;19153:33:1;19119:25;19153:33;:::i;22153:245::-;22232:6;22240;22293:2;22281:9;22272:7;22268:23;22264:32;22261:52;;;22309:1;22306;22299:12;22261:52;-1:-1:-1;;22332:16:1;;22388:2;22373:18;;;22367:25;22332:16;;22367:25;;-1:-1:-1;22153:245:1:o;22759:184::-;22829:6;22882:2;22870:9;22861:7;22857:23;22853:32;22850:52;;;22898:1;22895;22888:12;22850:52;-1:-1:-1;22921:16:1;;22759:184;-1:-1:-1;22759:184:1:o;23227:245::-;23294:6;23347:2;23335:9;23326:7;23322:23;23318:32;23315:52;;;23363:1;23360;23353:12;23315:52;23395:9;23389:16;23414:28;23436:5;23414:28;:::i;23836:251::-;23906:6;23959:2;23947:9;23938:7;23934:23;23930:32;23927:52;;;23975:1;23972;23965:12;23927:52;24007:9;24001:16;24026:31;24051:5;24026:31;:::i;25564:410::-;25766:2;25748:21;;;25805:2;25785:18;;;25778:30;25844:34;25839:2;25824:18;;25817:62;-1:-1:-1;;;25910:2:1;25895:18;;25888:44;25964:3;25949:19;;25564:410::o;29917:582::-;30216:6;30205:9;30198:25;30259:6;30254:2;30243:9;30239:18;30232:34;30302:3;30297:2;30286:9;30282:18;30275:31;30179:4;30323:57;30375:3;30364:9;30360:19;30352:6;30323:57;:::i;:::-;-1:-1:-1;;;;;30416:32:1;;;;30411:2;30396:18;;30389:60;-1:-1:-1;30480:3:1;30465:19;30458:35;30315:65;29917:582;-1:-1:-1;;;29917:582:1:o;31116:306::-;31204:6;31212;31220;31273:2;31261:9;31252:7;31248:23;31244:32;31241:52;;;31289:1;31286;31279:12;31241:52;31318:9;31312:16;31302:26;;31368:2;31357:9;31353:18;31347:25;31337:35;;31412:2;31401:9;31397:18;31391:25;31381:35;;31116:306;;;;;:::o;31680:171::-;31748:6;31787:10;;;31775;;;31771:27;;31810:12;;;31807:38;;;31825:18;;:::i

Swarm Source

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