ETH Price: $2,995.04 (-1.98%)
Gas: 3 Gwei

Token

Fantasy World Cup ($FWC)
 

Overview

Max Total Supply

100,000,000 $FWC

Holders

168

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
15,810.6309427679729326 $FWC

Value
$0.00
0x51b27b3bbe0e7dd84028548d076bf113098a30fd
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:
FantasyWorldCup

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-22
*/

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

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

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

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

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

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

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

contract FantasyWorldCup is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
   
    uint256 constant private startingSupply = 100_000_000;
    string constant private _name = "Fantasy World Cup";
    string constant private _symbol = "$FWC";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 team;
        uint16 prize;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        liquidity: 100,
        marketing: 300,
        team: 100,
        prize: 100,
        totalSwap: 600
    });

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

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

    struct TaxWallets {
        address payable marketing;
        address payable team;
        address payable prize;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xD1004317f95a75f0fF7ae1Cbede24992714f1569),
        team: payable(0x50502D0744009835B1684A7679a6ee395fB13C3D),
        prize: payable(0xF098aaEA400d04BaE0Ed0A31C3914024151AcD83)
    });

    struct CallGas {
        uint32 marketing;
        uint32 team;
        uint32 prize;
    }

    CallGas public _callGas = CallGas({
        marketing: 30000,
        team: 30000,
        prize: 55000
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 2) / 100;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;

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

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

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

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

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

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

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

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

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

    receive() external payable {}

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

    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function setCallGas(uint32 marketing, uint32 team, uint32 prize) external onlyOwner {
        require(marketing >= 25_000
                && marketing <= 100_000
                && team >= 25_000
                && team <= 100_000
                && prize >= 25_000
                && prize <= 150_000,
                "Values cannot be out of bounding range.");
        _callGas.marketing = marketing;
        _callGas.team = team;
        _callGas.prize = prize;
    }

    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(protections)
            && to != address(protections);
    }

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

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

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        CallGas memory callGas = _callGas;
        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 teamBalance = (amtBalance * ratios.team) / ratios.totalSwap;
        uint256 prizeBalance = (amtBalance * ratios.prize) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (teamBalance + prizeBalance);
        if (ratios.team > 0) {
            (success,) = _taxWallets.team.call{value: teamBalance, gas: callGas.team}("");
        }
        if (ratios.prize > 0) {
            (success,) = _taxWallets.prize.call{value: prizeBalance, gas: callGas.prize}("");
        }
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: callGas.marketing}("");
        }
    }

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(protections) == address(0)){
            protections = Protections(address(this));
        }
        try protections.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
        launchStamp = block.timestamp;
    }

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

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

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

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

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

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_callGas","outputs":[{"internalType":"uint32","name":"marketing","type":"uint32"},{"internalType":"uint32","name":"team","type":"uint32"},{"internalType":"uint32","name":"prize","type":"uint32"}],"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":"team","type":"uint16"},{"internalType":"uint16","name":"prize","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":"team","type":"address"},{"internalType":"address payable","name":"prize","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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"marketing","type":"uint32"},{"internalType":"uint32","name":"team","type":"uint32"},{"internalType":"uint32","name":"prize","type":"uint32"}],"name":"setCallGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"marketing","type":"uint16"},{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"prize","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":"team","type":"address"},{"internalType":"address payable","name":"prize","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"}]

6000600255610258608081905260a081905260c08190526008805465ffffffffffff191665025802580258179055606460e081905261012c6101005261012081905261014081905261016091909152600980546001600160501b03191669025800640064012c006417905573d1004317f95a75f0ff7ae1cbede24992714f15696101808190527350502d0744009835b1684a7679a6ee395fb13c3d6101a081905273f098aaea400d04bae0ed0a31c3914024151acd836101c0819052600c80546001600160a01b03199081169094179055600d80548416909217909155600e80549092161790556102406040526175306101e08190526102005261d6d861022052600f80546001600160601b03191669d6d800007530000075301790556010805461ff0019169055600a60148190556200013c906012906200080e565b6200014c906305f5e10062000826565b6200015990600262000826565b62000165919062000840565b6015556064620001786012600a6200080e565b62000188906305f5e10062000826565b6200019590600262000826565b620001a1919062000840565b6016556017805461ffff19169055601980546001600160a01b03191633179055620001cf6012600a6200080e565b620001df906305f5e10062000826565b601980546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002336012600a6200080e565b62000243906305f5e10062000826565b60405190815260200160405180910390a3466038036200028b57600a8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e0017905562000386565b46606103620002c257600a8054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d10017905562000386565b4660011480620002d25750466004145b80620002de5750466003145b156200031257600a8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d0017905562000386565b4661a86a036200034a57600a8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d40017905562000386565b4660fa036200038157600a8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c290017905562000386565b600080fd5b600a60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000400919062000863565b6001600160a01b031663c9c65396600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000462573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000488919062000863565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620004d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004fb919062000863565b600b80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055601954600a5462000555929182169161010090910416600019620005f8565b600a546200057690309061010090046001600160a01b0316600019620005f8565b601980546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055955490941683526004909152902080549092161790556200088e565b6001600160a01b0383166200064a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006985760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000641565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000750578160001904821115620007345762000734620006f9565b808516156200074257918102915b93841c939080029062000714565b509250929050565b600082620007695750600162000808565b81620007785750600062000808565b81600181146200079157600281146200079c57620007bc565b600191505062000808565b60ff841115620007b057620007b0620006f9565b50506001821b62000808565b5060208310610133831016604e8410600b8410161715620007e1575081810a62000808565b620007ed83836200070f565b8060001904821115620008045762000804620006f9565b0290505b92915050565b60006200081f60ff84168362000758565b9392505050565b8082028115828204841417620008085762000808620006f9565b6000826200085e57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200087657600080fd5b81516001600160a01b03811681146200081f57600080fd5b614853806200089e6000396000f3fe6080604052600436106103855760003560e01c806350a8e016116101d1578063a9059cbb11610102578063cf847706116100a0578063f94aa1b41161006f578063f94aa1b414610b66578063fb78680d14610bbd578063fdb78c0e14610bdd578063feadde9c14610bfc57600080fd5b8063cf84770614610a69578063dd62ed3e14610aeb578063eafb5a3c14610b31578063ee5d9c2d14610b5157600080fd5b8063b1b08f71116100dc578063b1b08f7114610657578063b3d514fb14610657578063b7df8b3614610a2f578063bfc2fc3514610a4957600080fd5b8063a9059cbb146109cf578063ab558e4d146109ef578063abd838e514610a0f57600080fd5b806375cb1bd11161016f578063893d20e811610149578063893d20e8146109415780638a63bd9b1461095f5780638a8c523c1461097457806395d89b411461098957600080fd5b806375cb1bd1146108ec57806378648edf1461090c57806380c581d11461092157600080fd5b80635c24b074116101ab5780635c24b074146108485780635cce86cd1461086857806370a08231146108a1578063715018a6146108d757600080fd5b806350a8e016146107f3578063590ffdce146108125780635a6f09181461083257600080fd5b806328577751116102b657806336fddb04116102545780634bbb93eb116102235780634bbb93eb1461075a5780634e718e481461077a5780634fb2e45d1461079a5780634fbee193146107ba57600080fd5b806336fddb04146106ea578063452ed4f11461070a57806346ea7ac81461072a5780634ada218b1461074057600080fd5b80632e8fa821116102905780632e8fa8211461066d578063313ce5671461068357806332cde664146106aa57806333251a0b146106ca57600080fd5b8063285777511461062c5780632b112e49146106425780632b28fc7a1461065757600080fd5b806307dd79e0116103235780630de40c14116102fd5780630de40c141461057757806318160ddd146105d757806323b872dd146105ec5780632610eaca1461060c57600080fd5b806307dd79e0146104f4578063095ea7b31461051e5780630dcbcf1c1461053e57600080fd5b8063069d955f1161035f578063069d955f1461040a57806306fdde03146104605780630712d165146104af5780630758d924146104cf57600080fd5b806303fd2a45146103915780630445b667146103c4578063044df726146103e857600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103d057600080fd5b506103da60115481565b6040519081526020016103bb565b3480156103f457600080fd5b5061040861040336600461404f565b610c1c565b005b34801561041657600080fd5b5060085461043b9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103bb565b34801561046c57600080fd5b5060408051808201909152601181527f46616e7461737920576f726c642043757000000000000000000000000000000060208201525b6040516103bb9190614088565b3480156104bb57600080fd5b506104086104ca3660046140ed565b610cf9565b3480156104db57600080fd5b50600a546103a79061010090046001600160a01b031681565b34801561050057600080fd5b50600a5461050e9060ff1681565b60405190151581526020016103bb565b34801561052a57600080fd5b5061050e610539366004614156565b610eea565b34801561054a57600080fd5b5061050e610559366004614182565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561058357600080fd5b50600f546105b09063ffffffff808216916401000000008104821691680100000000000000009091041683565b6040805163ffffffff948516815292841660208401529216918101919091526060016103bb565b3480156105e357600080fd5b506103da610f01565b3480156105f857600080fd5b5061050e61060736600461419f565b610f48565b34801561061857600080fd5b506104086106273660046142cf565b610fc0565b34801561063857600080fd5b506103da60145481565b34801561064e57600080fd5b506103da61117b565b34801561066357600080fd5b506103da6107d081565b34801561067957600080fd5b506103da60125481565b34801561068f57600080fd5b506106986111f9565b60405160ff90911681526020016103bb565b3480156106b657600080fd5b506104086106c5366004614391565b611227565b3480156106d657600080fd5b506104086106e5366004614182565b611414565b3480156106f657600080fd5b506104086107053660046143d4565b6114dd565b34801561071657600080fd5b50600b546103a7906001600160a01b031681565b34801561073657600080fd5b506103da6109c481565b34801561074c57600080fd5b5060175461050e9060ff1681565b34801561076657600080fd5b506103da6107753660046143f2565b611556565b34801561078657600080fd5b506104086107953660046143f2565b61158a565b3480156107a657600080fd5b506104086107b5366004614182565b61162e565b3480156107c657600080fd5b5061050e6107d5366004614182565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107ff57600080fd5b5060175461050e90610100900460ff1681565b34801561081e57600080fd5b5061040861082d3660046143d4565b61186b565b34801561083e57600080fd5b506103da60185481565b34801561085457600080fd5b50610408610863366004614182565b6118e4565b34801561087457600080fd5b5061050e610883366004614182565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108ad57600080fd5b506103da6108bc366004614182565b6001600160a01b031660009081526020819052604090205490565b3480156108e357600080fd5b506104086119da565b3480156108f857600080fd5b5061040861090736600461440b565b611aa5565b34801561091857600080fd5b50610408611bca565b34801561092d57600080fd5b5061040861093c3660046143d4565b611c27565b34801561094d57600080fd5b506019546001600160a01b03166103a7565b34801561096b57600080fd5b5061050e611e38565b34801561098057600080fd5b50610408611eae565b34801561099557600080fd5b5060408051808201909152600481527f244657430000000000000000000000000000000000000000000000000000000060208201526104a2565b3480156109db57600080fd5b5061050e6109ea366004614156565b61210a565b3480156109fb57600080fd5b50610408610a0a366004614182565b612121565b348015610a1b57600080fd5b50610408610a2a36600461446a565b6122e2565b348015610a3b57600080fd5b5060135461050e9060ff1681565b348015610a5557600080fd5b50610408610a6436600461404f565b612490565b348015610a7557600080fd5b50600954610ab69061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103bb565b348015610af757600080fd5b506103da610b063660046144a4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b3d57600080fd5b50610408610b4c366004614182565b61253d565b348015610b5d57600080fd5b506104086129ae565b348015610b7257600080fd5b50600c54600d54600e54610b93926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103bb565b348015610bc957600080fd5b50610408610bd83660046144d2565b612a90565b348015610be957600080fd5b5060105461050e90610100900460ff1681565b348015610c0857600080fd5b50610408610c173660046143d4565b612dac565b6019546001600160a01b03163314610c6f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6017546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610cdd57600080fd5b505af1158015610cf1573d6000803e3d6000fd5b505050505050565b6019546001600160a01b03163314610d475760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6009805461ffff8681167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000086831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000858316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16176601000000000000918416919091021790558082610def8587614533565b610df99190614533565b610e039190614533565b600980547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff166801000000000000000061ffff93841602179055600854600091610e569162010000810482169116614533565b60095461ffff918216925068010000000000000000900416811015610ee35760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610c66565b5050505050565b6000610ef7338484612e25565b5060015b92915050565b6000610f0f6012600a614639565b610f1d906305f5e100614648565b600003610f2957600080fd5b610f356012600a614639565b610f43906305f5e100614648565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610fad576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610fa790849061465f565b90915550505b610fb8848484612f32565b949350505050565b6019546001600160a01b0316331461100e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b805182511461105f5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c66565b60005b82518161ffff1610156111765761107b6012600a614639565b828261ffff168151811061109157611091614672565b60200260200101516110a39190614648565b3360009081526020819052604090205410156111015760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610c66565b61116333848361ffff168151811061111b5761111b614672565b60200260200101516012600a6111319190614639565b858561ffff168151811061114757611147614672565b60200260200101516111599190614648565b60008060016133c3565b508061116e816146a1565b915050611062565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546111d591906146c2565b6111e16012600a614639565b6111ef906305f5e100614648565b610f43919061465f565b60006112076012600a614639565b611215906305f5e100614648565b60000361122157600080fd5b50601290565b6019546001600160a01b031633146112755760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b600a5460ff16156112c85760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610c66565b6107d08361ffff16111580156112e457506107d08261ffff1611155b80156112f657506107d08161ffff1611155b6113425760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c66565b6109c461134f8385614533565b61ffff1611156113a15760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610c66565b6008805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6019546001600160a01b031633146114625760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6017546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156114c957600080fd5b505af1158015610ee3573d6000803e3d6000fd5b6019546001600160a01b0316331461152b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600b546001600160a01b031660009081526020819052604081205461271090611580908490614648565b610efb91906146d5565b6019546001600160a01b031633146115d85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b60968111156116295760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610c66565b601455565b6019546001600160a01b0316331461167c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6001600160a01b0381166116f85760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b038216016117965760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c66565b6019546117ad906001600160a01b0316600061186b565b6117b881600161186b565b6019546001600160a01b031660009081526020819052604090205415611801576019546001600160a01b03166000818152602081905260409020546117ff91908390611159565b505b601980546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6019546001600160a01b031633146118b95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6019546001600160a01b031633146119325760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b60175460ff161561194257600080fd5b306001600160a01b0382160361199a5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c66565b601780546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6019546001600160a01b03163314611a285760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b601954611a3f906001600160a01b0316600061186b565b601980547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6019546001600160a01b03163314611af35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6001600160a01b03831615801590611b1357506001600160a01b03821615155b8015611b2757506001600160a01b03811615155b611b735760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610c66565b600c80546001600160a01b039485167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600d805493851693821693909317909255600e8054919093169116179055565b6019546001600160a01b03163314611c185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b600a805460ff19166001179055565b6019546001600160a01b03163314611c755760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b80611cec576001600160a01b03828116600081815260016020526040808220805460ff1916905560175490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610cc3565b60025415611d53576203f48060025442611d06919061465f565b11611d535760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610c66565b6001600160a01b03821660009081526001602052604090205460ff1615611dbc5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610c66565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610cc3565b5050565b6019546000906001600160a01b03163314611e895760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b600a54611ea890309061010090046001600160a01b0316600019612e25565b50600190565b6019546001600160a01b03163314611efc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b60175460ff1615611f4f5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c66565b601754610100900460ff16611fa65760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c66565b6017546201000090046001600160a01b0316611fec57601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601754600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561207757600080fd5b505af1925050508015612088575060015b506017805460ff19166001179055600b546001600160a01b0316600090815260208190526040902054612710906120c090600a614648565b6120ca91906146d5565b601155600b546001600160a01b0316600090815260208190526040902054612710906120f790601e614648565b61210191906146d5565b60125542601855565b6000612117338484612f32565b5060019392505050565b6019546001600160a01b0316331461216f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b306001600160a01b038216036121c75760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610c66565b6019546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190614710565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156122be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614729565b6019546001600160a01b031633146123305760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6161a88363ffffffff16101580156123515750620186a08363ffffffff1611155b801561236557506161a88263ffffffff1610155b801561237a5750620186a08263ffffffff1611155b801561238e57506161a88163ffffffff1610155b80156123a35750620249f08163ffffffff1611155b6124155760405162461bcd60e51b815260206004820152602760248201527f56616c7565732063616e6e6f74206265206f7574206f6620626f756e64696e6760448201527f2072616e67652e000000000000000000000000000000000000000000000000006064820152608401610c66565b600f805463ffffffff9485167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009091161764010000000093851693909302929092177fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff16680100000000000000009190931602919091179055565b6019546001600160a01b031633146124de5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6010805461ff001916610100841515908102919091179091556013805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6019546001600160a01b0316331461258b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b601754610100900460ff16156125e35760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610c66565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264c9190614746565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bd9190614746565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127449190614746565b600b546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661290a57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d39190614746565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612820573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128449190614746565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156128a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cd9190614746565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561293e565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600a80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154611176923092910416600019612e25565b6019546001600160a01b031633146129fc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b601754610100900460ff1615612a545760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c66565b6019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612a8d573d6000803e3d6000fd5b50565b6019546001600160a01b03163314612ade5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b8284612aec6012600a614639565b612afa906305f5e100614648565b612b049190614648565b612b0e91906146d5565b6011558082612b1f6012600a614639565b612b2d906305f5e100614648565b612b379190614648565b612b4191906146d5565b60128190556011541115612bbd5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c66565b600b546001600160a01b031660009081526020819052604090205461271090612be7906096614648565b612bf191906146d5565b6012541115612c685760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201527f50492e00000000000000000000000000000000000000000000000000000000006064820152608401610c66565b620f4240612c786012600a614639565b612c86906305f5e100614648565b612c9091906146d5565b6012541015612d075760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c66565b620f4240612d176012600a614639565b612d25906305f5e100614648565b612d2f91906146d5565b6011541015612da65760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c66565b50505050565b6019546001600160a01b03163314612dfa5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612e7b5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c66565b6001600160a01b038216612ed15760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c66565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612fb05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c66565b6001600160a01b03831661302c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c66565b600082116130a25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c66565b6001600160a01b0384166000908152600160205260408120548190819060ff16156130d057600192506130fe565b6001600160a01b03861660009081526001602052604090205460ff16156130fa57600191506130fe565b5060015b61310887876136aa565b156133135760175460ff1661315f5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c66565b82806131685750815b1561322c576001600160a01b03871660009081526007602052604090205460ff161580156131af57506001600160a01b03861660009081526007602052604090205460ff16155b1561322c5760155485111561322c5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c66565b600a546001600160a01b03878116610100909204161480159061324d575081155b15613313576001600160a01b03861660009081526007602052604090205460ff166133135760165485613295886001600160a01b031660009081526020819052604090205490565b61329f91906146c2565b11156133135760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c66565b81156133aa5760105460ff166133aa57601054610100900460ff16156133aa573060009081526020819052604090205460115481106133a85760125460135460ff161561339257601454600b546001600160a01b03166000908152602081905260409020546127109161338591614648565b61338f91906146d5565b90505b80821061339d578091505b6133a6826137c1565b505b505b6133b88787878686866133c3565b979650505050505050565b60006133cf87876136aa565b15613482576017546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561346b575060408051601f3d908101601f1916820190925261346891810190614729565b60015b61347457600080fd5b90508061348057600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff16806134c457506001600160a01b03871660009081526006602052604090205460ff165b156134cd575060005b6001600160a01b038816600090815260208190526040812080548892906134f590849061465f565b9091555060009050816135085786613514565b6135148987878a613dbc565b9050806000808a6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461354a91906146c2565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161359691815260200190565b60405180910390a3601754610100900460ff1661369b576135b78989613ed1565b601754610100900460ff161580156135d457506135d489896136aa565b80156135f957506001600160a01b03891660009081526005602052604090205460ff16155b801561361e57506001600160a01b03881660009081526005602052604090205460ff16155b8015613628575083155b1561369b5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610c66565b50600198975050505050505050565b6019546000906001600160a01b038481169116148015906136d957506019546001600160a01b03838116911614155b80156136f057506019546001600160a01b03163214155b801561371557506001600160a01b03821660009081526004602052604090205460ff16155b801561373a57506001600160a01b03831660009081526004602052604090205460ff16155b801561375157506001600160a01b03821661dead14155b801561376557506001600160a01b03821615155b801561377a57506001600160a01b0383163014155b801561379a57506017546001600160a01b03848116620100009092041614155b80156137ba57506017546001600160a01b03838116620100009092041614155b9392505050565b6010805460ff191660011790556040805160a08101825260095461ffff80821683526201000082048116602080850191909152640100000000808404831685870152660100000000000084048316606080870191909152680100000000000000009485900484166080870190815287519182018852600f5463ffffffff808216845293810484169483019490945294909204169481019490945290519192911660000361386f575050613daf565b306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902054600019146138d257306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b60006002836080015161ffff16846000015161ffff16866138f39190614648565b6138fd91906146d5565b61390791906146d5565b90506000613915828661465f565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061394f5761394f614672565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e69190614746565b816001815181106139f9576139f9614672565b6001600160a01b039283166020918202929092010152600a546040517f791ac9470000000000000000000000000000000000000000000000000000000081526101009091049091169063791ac94790613a5f908590600090869030904290600401614763565b600060405180830381600087803b158015613a7957600080fd5b505af1925050508015613a8a575060015b613a98575050505050613daf565b47600083613aa68684614648565b613ab091906146d5565b90508415613bad57600a546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015613b60575060408051601f3d908101601f19168201909252613b5d918101906147d4565b60015b613b705750505050505050613daf565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613bb7818361465f565b9150866000015187608001818151613bcf9190614802565b61ffff908116909152608089015160408a015160009350839291821691613bf7911686614648565b613c0191906146d5565b90506000896080015161ffff168a6060015161ffff1686613c229190614648565b613c2c91906146d5565b90506000613c3a82846146c2565b613c44908761465f565b60408c015190915061ffff1615613cbc57600d5460208b01516040516001600160a01b039092169163ffffffff9091169085906000818181858888f193505050503d8060008114613cb1576040519150601f19603f3d011682016040523d82523d6000602084013e613cb6565b606091505b50909450505b60608b015161ffff1615613d3157600e5460408b81015190516001600160a01b039092169163ffffffff9091169084906000818181858888f193505050503d8060008114613d26576040519150601f19603f3d011682016040523d82523d6000602084013e613d2b565b606091505b50909450505b60208b015161ffff1615613da357600c548a516040516001600160a01b039092169163ffffffff9091169083906000818181858888f193505050503d8060008114613d98576040519150601f19603f3d011682016040523d82523d6000602084013e613d9d565b606091505b50909450505b50505050505050505050505b506010805460ff19169055565b6000808415613dd2575060085461ffff16613dfc565b8315613deb575060085462010000900461ffff16613dfc565b50600854640100000000900461ffff165b80600003613e0d5782915050610fb8565b6017546201000090046001600160a01b031630148015613e3757504660011480613e375750466038145b15613e4157506111945b6000612710613e508386614648565b613e5a91906146d5565b90508015613ec7573060009081526020819052604081208054839290613e819084906146c2565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6133b8818561465f565b601754610100900460ff1615613f4f5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c66565b613f5982826136aa565b158015613f735750600b546001600160a01b038281169116145b15611e34576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556017805461ff00191661010017908190556201000090041661400157601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612531565b8015158114612a8d57600080fd5b6000806040838503121561406257600080fd5b823561406d81614041565b9150602083013561407d81614041565b809150509250929050565b600060208083528351808285015260005b818110156140b557858101830151858201604001528201614099565b506000604082860101526040601f19601f8301168501019250505092915050565b803561ffff811681146140e857600080fd5b919050565b6000806000806080858703121561410357600080fd5b61410c856140d6565b935061411a602086016140d6565b9250614128604086016140d6565b9150614136606086016140d6565b905092959194509250565b6001600160a01b0381168114612a8d57600080fd5b6000806040838503121561416957600080fd5b823561417481614141565b946020939093013593505050565b60006020828403121561419457600080fd5b81356137ba81614141565b6000806000606084860312156141b457600080fd5b83356141bf81614141565b925060208401356141cf81614141565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614238576142386141e0565b604052919050565b600067ffffffffffffffff82111561425a5761425a6141e0565b5060051b60200190565b600082601f83011261427557600080fd5b8135602061428a61428583614240565b61420f565b82815260059290921b840181019181810190868411156142a957600080fd5b8286015b848110156142c457803583529183019183016142ad565b509695505050505050565b600080604083850312156142e257600080fd5b823567ffffffffffffffff808211156142fa57600080fd5b818501915085601f83011261430e57600080fd5b8135602061431e61428583614240565b82815260059290921b8401810191818101908984111561433d57600080fd5b948201945b8386101561436457853561435581614141565b82529482019490820190614342565b9650508601359250508082111561437a57600080fd5b5061438785828601614264565b9150509250929050565b6000806000606084860312156143a657600080fd5b6143af846140d6565b92506143bd602085016140d6565b91506143cb604085016140d6565b90509250925092565b600080604083850312156143e757600080fd5b823561406d81614141565b60006020828403121561440457600080fd5b5035919050565b60008060006060848603121561442057600080fd5b833561442b81614141565b9250602084013561443b81614141565b9150604084013561444b81614141565b809150509250925092565b803563ffffffff811681146140e857600080fd5b60008060006060848603121561447f57600080fd5b61448884614456565b925061449660208501614456565b91506143cb60408501614456565b600080604083850312156144b757600080fd5b82356144c281614141565b9150602083013561407d81614141565b600080600080608085870312156144e857600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61ffff81811683821601908082111561454e5761454e614504565b5092915050565b600181815b8085111561459057816000190482111561457657614576614504565b8085161561458357918102915b93841c939080029061455a565b509250929050565b6000826145a757506001610efb565b816145b457506000610efb565b81600181146145ca57600281146145d4576145f0565b6001915050610efb565b60ff8411156145e5576145e5614504565b50506001821b610efb565b5060208310610133831016604e8410600b8410161715614613575081810a610efb565b61461d8383614555565b806000190482111561463157614631614504565b029392505050565b60006137ba60ff841683614598565b8082028115828204841417610efb57610efb614504565b81810381811115610efb57610efb614504565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff8083168181036146b8576146b8614504565b6001019392505050565b80820180821115610efb57610efb614504565b60008261470b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561472257600080fd5b5051919050565b60006020828403121561473b57600080fd5b81516137ba81614041565b60006020828403121561475857600080fd5b81516137ba81614141565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156147b35784516001600160a01b03168352938301939183019160010161478e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156147e957600080fd5b8351925060208401519150604084015190509250925092565b61ffff82811682821603908082111561454e5761454e61450456fea2646970667358221220df6199f673f2cdb414ba08b21af7e88b76b8d1978ee786cc3b010bff2059586f64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103855760003560e01c806350a8e016116101d1578063a9059cbb11610102578063cf847706116100a0578063f94aa1b41161006f578063f94aa1b414610b66578063fb78680d14610bbd578063fdb78c0e14610bdd578063feadde9c14610bfc57600080fd5b8063cf84770614610a69578063dd62ed3e14610aeb578063eafb5a3c14610b31578063ee5d9c2d14610b5157600080fd5b8063b1b08f71116100dc578063b1b08f7114610657578063b3d514fb14610657578063b7df8b3614610a2f578063bfc2fc3514610a4957600080fd5b8063a9059cbb146109cf578063ab558e4d146109ef578063abd838e514610a0f57600080fd5b806375cb1bd11161016f578063893d20e811610149578063893d20e8146109415780638a63bd9b1461095f5780638a8c523c1461097457806395d89b411461098957600080fd5b806375cb1bd1146108ec57806378648edf1461090c57806380c581d11461092157600080fd5b80635c24b074116101ab5780635c24b074146108485780635cce86cd1461086857806370a08231146108a1578063715018a6146108d757600080fd5b806350a8e016146107f3578063590ffdce146108125780635a6f09181461083257600080fd5b806328577751116102b657806336fddb04116102545780634bbb93eb116102235780634bbb93eb1461075a5780634e718e481461077a5780634fb2e45d1461079a5780634fbee193146107ba57600080fd5b806336fddb04146106ea578063452ed4f11461070a57806346ea7ac81461072a5780634ada218b1461074057600080fd5b80632e8fa821116102905780632e8fa8211461066d578063313ce5671461068357806332cde664146106aa57806333251a0b146106ca57600080fd5b8063285777511461062c5780632b112e49146106425780632b28fc7a1461065757600080fd5b806307dd79e0116103235780630de40c14116102fd5780630de40c141461057757806318160ddd146105d757806323b872dd146105ec5780632610eaca1461060c57600080fd5b806307dd79e0146104f4578063095ea7b31461051e5780630dcbcf1c1461053e57600080fd5b8063069d955f1161035f578063069d955f1461040a57806306fdde03146104605780630712d165146104af5780630758d924146104cf57600080fd5b806303fd2a45146103915780630445b667146103c4578063044df726146103e857600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103d057600080fd5b506103da60115481565b6040519081526020016103bb565b3480156103f457600080fd5b5061040861040336600461404f565b610c1c565b005b34801561041657600080fd5b5060085461043b9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103bb565b34801561046c57600080fd5b5060408051808201909152601181527f46616e7461737920576f726c642043757000000000000000000000000000000060208201525b6040516103bb9190614088565b3480156104bb57600080fd5b506104086104ca3660046140ed565b610cf9565b3480156104db57600080fd5b50600a546103a79061010090046001600160a01b031681565b34801561050057600080fd5b50600a5461050e9060ff1681565b60405190151581526020016103bb565b34801561052a57600080fd5b5061050e610539366004614156565b610eea565b34801561054a57600080fd5b5061050e610559366004614182565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561058357600080fd5b50600f546105b09063ffffffff808216916401000000008104821691680100000000000000009091041683565b6040805163ffffffff948516815292841660208401529216918101919091526060016103bb565b3480156105e357600080fd5b506103da610f01565b3480156105f857600080fd5b5061050e61060736600461419f565b610f48565b34801561061857600080fd5b506104086106273660046142cf565b610fc0565b34801561063857600080fd5b506103da60145481565b34801561064e57600080fd5b506103da61117b565b34801561066357600080fd5b506103da6107d081565b34801561067957600080fd5b506103da60125481565b34801561068f57600080fd5b506106986111f9565b60405160ff90911681526020016103bb565b3480156106b657600080fd5b506104086106c5366004614391565b611227565b3480156106d657600080fd5b506104086106e5366004614182565b611414565b3480156106f657600080fd5b506104086107053660046143d4565b6114dd565b34801561071657600080fd5b50600b546103a7906001600160a01b031681565b34801561073657600080fd5b506103da6109c481565b34801561074c57600080fd5b5060175461050e9060ff1681565b34801561076657600080fd5b506103da6107753660046143f2565b611556565b34801561078657600080fd5b506104086107953660046143f2565b61158a565b3480156107a657600080fd5b506104086107b5366004614182565b61162e565b3480156107c657600080fd5b5061050e6107d5366004614182565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107ff57600080fd5b5060175461050e90610100900460ff1681565b34801561081e57600080fd5b5061040861082d3660046143d4565b61186b565b34801561083e57600080fd5b506103da60185481565b34801561085457600080fd5b50610408610863366004614182565b6118e4565b34801561087457600080fd5b5061050e610883366004614182565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108ad57600080fd5b506103da6108bc366004614182565b6001600160a01b031660009081526020819052604090205490565b3480156108e357600080fd5b506104086119da565b3480156108f857600080fd5b5061040861090736600461440b565b611aa5565b34801561091857600080fd5b50610408611bca565b34801561092d57600080fd5b5061040861093c3660046143d4565b611c27565b34801561094d57600080fd5b506019546001600160a01b03166103a7565b34801561096b57600080fd5b5061050e611e38565b34801561098057600080fd5b50610408611eae565b34801561099557600080fd5b5060408051808201909152600481527f244657430000000000000000000000000000000000000000000000000000000060208201526104a2565b3480156109db57600080fd5b5061050e6109ea366004614156565b61210a565b3480156109fb57600080fd5b50610408610a0a366004614182565b612121565b348015610a1b57600080fd5b50610408610a2a36600461446a565b6122e2565b348015610a3b57600080fd5b5060135461050e9060ff1681565b348015610a5557600080fd5b50610408610a6436600461404f565b612490565b348015610a7557600080fd5b50600954610ab69061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000009091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103bb565b348015610af757600080fd5b506103da610b063660046144a4565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610b3d57600080fd5b50610408610b4c366004614182565b61253d565b348015610b5d57600080fd5b506104086129ae565b348015610b7257600080fd5b50600c54600d54600e54610b93926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103bb565b348015610bc957600080fd5b50610408610bd83660046144d2565b612a90565b348015610be957600080fd5b5060105461050e90610100900460ff1681565b348015610c0857600080fd5b50610408610c173660046143d4565b612dac565b6019546001600160a01b03163314610c6f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b6017546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610cdd57600080fd5b505af1158015610cf1573d6000803e3d6000fd5b505050505050565b6019546001600160a01b03163314610d475760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6009805461ffff8681167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000086831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000858316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16176601000000000000918416919091021790558082610def8587614533565b610df99190614533565b610e039190614533565b600980547fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff166801000000000000000061ffff93841602179055600854600091610e569162010000810482169116614533565b60095461ffff918216925068010000000000000000900416811015610ee35760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610c66565b5050505050565b6000610ef7338484612e25565b5060015b92915050565b6000610f0f6012600a614639565b610f1d906305f5e100614648565b600003610f2957600080fd5b610f356012600a614639565b610f43906305f5e100614648565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610fad576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610fa790849061465f565b90915550505b610fb8848484612f32565b949350505050565b6019546001600160a01b0316331461100e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b805182511461105f5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c66565b60005b82518161ffff1610156111765761107b6012600a614639565b828261ffff168151811061109157611091614672565b60200260200101516110a39190614648565b3360009081526020819052604090205410156111015760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610c66565b61116333848361ffff168151811061111b5761111b614672565b60200260200101516012600a6111319190614639565b858561ffff168151811061114757611147614672565b60200260200101516111599190614648565b60008060016133c3565b508061116e816146a1565b915050611062565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546111d591906146c2565b6111e16012600a614639565b6111ef906305f5e100614648565b610f43919061465f565b60006112076012600a614639565b611215906305f5e100614648565b60000361122157600080fd5b50601290565b6019546001600160a01b031633146112755760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b600a5460ff16156112c85760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610c66565b6107d08361ffff16111580156112e457506107d08261ffff1611155b80156112f657506107d08161ffff1611155b6113425760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c66565b6109c461134f8385614533565b61ffff1611156113a15760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610c66565b6008805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6019546001600160a01b031633146114625760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6017546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156114c957600080fd5b505af1158015610ee3573d6000803e3d6000fd5b6019546001600160a01b0316331461152b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600b546001600160a01b031660009081526020819052604081205461271090611580908490614648565b610efb91906146d5565b6019546001600160a01b031633146115d85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b60968111156116295760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610c66565b601455565b6019546001600160a01b0316331461167c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6001600160a01b0381166116f85760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b038216016117965760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c66565b6019546117ad906001600160a01b0316600061186b565b6117b881600161186b565b6019546001600160a01b031660009081526020819052604090205415611801576019546001600160a01b03166000818152602081905260409020546117ff91908390611159565b505b601980546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6019546001600160a01b031633146118b95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6019546001600160a01b031633146119325760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b60175460ff161561194257600080fd5b306001600160a01b0382160361199a5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c66565b601780546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6019546001600160a01b03163314611a285760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b601954611a3f906001600160a01b0316600061186b565b601980547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6019546001600160a01b03163314611af35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6001600160a01b03831615801590611b1357506001600160a01b03821615155b8015611b2757506001600160a01b03811615155b611b735760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610c66565b600c80546001600160a01b039485167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600d805493851693821693909317909255600e8054919093169116179055565b6019546001600160a01b03163314611c185760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b600a805460ff19166001179055565b6019546001600160a01b03163314611c755760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b80611cec576001600160a01b03828116600081815260016020526040808220805460ff1916905560175490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610cc3565b60025415611d53576203f48060025442611d06919061465f565b11611d535760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610c66565b6001600160a01b03821660009081526001602052604090205460ff1615611dbc5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610c66565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610cc3565b5050565b6019546000906001600160a01b03163314611e895760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b600a54611ea890309061010090046001600160a01b0316600019612e25565b50600190565b6019546001600160a01b03163314611efc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b60175460ff1615611f4f5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c66565b601754610100900460ff16611fa65760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c66565b6017546201000090046001600160a01b0316611fec57601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601754600b546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561207757600080fd5b505af1925050508015612088575060015b506017805460ff19166001179055600b546001600160a01b0316600090815260208190526040902054612710906120c090600a614648565b6120ca91906146d5565b601155600b546001600160a01b0316600090815260208190526040902054612710906120f790601e614648565b61210191906146d5565b60125542601855565b6000612117338484612f32565b5060019392505050565b6019546001600160a01b0316331461216f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b306001600160a01b038216036121c75760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610c66565b6019546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190614710565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156122be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614729565b6019546001600160a01b031633146123305760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6161a88363ffffffff16101580156123515750620186a08363ffffffff1611155b801561236557506161a88263ffffffff1610155b801561237a5750620186a08263ffffffff1611155b801561238e57506161a88163ffffffff1610155b80156123a35750620249f08163ffffffff1611155b6124155760405162461bcd60e51b815260206004820152602760248201527f56616c7565732063616e6e6f74206265206f7574206f6620626f756e64696e6760448201527f2072616e67652e000000000000000000000000000000000000000000000000006064820152608401610c66565b600f805463ffffffff9485167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009091161764010000000093851693909302929092177fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff16680100000000000000009190931602919091179055565b6019546001600160a01b031633146124de5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6010805461ff001916610100841515908102919091179091556013805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6019546001600160a01b0316331461258b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b601754610100900460ff16156125e35760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610c66565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264c9190614746565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612699573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126bd9190614746565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127449190614746565b600b546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661290a57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d39190614746565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612820573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128449190614746565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156128a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128cd9190614746565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905561293e565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600a80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154611176923092910416600019612e25565b6019546001600160a01b031633146129fc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b601754610100900460ff1615612a545760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c66565b6019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612a8d573d6000803e3d6000fd5b50565b6019546001600160a01b03163314612ade5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b8284612aec6012600a614639565b612afa906305f5e100614648565b612b049190614648565b612b0e91906146d5565b6011558082612b1f6012600a614639565b612b2d906305f5e100614648565b612b379190614648565b612b4191906146d5565b60128190556011541115612bbd5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610c66565b600b546001600160a01b031660009081526020819052604090205461271090612be7906096614648565b612bf191906146d5565b6012541115612c685760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201527f50492e00000000000000000000000000000000000000000000000000000000006064820152608401610c66565b620f4240612c786012600a614639565b612c86906305f5e100614648565b612c9091906146d5565b6012541015612d075760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c66565b620f4240612d176012600a614639565b612d25906305f5e100614648565b612d2f91906146d5565b6011541015612da65760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610c66565b50505050565b6019546001600160a01b03163314612dfa5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610c66565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612e7b5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c66565b6001600160a01b038216612ed15760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610c66565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612fb05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610c66565b6001600160a01b03831661302c5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610c66565b600082116130a25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610c66565b6001600160a01b0384166000908152600160205260408120548190819060ff16156130d057600192506130fe565b6001600160a01b03861660009081526001602052604090205460ff16156130fa57600191506130fe565b5060015b61310887876136aa565b156133135760175460ff1661315f5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c66565b82806131685750815b1561322c576001600160a01b03871660009081526007602052604090205460ff161580156131af57506001600160a01b03861660009081526007602052604090205460ff16155b1561322c5760155485111561322c5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610c66565b600a546001600160a01b03878116610100909204161480159061324d575081155b15613313576001600160a01b03861660009081526007602052604090205460ff166133135760165485613295886001600160a01b031660009081526020819052604090205490565b61329f91906146c2565b11156133135760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610c66565b81156133aa5760105460ff166133aa57601054610100900460ff16156133aa573060009081526020819052604090205460115481106133a85760125460135460ff161561339257601454600b546001600160a01b03166000908152602081905260409020546127109161338591614648565b61338f91906146d5565b90505b80821061339d578091505b6133a6826137c1565b505b505b6133b88787878686866133c3565b979650505050505050565b60006133cf87876136aa565b15613482576017546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561346b575060408051601f3d908101601f1916820190925261346891810190614729565b60015b61347457600080fd5b90508061348057600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff16806134c457506001600160a01b03871660009081526006602052604090205460ff165b156134cd575060005b6001600160a01b038816600090815260208190526040812080548892906134f590849061465f565b9091555060009050816135085786613514565b6135148987878a613dbc565b9050806000808a6001600160a01b03166001600160a01b03168152602001908152602001600020600082825461354a91906146c2565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161359691815260200190565b60405180910390a3601754610100900460ff1661369b576135b78989613ed1565b601754610100900460ff161580156135d457506135d489896136aa565b80156135f957506001600160a01b03891660009081526005602052604090205460ff16155b801561361e57506001600160a01b03881660009081526005602052604090205460ff16155b8015613628575083155b1561369b5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610c66565b50600198975050505050505050565b6019546000906001600160a01b038481169116148015906136d957506019546001600160a01b03838116911614155b80156136f057506019546001600160a01b03163214155b801561371557506001600160a01b03821660009081526004602052604090205460ff16155b801561373a57506001600160a01b03831660009081526004602052604090205460ff16155b801561375157506001600160a01b03821661dead14155b801561376557506001600160a01b03821615155b801561377a57506001600160a01b0383163014155b801561379a57506017546001600160a01b03848116620100009092041614155b80156137ba57506017546001600160a01b03838116620100009092041614155b9392505050565b6010805460ff191660011790556040805160a08101825260095461ffff80821683526201000082048116602080850191909152640100000000808404831685870152660100000000000084048316606080870191909152680100000000000000009485900484166080870190815287519182018852600f5463ffffffff808216845293810484169483019490945294909204169481019490945290519192911660000361386f575050613daf565b306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902054600019146138d257306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b60006002836080015161ffff16846000015161ffff16866138f39190614648565b6138fd91906146d5565b61390791906146d5565b90506000613915828661465f565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061394f5761394f614672565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e69190614746565b816001815181106139f9576139f9614672565b6001600160a01b039283166020918202929092010152600a546040517f791ac9470000000000000000000000000000000000000000000000000000000081526101009091049091169063791ac94790613a5f908590600090869030904290600401614763565b600060405180830381600087803b158015613a7957600080fd5b505af1925050508015613a8a575060015b613a98575050505050613daf565b47600083613aa68684614648565b613ab091906146d5565b90508415613bad57600a546040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af193505050508015613b60575060408051601f3d908101601f19168201909252613b5d918101906147d4565b60015b613b705750505050505050613daf565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613bb7818361465f565b9150866000015187608001818151613bcf9190614802565b61ffff908116909152608089015160408a015160009350839291821691613bf7911686614648565b613c0191906146d5565b90506000896080015161ffff168a6060015161ffff1686613c229190614648565b613c2c91906146d5565b90506000613c3a82846146c2565b613c44908761465f565b60408c015190915061ffff1615613cbc57600d5460208b01516040516001600160a01b039092169163ffffffff9091169085906000818181858888f193505050503d8060008114613cb1576040519150601f19603f3d011682016040523d82523d6000602084013e613cb6565b606091505b50909450505b60608b015161ffff1615613d3157600e5460408b81015190516001600160a01b039092169163ffffffff9091169084906000818181858888f193505050503d8060008114613d26576040519150601f19603f3d011682016040523d82523d6000602084013e613d2b565b606091505b50909450505b60208b015161ffff1615613da357600c548a516040516001600160a01b039092169163ffffffff9091169083906000818181858888f193505050503d8060008114613d98576040519150601f19603f3d011682016040523d82523d6000602084013e613d9d565b606091505b50909450505b50505050505050505050505b506010805460ff19169055565b6000808415613dd2575060085461ffff16613dfc565b8315613deb575060085462010000900461ffff16613dfc565b50600854640100000000900461ffff165b80600003613e0d5782915050610fb8565b6017546201000090046001600160a01b031630148015613e3757504660011480613e375750466038145b15613e4157506111945b6000612710613e508386614648565b613e5a91906146d5565b90508015613ec7573060009081526020819052604081208054839290613e819084906146c2565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6133b8818561465f565b601754610100900460ff1615613f4f5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610c66565b613f5982826136aa565b158015613f735750600b546001600160a01b038281169116145b15611e34576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556017805461ff00191661010017908190556201000090041661400157601780547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6010805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612531565b8015158114612a8d57600080fd5b6000806040838503121561406257600080fd5b823561406d81614041565b9150602083013561407d81614041565b809150509250929050565b600060208083528351808285015260005b818110156140b557858101830151858201604001528201614099565b506000604082860101526040601f19601f8301168501019250505092915050565b803561ffff811681146140e857600080fd5b919050565b6000806000806080858703121561410357600080fd5b61410c856140d6565b935061411a602086016140d6565b9250614128604086016140d6565b9150614136606086016140d6565b905092959194509250565b6001600160a01b0381168114612a8d57600080fd5b6000806040838503121561416957600080fd5b823561417481614141565b946020939093013593505050565b60006020828403121561419457600080fd5b81356137ba81614141565b6000806000606084860312156141b457600080fd5b83356141bf81614141565b925060208401356141cf81614141565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614238576142386141e0565b604052919050565b600067ffffffffffffffff82111561425a5761425a6141e0565b5060051b60200190565b600082601f83011261427557600080fd5b8135602061428a61428583614240565b61420f565b82815260059290921b840181019181810190868411156142a957600080fd5b8286015b848110156142c457803583529183019183016142ad565b509695505050505050565b600080604083850312156142e257600080fd5b823567ffffffffffffffff808211156142fa57600080fd5b818501915085601f83011261430e57600080fd5b8135602061431e61428583614240565b82815260059290921b8401810191818101908984111561433d57600080fd5b948201945b8386101561436457853561435581614141565b82529482019490820190614342565b9650508601359250508082111561437a57600080fd5b5061438785828601614264565b9150509250929050565b6000806000606084860312156143a657600080fd5b6143af846140d6565b92506143bd602085016140d6565b91506143cb604085016140d6565b90509250925092565b600080604083850312156143e757600080fd5b823561406d81614141565b60006020828403121561440457600080fd5b5035919050565b60008060006060848603121561442057600080fd5b833561442b81614141565b9250602084013561443b81614141565b9150604084013561444b81614141565b809150509250925092565b803563ffffffff811681146140e857600080fd5b60008060006060848603121561447f57600080fd5b61448884614456565b925061449660208501614456565b91506143cb60408501614456565b600080604083850312156144b757600080fd5b82356144c281614141565b9150602083013561407d81614141565b600080600080608085870312156144e857600080fd5b5050823594602084013594506040840135936060013592509050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b61ffff81811683821601908082111561454e5761454e614504565b5092915050565b600181815b8085111561459057816000190482111561457657614576614504565b8085161561458357918102915b93841c939080029061455a565b509250929050565b6000826145a757506001610efb565b816145b457506000610efb565b81600181146145ca57600281146145d4576145f0565b6001915050610efb565b60ff8411156145e5576145e5614504565b50506001821b610efb565b5060208310610133831016604e8410600b8410161715614613575081810a610efb565b61461d8383614555565b806000190482111561463157614631614504565b029392505050565b60006137ba60ff841683614598565b8082028115828204841417610efb57610efb614504565b81810381811115610efb57610efb614504565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff8083168181036146b8576146b8614504565b6001019392505050565b80820180821115610efb57610efb614504565b60008261470b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561472257600080fd5b5051919050565b60006020828403121561473b57600080fd5b81516137ba81614041565b60006020828403121561475857600080fd5b81516137ba81614141565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156147b35784516001600160a01b03168352938301939183019160010161478e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156147e957600080fd5b8351925060208401519150604084015190509250925092565b61ffff82811682821603908082111561454e5761454e61450456fea2646970667358221220df6199f673f2cdb414ba08b21af7e88b76b8d1978ee786cc3b010bff2059586f64736f6c63430008110033

Deployed Bytecode Sourcemap

3951:23443:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5632:73;;;;;;;;;;;;5663:42;5632:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5632:73:0;;;;;;;;6415:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6415:28:0;245:177:1;15061:153:0;;;;;;;;;;-1:-1:-1;15061:153:0;;;;;:::i;:::-;;:::i;:::-;;5000:109;;;;;;;;;;-1:-1:-1;5000:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5000:109:0;931:365:1;10843:80:0;;;;;;;;;;-1:-1:-1;10915:5:0;;;;;;;;;;;;;;;;;10843:80;;;;;;;:::i;15964:470::-;;;;;;;;;;-1:-1:-1;15964:470:0;;;;;:::i;:::-;;:::i;5571:26::-;;;;;;;;;;-1:-1:-1;5571:26:0;;;;;;;-1:-1:-1;;;;;5571:26:0;;;5538;;;;;;;;;;-1:-1:-1;5538:26:0;;;;;;;;;;;2896:14:1;;2889:22;2871:41;;2859:2;2844:18;5538:26:0;2731:187:1;11451:161:0;;;;;;;;;;-1:-1:-1;11451:161:0;;;;;:::i;:::-;;:::i;14490:140::-;;;;;;;;;;-1:-1:-1;14490:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14588:34:0;14564:4;14588:34;;;:25;:34;;;;;;;;;14490:140;6220:118;;;;;;;;;;-1:-1:-1;6220:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;3860:10:1;3897:15;;;3879:34;;3949:15;;;3944:2;3929:18;;3922:43;4001:15;;3981:18;;;3974:43;;;;3838:2;3823:18;6220:118:0;3654:369:1;10514:115:0;;;;;;;;;;;;;:::i;12121:306::-;;;;;;;;;;-1:-1:-1;12121:306:0;;;;;:::i;:::-;;:::i;25069:447::-;;;;;;;;;;-1:-1:-1;25069:447:0;;;;;:::i;:::-;;:::i;6523:33::-;;;;;;;;;;;;;;;;14794:141;;;;;;;;;;;;;:::i;5282:42::-;;;;;;;;;;;;5320:4;5282:42;;6450:25;;;;;;;;;;;;;;;;10635:112;;;;;;;;;;;;;:::i;:::-;;;7264:4:1;7252:17;;;7234:36;;7222:2;7207:18;10635:112:0;7092:184:1;15412:544:0;;;;;;;;;;-1:-1:-1;15412:544:0;;;;;:::i;:::-;;:::i;14943:110::-;;;;;;;;;;-1:-1:-1;14943:110:0;;;;;:::i;:::-;;:::i;14065:140::-;;;;;;;;;;-1:-1:-1;14065:140:0;;;;;:::i;:::-;;:::i;5604:21::-;;;;;;;;;;-1:-1:-1;5604:21:0;;;;-1:-1:-1;;;;;5604:21:0;;;5435:46;;;;;;;;;;;;5477:4;5435:46;;6687:34;;;;;;;;;;-1:-1:-1;6687:34:0;;;;;;;;17367:189;;;;;;;;;;-1:-1:-1;17367:189:0;;;;;:::i;:::-;;:::i;18271:217::-;;;;;;;;;;-1:-1:-1;18271:217:0;;;;;:::i;:::-;;:::i;9272:654::-;;;;;;;;;;-1:-1:-1;9272:654:0;;;;;:::i;:::-;;:::i;14213:127::-;;;;;;;;;;-1:-1:-1;14213:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14304:28:0;14280:4;14304:28;;;:19;:28;;;;;;;;;14213:127;6728:36;;;;;;;;;;-1:-1:-1;6728:36:0;;;;;;;;;;;14348:134;;;;;;;;;;-1:-1:-1;14348:134:0;;;;;:::i;:::-;;:::i;6801:26::-;;;;;;;;;;;;;;;;13695:222;;;;;;;;;;-1:-1:-1;13695:222:0;;;;;:::i;:::-;;:::i;13925:132::-;;;;;;;;;;-1:-1:-1;13925:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;14019:30:0;13995:4;14019:30;;;:21;:30;;;;;;;;;13925:132;11153:117;;;;;;;;;;-1:-1:-1;11153:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11246:16:0;11219:7;11246:16;;;;;;;;;;;;11153:117;9934:225;;;;;;;;;;;;;:::i;16442:428::-;;;;;;;;;;-1:-1:-1;16442:428:0;;;;;:::i;:::-;;:::i;15222:182::-;;;;;;;;;;;;;:::i;13123:564::-;;;;;;;;;;-1:-1:-1;13123:564:0;;;;;:::i;:::-;;:::i;10929:79::-;;;;;;;;;;-1:-1:-1;10999:6:0;;-1:-1:-1;;;;;10999:6:0;10929:79;;11938:175;;;;;;;;;;;;;:::i;24022:593::-;;;;;;;;;;;;;:::i;10753:84::-;;;;;;;;;;-1:-1:-1;10827:7:0;;;;;;;;;;;;;;;;;10753:84;;11278:165;;;;;;;;;;-1:-1:-1;11278:165:0;;;;;:::i;:::-;;:::i;24813:248::-;;;;;;;;;;-1:-1:-1;24813:248:0;;;;;:::i;:::-;;:::i;16878:481::-;;;;;;;;;;-1:-1:-1;16878:481:0;;;;;:::i;:::-;;:::i;6482:34::-;;;;;;;;;;-1:-1:-1;6482:34:0;;;;;;;;18496:263;;;;;;;;;;-1:-1:-1;18496:263:0;;;;;:::i;:::-;;:::i;5118:155::-;;;;;;;;;;-1:-1:-1;5118:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9504:6:1;9537:15;;;9519:34;;9589:15;;;9584:2;9569:18;;9562:43;9641:15;;;9621:18;;;9614:43;;;;9693:15;;9688:2;9673:18;;9666:43;9746:15;;;9740:3;9725:19;;9718:44;9481:3;9466:19;5118:155:0;9245:523:1;11014:133:0;;;;;;;;;;-1:-1:-1;11014:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11116:19:0;;;11098:7;11116:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11014:133;12435:680;;;;;;;;;;-1:-1:-1;12435:680:0;;;;;:::i;:::-;;:::i;24623:182::-;;;;;;;;;;;;;:::i;5847:261::-;;;;;;;;;;-1:-1:-1;5847:261:0;;;;;;;;-1:-1:-1;;;;;5847:261:0;;;;;;;;;;;;;;-1:-1:-1;;;;;10495:15:1;;;10477:34;;10547:15;;;10542:2;10527:18;;10520:43;10599:15;;10579:18;;;10572:43;;;;10404:2;10389:18;5847:261:0;10166:455:1;17564:699:0;;;;;;;;;;-1:-1:-1;17564:699:0;;;;;:::i;:::-;;:::i;6369:39::-;;;;;;;;;;-1:-1:-1;6369:39:0;;;;;;;;;;;14638:148;;;;;;;;;;-1:-1:-1;14638:148:0;;;;;:::i;:::-;;:::i;15061:153::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;;;;;;;;;15156:11:::1;::::0;:50:::1;::::0;;;;11549:14:1;;11542:22;15156:50:0::1;::::0;::::1;11524:41:1::0;11608:14;;11601:22;11581:18;;;11574:50;15156:11:0;;;::::1;-1:-1:-1::0;;;;;15156:11:0::1;::::0;:26:::1;::::0;11497:18:1;;15156:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15061:153:::0;;:::o;15964:470::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;16076:7:::1;:29:::0;;::::1;::::0;;::::1;16116::::0;;;;;;;;;;;::::1;;;16186:21:::0;;16156:19;;;::::1;;16186:21:::0;;;;;;::::1;::::0;;;::::1;;::::0;;;16156:19;16238:21:::1;16116:29:::0;16076;16238:21:::1;:::i;:::-;:28;;;;:::i;:::-;:36;;;;:::i;:::-;16218:7;:56:::0;;;::::1;::::0;::::1;::::0;;::::1;;;::::0;;:17:::1;16320::::0;-1:-1:-1;;16301:36:0::1;::::0;16320:17;;::::1;::::0;::::1;::::0;16301:16:::1;:36;:::i;:::-;16356:7;:17:::0;16285:52:::1;::::0;;::::1;::::0;-1:-1:-1;16356:17:0;;::::1;;:26:::0;-1:-1:-1;16356:26:0::1;16348:78;;;::::0;-1:-1:-1;;;16348:78:0;;12199:2:1;16348:78:0::1;::::0;::::1;12181:21:1::0;12238:2;12218:18;;;12211:30;12277:34;12257:18;;;12250:62;12348:9;12328:18;;;12321:37;12375:19;;16348:78:0::1;11997:403:1::0;16348:78:0::1;16065:369;15964:470:::0;;;;:::o;11451:161::-;11528:4;11545:37;11554:10;11566:7;11575:6;11545:8;:37::i;:::-;-1:-1:-1;11600:4:0;11451:161;;;;;:::o;10514:115::-;10569:7;4716:13;4655:2;4716;:13;:::i;:::-;4699:30;;4497:11;4699:30;:::i;:::-;10595:1;10584:12;10580:31;;10600:8;;;10580:31;4716:13;4655:2;4716;:13;:::i;:::-;4699:30;;4497:11;4699:30;:::i;:::-;10612:14;;10514:115;:::o;12121:306::-;-1:-1:-1;;;;;12242:19:0;;12221:4;12242:19;;;:11;:19;;;;;;;;12262:10;12242:31;;;;;;;;-1:-1:-1;;12242:52:0;12238:126;;-1:-1:-1;;;;;12311:19:0;;;;;;:11;:19;;;;;;;;12331:10;12311:31;;;;;;;:41;;12346:6;;12311:19;:41;;12346:6;;12311:41;:::i;:::-;;;;-1:-1:-1;;12238:126:0;12383:36;12393:6;12401:9;12412:6;12383:9;:36::i;:::-;12376:43;12121:306;-1:-1:-1;;;;12121:306:0:o;25069:447::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;25204:7:::1;:14;25185:8;:15;:33;25177:67;;;::::0;-1:-1:-1;;;25177:67:0;;14416:2:1;25177:67:0::1;::::0;::::1;14398:21:1::0;14455:2;14435:18;;;14428:30;14494:23;14474:18;;;14467:51;14535:18;;25177:67:0::1;14214:345:1::0;25177:67:0::1;25260:8;25255:254;25278:8;:15;25274:1;:19;;;25255:254;;;25359:13;4655:2;25359;:13;:::i;:::-;25348:7;25356:1;25348:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;25333:10;11219:7:::0;11246:16;;;;;;;;;;;25323:49:::1;;25315:80;;;::::0;-1:-1:-1;;;25315:80:0;;14955:2:1;25315:80:0::1;::::0;::::1;14937:21:1::0;14994:2;14974:18;;;14967:30;15033:20;15013:18;;;15006:48;15071:18;;25315:80:0::1;14753:342:1::0;25315:80:0::1;25410:87;25427:10;25439:8;25448:1;25439:11;;;;;;;;;;:::i;:::-;;;;;;;4655:2;25463;:13;;;;:::i;:::-;25452:7;25460:1;25452:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;25478:5;25485::::0;25492:4:::1;25410:16;:87::i;:::-;-1:-1:-1::0;25295:3:0;::::1;::::0;::::1;:::i;:::-;;;;25255:254;;;;25069:447:::0;;:::o;14794:141::-;14847:7;11246:16;;;;;;5663:42;11246:16;;;;14886:39;;11246:16;14886:39;:::i;:::-;4716:13;4655:2;4716;:13;:::i;:::-;4699:30;;4497:11;4699:30;:::i;:::-;14875:51;;;;:::i;10635:112::-;10687:5;4716:13;4655:2;4716;:13;:::i;:::-;4699:30;;4497:11;4699:30;:::i;:::-;10711:1;10700:12;10696:31;;10716:8;;;10696:31;-1:-1:-1;4655:2:0;;10635:112::o;15412:544::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;15520:14:::1;::::0;::::1;;15519:15;15511:45;;;::::0;-1:-1:-1;;;15511:45:0;;15634:2:1;15511:45:0::1;::::0;::::1;15616:21:1::0;15673:2;15653:18;;;15646:30;15712:19;15692:18;;;15685:47;15749:18;;15511:45:0::1;15432:341:1::0;15511:45:0::1;5320:4;15575:6;:21;;;;:65;;;;;5370:4;15617:7;:23;;;;15575:65;:117;;;;;5424:4;15661:11;:31;;;;15575:117;15567:170;;;::::0;-1:-1:-1;;;15567:170:0;;15980:2:1;15567:170:0::1;::::0;::::1;15962:21:1::0;16019:2;15999:18;;;15992:30;16058:25;16038:18;;;16031:53;16101:18;;15567:170:0::1;15778:347:1::0;15567:170:0::1;5477:4;15756:16;15765:7:::0;15756:6;:16:::1;:::i;:::-;:35;;;;15748:80;;;::::0;-1:-1:-1;;;15748:80:0;;16332:2:1;15748:80:0::1;::::0;::::1;16314:21:1::0;;;16351:18;;;16344:30;16410:34;16390:18;;;16383:62;16462:18;;15748:80:0::1;16130:356:1::0;15748:80:0::1;15839:9;:25:::0;;::::1;::::0;;::::1;15875:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;15913:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15412:544::o;14943:110::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;15012:11:::1;::::0;:33:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;15012:33:0::1;::::0;::::1;160:74:1::0;15012:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;15012:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;14065:140:::0;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;-1:-1:-1;;;;;14157:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;14157:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14065:140::o;17367:189::-;17496:6;;-1:-1:-1;;;;;17496:6:0;17458:7;11246:16;;;;;;;;;;;5524:5;;17486:41;;17506:21;;17486:41;:::i;:::-;17485:62;;;;:::i;18271:217::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;18401:3:::1;18375:22;:29;;18367:64;;;::::0;-1:-1:-1;;;18367:64:0;;16972:2:1;18367:64:0::1;::::0;::::1;16954:21:1::0;17011:2;16991:18;;;16984:30;17050:24;17030:18;;;17023:52;17092:18;;18367:64:0::1;16770:346:1::0;18367:64:0::1;18442:13;:38:::0;18271:217::o;9272:654::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;-1:-1:-1;;;;;9351:22:0;::::1;9343:96;;;::::0;-1:-1:-1;;;9343:96:0;;17323:2:1;9343:96:0::1;::::0;::::1;17305:21:1::0;17362:2;17342:18;;;17335:30;17401:34;17381:18;;;17374:62;17472:31;17452:18;;;17445:59;17521:19;;9343:96:0::1;17121:425:1::0;9343:96:0::1;9458:16:::0;-1:-1:-1;;;;;9458:16:0;::::1;::::0;9450:90:::1;;;::::0;-1:-1:-1;;;9450:90:0;;17323:2:1;9450:90:0::1;::::0;::::1;17305:21:1::0;17362:2;17342:18;;;17335:30;17401:34;17381:18;;;17374:62;17472:31;17452:18;;;17445:59;17521:19;;9450:90:0::1;17121:425:1::0;9450:90:0::1;9571:6;::::0;9551:34:::1;::::0;-1:-1:-1;;;;;9571:6:0::1;;9551:19;:34::i;:::-;9596:35;9616:8;9626:4;9596:19;:35::i;:::-;9666:6;::::0;-1:-1:-1;;;;;9666:6:0::1;9676:1;11246:16:::0;;;;;;;;;;;9656:21;9652:127:::1;;9711:6;::::0;-1:-1:-1;;;;;9711:6:0::1;11219:7:::0;11246:16;;;;;;;;;;;9694:73:::1;::::0;9711:6;9719:8;;9729:17:::1;11153:117:::0;9694:73:::1;;9652:127;9818:6;::::0;;-1:-1:-1;;;;;9835:17:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;9868:40:::1;::::0;9818:6;::::1;::::0;9835:17;9818:6;;9868:40:::1;::::0;9799:16:::1;::::0;9868:40:::1;9332:594;9272:654:::0;:::o;14348:134::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;-1:-1:-1;;;;;14436:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14436:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14348:134::o;13695:222::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;13779:14:::1;::::0;::::1;;13778:15;13770:24;;;::::0;::::1;;13836:4;-1:-1:-1::0;;;;;13813:28:0;::::1;::::0;13805:55:::1;;;::::0;-1:-1:-1;;;13805:55:0;;17753:2:1;13805:55:0::1;::::0;::::1;17735:21:1::0;17792:2;17772:18;;;17765:30;17831:16;17811:18;;;17804:44;17865:18;;13805:55:0::1;17551:338:1::0;13805:55:0::1;13871:11;:38:::0;;-1:-1:-1;;;;;13871:38:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;13695:222::o;9934:225::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;10013:6:::1;::::0;9993:34:::1;::::0;-1:-1:-1;;;;;10013:6:0::1;;9993:19;:34::i;:::-;10057:6;::::0;;10074:19;;::::1;::::0;;;10109:42:::1;::::0;-1:-1:-1;;;;;10057:6:0;;::::1;::::0;10038:16:::1;::::0;10057:6;;10109:42:::1;::::0;10038:16;;10109:42:::1;9982:177;9934:225::o:0;16442:428::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;-1:-1:-1;;;;;16572:23:0;::::1;::::0;;::::1;::::0;:63:::1;;-1:-1:-1::0;;;;;;16617:18:0;::::1;::::0;::::1;16572:63;:103;;;;-1:-1:-1::0;;;;;;16656:19:0;::::1;::::0;::::1;16572:103;16564:157;;;::::0;-1:-1:-1;;;16564:157:0;;18096:2:1;16564:157:0::1;::::0;::::1;18078:21:1::0;18135:2;18115:18;;;18108:30;18174:25;18154:18;;;18147:53;18217:18;;16564:157:0::1;17894:347:1::0;16564:157:0::1;16732:11;:42:::0;;-1:-1:-1;;;;;16732:42:0;;::::1;::::0;;;::::1;;::::0;;;16785:16;:32;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;16828:17;:34;;;;;::::1;::::0;::::1;;::::0;;16442:428::o;15222:182::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;15375:14:::1;:21:::0;;-1:-1:-1;;15375:21:0::1;15392:4;15375:21;::::0;;15222:182::o;13123:564::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;13205:7:::1;13200:480;;-1:-1:-1::0;;;;;13229:13:0;;::::1;13245:5;13229:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;13229:21:0::1;::::0;;13265:11:::1;::::0;:34;;;;;::::1;::::0;::::1;18414:74:1::0;;;;18504:18;;;18497:50;;;;13265:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18387:18:1;;13265:34:0::1;18246:307:1::0;13200:480:0::1;13336:17;::::0;:22;13332:135:::1;;13425:6;13405:17;;13387:15;:35;;;;:::i;:::-;:44;13379:72;;;::::0;-1:-1:-1;;;13379:72:0;;18760:2:1;13379:72:0::1;::::0;::::1;18742:21:1::0;18799:2;18779:18;;;18772:30;18838:17;18818:18;;;18811:45;18873:18;;13379:72:0::1;18558:339:1::0;13379:72:0::1;-1:-1:-1::0;;;;;13490:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;13489:14;13481:54;;;::::0;-1:-1:-1;;;13481:54:0;;19104:2:1;13481:54:0::1;::::0;::::1;19086:21:1::0;19143:2;19123:18;;;19116:30;19182:29;19162:18;;;19155:57;19229:18;;13481:54:0::1;18902:351:1::0;13481:54:0::1;-1:-1:-1::0;;;;;13550:13:0;;::::1;;::::0;;;13566:4:::1;13550:13;::::0;;;;;;;;:20;;-1:-1:-1;;13550:20:0::1;::::0;::::1;::::0;;13605:15:::1;13585:17;:35:::0;13635:11:::1;::::0;:33;;;;;::::1;::::0;::::1;18414:74:1::0;;;;18504:18;;;18497:50;13635:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18387:18:1;;13635:33:0::1;18246:307:1::0;13200:480:0::1;13123:564:::0;;:::o;11938:175::-;9126:6;;12004:4;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;12053:9:::1;::::0;12021:62:::1;::::0;12038:4:::1;::::0;12053:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12053:9:0::1;-1:-1:-1::0;;12021:8:0::1;:62::i;:::-;-1:-1:-1::0;12101:4:0::1;11938:175:::0;:::o;24022:593::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;24084:14:::1;::::0;::::1;;24083:15;24075:52;;;::::0;-1:-1:-1;;;24075:52:0;;19460:2:1;24075:52:0::1;::::0;::::1;19442:21:1::0;19499:2;19479:18;;;19472:30;19538:26;19518:18;;;19511:54;19582:18;;24075:52:0::1;19258:348:1::0;24075:52:0::1;24146:16;::::0;::::1;::::0;::::1;;;24138:53;;;::::0;-1:-1:-1;;;24138:53:0;;19813:2:1;24138:53:0::1;::::0;::::1;19795:21:1::0;19852:2;19832:18;;;19825:30;19891:26;19871:18;;;19864:54;19935:18;;24138:53:0::1;19611:348:1::0;24138:53:0::1;24214:11;::::0;;;::::1;-1:-1:-1::0;;;;;24214:11:0::1;24202:106;;24256:11;:40:::0;;;::::1;24290:4;24256:40:::0;::::1;;::::0;;24202:106:::1;24322:11;::::0;24344:6:::1;::::0;24322:87:::1;::::0;;;;-1:-1:-1;;;;;24344:6:0;;::::1;24322:87;::::0;::::1;20187:74:1::0;20309:10;24359:12:0::1;20297:23:1::0;20277:18;;;20270:51;20369:18;24381:15:0::1;20357:31:1::0;20337:18;;;20330:59;4655:2:0::1;20405:18:1::0;;;20398:45;24322:11:0;;;::::1;;::::0;:21:::1;::::0;20159:19:1;;24322:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;24431:14:0::1;:21:::0;;-1:-1:-1;;24431:21:0::1;24448:4;24431:21;::::0;;24490:6:::1;::::0;-1:-1:-1;;;;;24490:6:0::1;-1:-1:-1::0;11246:16:0;;;;;;;;;;;24506:5:::1;::::0;24480:22:::1;::::0;24500:2:::1;24480:22;:::i;:::-;24479:32;;;;:::i;:::-;24463:13;:48:::0;24546:6:::1;::::0;-1:-1:-1;;;;;24546:6:0::1;11219:7:::0;11246:16;;;;;;;;;;;24562:5:::1;::::0;24536:22:::1;::::0;24556:2:::1;24536:22;:::i;:::-;24535:32;;;;:::i;:::-;24522:10;:45:::0;24592:15:::1;24578:11;:29:::0;24022:593::o;11278:165::-;11356:4;11373:40;11383:10;11395:9;11406:6;11373:9;:40::i;:::-;-1:-1:-1;11431:4:0;;11278:165;-1:-1:-1;;;11278:165:0:o;24813:248::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;24912:4:::1;-1:-1:-1::0;;;;;24895:22:0;::::1;::::0;24887:62:::1;;;::::0;-1:-1:-1;;;24887:62:0;;20656:2:1;24887:62:0::1;::::0;::::1;20638:21:1::0;20695:2;20675:18;;;20668:30;20734:29;20714:18;;;20707:57;20781:18;;24887:62:0::1;20454:351:1::0;24887:62:0::1;25014:6;::::0;25022:30:::1;::::0;;;;25046:4:::1;25022:30;::::0;::::1;160:74:1::0;24982:5:0;;-1:-1:-1;;;;;24999:14:0;;::::1;::::0;::::1;::::0;25014:6;;;::::1;::::0;24999:14;;25022:15:::1;::::0;133:18:1;;25022:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24999:54;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;21191:55:1;;;24999:54:0::1;::::0;::::1;21173:74:1::0;21263:18;;;21256:34;21146:18;;24999:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16878:481::-:0;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;16994:6:::1;16981:9;:19;;;;:60;;;;;17034:7;17021:9;:20;;;;16981:60;:95;;;;;17070:6;17062:4;:14;;;;16981:95;:131;;;;;17105:7;17097:4;:15;;;;16981:131;:167;;;;;17142:6;17133:5;:15;;;;16981:167;:204;;;;;17178:7;17169:5;:16;;;;16981:204;16973:273;;;::::0;-1:-1:-1;;;16973:273:0;;21753:2:1;16973:273:0::1;::::0;::::1;21735:21:1::0;21792:2;21772:18;;;21765:30;21831:34;21811:18;;;21804:62;21902:9;21882:18;;;21875:37;21929:19;;16973:273:0::1;21551:403:1::0;16973:273:0::1;17257:8;:30:::0;;::::1;::::0;;::::1;17298:20:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;17329:22:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16878:481::o;18496:263::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;18605:19:::1;:33:::0;;-1:-1:-1;;18605:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;18649:22:::1;:47:::0;;-1:-1:-1;;18649:47:0::1;::::0;::::1;;;::::0;;18712:39:::1;::::0;2871:41:1;;;18712:39:0::1;::::0;2859:2:1;2844:18;18712:39:0::1;;;;;;;;18496:263:::0;;:::o;12435:680::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;12515:16:::1;::::0;::::1;::::0;::::1;;;12514:17;12506:60;;;::::0;-1:-1:-1;;;12506:60:0;;22161:2:1;12506:60:0::1;::::0;::::1;22143:21:1::0;22200:2;22180:18;;;22173:30;22239:32;22219:18;;;22212:60;22289:18;;12506:60:0::1;21959:354:1::0;12506:60:0::1;12577:20;12610:9;12577:43;;12631:16;12661:10;-1:-1:-1::0;;;;;12661:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12650:40:0::1;;12699:4;12706:10;-1:-1:-1::0;;;;;12706:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12650:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;22827:15:1;;;12650:74:0::1;::::0;::::1;22809:34:1::0;22879:15;;22859:18;;;22852:43;22721:18;;12650:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12743:6;::::0;-1:-1:-1;;;;;12743:6:0;;::::1;12753:5;12735:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;12735:23:0::1;::::0;;12631:93;;-1:-1:-1;12773:22:0;::::1;12769:200;;12832:10;-1:-1:-1::0;;;;;12832:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12821:43:0::1;;12873:4;12880:10;-1:-1:-1::0;;;;;12880:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12821:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;22827:15:1;;;12821:77:0::1;::::0;::::1;22809:34:1::0;22879:15;;22859:18;;;22852:43;22721:18;;12821:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12812:6;:86:::0;;;::::1;-1:-1:-1::0;;;;;12812:86:0;;;::::1;::::0;;;::::1;::::0;;12769:200:::1;;;12940:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;12940:17:0;::::1;;::::0;;12769:200:::1;12979:9;:22:::0;;;::::1;;-1:-1:-1::0;;;;;12979:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13020:6:::1;::::0;;::::1;-1:-1:-1::0;13012:15:0;;;-1:-1:-1;13012:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13012:22:0::1;::::0;;::::1;::::0;;13077:9;;13045:62:::1;::::0;13062:4:::1;::::0;13077:9;::::1;;-1:-1:-1::0;;13045:8:0::1;:62::i;24623:182::-:0;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;24690:16:::1;::::0;::::1;::::0;::::1;;;24689:17;24681:58;;;::::0;-1:-1:-1;;;24681:58:0;;23108:2:1;24681:58:0::1;::::0;::::1;23090:21:1::0;23147:2;23127:18;;;23120:30;23186;23166:18;;;23159:58;23234:18;;24681:58:0::1;22906:352:1::0;24681:58:0::1;24758:6;::::0;24750:47:::1;::::0;-1:-1:-1;;;;;24758:6:0;;::::1;::::0;24775:21:::1;24750:47:::0;::::1;;;::::0;24758:6:::1;24750:47:::0;24758:6;24750:47;24775:21;24758:6;24750:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24623:182::o:0;17564:699::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;17764:16;17744;4716:13:::1;4655:2;4716;:13;:::i;:::-;4699:30;::::0;4497:11:::1;4699:30;:::i;:::-;17734:26;;;;:::i;:::-;17733:47;;;;:::i;:::-;17717:13;:63:::0;17832:13;17815;4716::::1;4655:2;4716;:13;:::i;:::-;4699:30;::::0;4497:11:::1;4699:30;:::i;:::-;17805:23;;;;:::i;:::-;17804:41;;;;:::i;:::-;17791:10;:54:::0;;;17864:13:::1;::::0;:27:::1;;17856:73;;;::::0;-1:-1:-1;;;17856:73:0;;23465:2:1;17856:73:0::1;::::0;::::1;23447:21:1::0;23504:2;23484:18;;;23477:30;23543:34;23523:18;;;23516:62;23614:3;23594:18;;;23587:31;23635:19;;17856:73:0::1;23263:397:1::0;17856:73:0::1;17973:6;::::0;-1:-1:-1;;;;;17973:6:0::1;11219:7:::0;11246:16;;;;;;;;;;;5524:5:::1;::::0;17963:23:::1;::::0;17983:3:::1;17963:23;:::i;:::-;17962:44;;;;:::i;:::-;17948:10;;:58;;17940:106;;;::::0;-1:-1:-1;;;17940:106:0;;23867:2:1;17940:106:0::1;::::0;::::1;23849:21:1::0;23906:2;23886:18;;;23879:30;23945:34;23925:18;;;23918:62;24016:5;23996:18;;;23989:33;24039:19;;17940:106:0::1;23665:399:1::0;17940:106:0::1;18089:9;4716:13;4655:2;4716;:13;:::i;:::-;4699:30;::::0;4497:11:::1;4699:30;:::i;:::-;18079:19;;;;:::i;:::-;18065:10;;:33;;18057:92;;;::::0;-1:-1:-1;;;18057:92:0;;24271:2:1;18057:92:0::1;::::0;::::1;24253:21:1::0;24310:2;24290:18;;;24283:30;24349:34;24329:18;;;24322:62;24420:16;24400:18;;;24393:44;24454:19;;18057:92:0::1;24069:410:1::0;18057:92:0::1;18195:9;4716:13;4655:2;4716;:13;:::i;:::-;4699:30;::::0;4497:11:::1;4699:30;:::i;:::-;18185:19;;;;:::i;:::-;18168:13;;:36;;18160:95;;;::::0;-1:-1:-1;;;18160:95:0;;24271:2:1;18160:95:0::1;::::0;::::1;24253:21:1::0;24310:2;24290:18;;;24283:30;24349:34;24329:18;;;24322:62;24420:16;24400:18;;;24393:44;24454:19;;18160:95:0::1;24069:410:1::0;18160:95:0::1;17564:699:::0;;;;:::o;14638:148::-;9126:6;;-1:-1:-1;;;;;9126:6:0;9136:10;9126:20;9118:50;;;;-1:-1:-1;;;9118:50:0;;11218:2:1;9118:50:0;;;11200:21:1;11257:2;11237:18;;;11230:30;-1:-1:-1;;;11276:18:1;;;11269:47;11333:18;;9118:50:0;11016:341:1;9118:50:0;-1:-1:-1;;;;;14734:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14734:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14638:148::o;11620:310::-;-1:-1:-1;;;;;11715:20:0;;11707:52;;;;-1:-1:-1;;;11707:52:0;;24686:2:1;11707:52:0;;;24668:21:1;24725:2;24705:18;;;24698:30;24764:21;24744:18;;;24737:49;24803:18;;11707:52:0;24484:343:1;11707:52:0;-1:-1:-1;;;;;11778:21:0;;11770:53;;;;-1:-1:-1;;;11770:53:0;;24686:2:1;11770:53:0;;;24668:21:1;24725:2;24705:18;;;24698:30;24764:21;24744:18;;;24737:49;24803:18;;11770:53:0;24484:343:1;11770:53:0;-1:-1:-1;;;;;11836:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11889:33;;391:25:1;;;11889:33:0;;364:18:1;11889:33:0;;;;;;;11620:310;;;:::o;19221:1946::-;19300:4;-1:-1:-1;;;;;19325:18:0;;19317:68;;;;-1:-1:-1;;;19317:68:0;;25034:2:1;19317:68:0;;;25016:21:1;25073:2;25053:18;;;25046:30;25112:34;25092:18;;;25085:62;25183:7;25163:18;;;25156:35;25208:19;;19317:68:0;24832:401:1;19317:68:0;-1:-1:-1;;;;;19404:16:0;;19396:64;;;;-1:-1:-1;;;19396:64:0;;25440:2:1;19396:64:0;;;25422:21:1;25479:2;25459:18;;;25452:30;25518:34;25498:18;;;25491:62;25589:5;25569:18;;;25562:33;25612:19;;19396:64:0;25238:399:1;19396:64:0;19488:1;19479:6;:10;19471:64;;;;-1:-1:-1;;;19471:64:0;;25844:2:1;19471:64:0;;;25826:21:1;25883:2;25863:18;;;25856:30;25922:34;25902:18;;;25895:62;25993:11;25973:18;;;25966:39;26022:19;;19471:64:0;25642:405:1;19471:64:0;-1:-1:-1;;;;;19634:13:0;;19546:8;19634:13;;;:7;:13;;;;;;19546:8;;;;19634:13;;19630:162;;;19670:4;19664:10;;19630:162;;;-1:-1:-1;;;;;19696:11:0;;;;;;:7;:11;;;;;;;;19692:100;;;19731:4;19724:11;;19692:100;;;-1:-1:-1;19776:4:0;19692:100;19806:20;19817:4;19823:2;19806:10;:20::i;:::-;19802:644;;;19847:14;;;;19843:89;;19882:34;;-1:-1:-1;;;19882:34:0;;26254:2:1;19882:34:0;;;26236:21:1;26293:2;26273:18;;;26266:30;26332:26;26312:18;;;26305:54;26376:18;;19882:34:0;26052:348:1;19843:89:0;19950:3;:11;;;;19957:4;19950:11;19946:232;;;-1:-1:-1;;;;;19986:27:0;;;;;;:21;:27;;;;;;;;19985:28;:58;;;;-1:-1:-1;;;;;;20018:25:0;;;;;;:21;:25;;;;;;;;20017:26;19985:58;19981:182;;;20086:12;;20076:6;:22;;20068:75;;;;-1:-1:-1;;;20068:75:0;;26607:2:1;20068:75:0;;;26589:21:1;26646:2;26626:18;;;26619:30;26685:34;26665:18;;;26658:62;26756:10;26736:18;;;26729:38;26784:19;;20068:75:0;26405:404:1;20068:75:0;20210:9;;-1:-1:-1;;;;;20196:24:0;;;20210:9;;;;;20196:24;;;;:33;;;20225:4;20224:5;20196:33;20192:243;;;-1:-1:-1;;;;;20255:25:0;;;;;;:21;:25;;;;;;;;20250:170;;20339:14;;20329:6;20313:13;20323:2;-1:-1:-1;;;;;11246:16:0;11219:7;11246:16;;;;;;;;;;;;11153:117;20313:13;:22;;;;:::i;:::-;:40;;20305:95;;;;-1:-1:-1;;;20305:95:0;;27016:2:1;20305:95:0;;;26998:21:1;27055:2;27035:18;;;27028:30;27094:34;27074:18;;;27067:62;27165:12;27145:18;;;27138:40;27195:19;;20305:95:0;26814:406:1;20305:95:0;20462:4;20458:632;;;20488:6;;;;20483:596;;20519:19;;;;;;;20515:549;;;20612:4;20563:28;11246:16;;;;;;;;;;;20669:13;;20645:37;;20641:404;;20729:10;;20770:22;;;;20766:97;;;20827:13;;20817:6;;-1:-1:-1;;;;;20817:6:0;11219:7;11246:16;;;;;;;;;;;5524:5;;20807:33;;;:::i;:::-;20806:54;;;;:::i;:::-;20796:64;;20766:97;20917:7;20893:20;:31;20889:72;;20951:7;20928:30;;20889:72;20987:34;21000:20;20987:12;:34::i;:::-;20684:361;20641:404;20540:524;20515:549;21107:52;21124:4;21130:2;21134:6;21142:3;21147:4;21153:5;21107:16;:52::i;:::-;21100:59;19221:1946;-1:-1:-1;;;;;;;19221:1946:0:o;25524:1055::-;25643:4;25664:20;25675:4;25681:2;25664:10;:20::i;:::-;25660:228;;;25719:11;;:39;;;;;-1:-1:-1;;;;;27506:15:1;;;25719:39:0;;;27488:34:1;27558:15;;;27538:18;;;27531:43;27590:18;;;27583:34;;;25688:12:0;;25719:11;;;;;:21;;27400:18:1;;25719:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25719:39:0;;;;;;;;-1:-1:-1;;25719:39:0;;;;;;;;;;;;:::i;:::-;;;25715:122;;25826:8;;;25715:122;25809:5;-1:-1:-1;25855:7:0;25851:26;;25866:8;;;25851:26;25686:202;25660:228;-1:-1:-1;;;;;25932:25:0;;25898:12;25932:25;;;:19;:25;;;;;;25913:4;;25932:25;;;:52;;-1:-1:-1;;;;;;25961:23:0;;;;;;:19;:23;;;;;;;;25932:52;25928:99;;;-1:-1:-1;26010:5:0;25928:99;-1:-1:-1;;;;;26037:13:0;;:7;:13;;;;;;;;;;:23;;26054:6;;26037:7;:23;;26054:6;;26037:23;:::i;:::-;;;;-1:-1:-1;26071:22:0;;-1:-1:-1;26097:7:0;26096:55;;26145:6;26096:55;;;26108:34;26118:4;26124:3;26129:4;26135:6;26108:9;:34::i;:::-;26071:80;;26177:14;26162:7;:11;26170:2;-1:-1:-1;;;;;26162:11:0;-1:-1:-1;;;;;26162:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;26222:2;-1:-1:-1;;;;;26207:34:0;26216:4;-1:-1:-1;;;;;26207:34:0;;26226:14;26207:34;;;;391:25:1;;379:2;364:18;;245:177;26207:34:0;;;;;;;;26257:16;;;;;;;26252:298;;26290:28;26309:4;26315:2;26290:18;:28::i;:::-;26338:16;;;;;;;26337:17;:41;;;;;26358:20;26369:4;26375:2;26358:10;:20::i;:::-;26337:77;;;;-1:-1:-1;;;;;;26383:31:0;;;;;;:25;:31;;;;;;;;26382:32;26337:77;:111;;;;-1:-1:-1;;;;;;26419:29:0;;;;;;:25;:29;;;;;;;;26418:30;26337:111;:121;;;;;26453:5;26452:6;26337:121;26333:206;;;26479:44;;-1:-1:-1;;;26479:44:0;;27830:2:1;26479:44:0;;;27812:21:1;27869:2;27849:18;;;27842:30;27908:34;27888:18;;;27881:62;27979:4;27959:18;;;27952:32;28001:19;;26479:44:0;27628:398:1;26333:206:0;-1:-1:-1;26567:4:0;;25524:1055;-1:-1:-1;;;;;;;;25524:1055:0:o;18767:446::-;18868:6;;18836:4;;-1:-1:-1;;;;;18860:14:0;;;18868:6;;18860:14;;;;:43;;-1:-1:-1;18897:6:0;;-1:-1:-1;;;;;18891:12:0;;;18897:6;;18891:12;;18860:43;:79;;;;-1:-1:-1;18933:6:0;;-1:-1:-1;;;;;18933:6:0;18920:9;:19;;18860:79;:118;;;;-1:-1:-1;;;;;;18957:21:0;;;;;;:17;:21;;;;;;;;18956:22;18860:118;:159;;;;-1:-1:-1;;;;;;18996:23:0;;;;;;:17;:23;;;;;;;;18995:24;18860:159;:186;;;;-1:-1:-1;;;;;;19036:10:0;;5663:42;19036:10;;18860:186;:219;;;;-1:-1:-1;;;;;;19063:16:0;;;;18860:219;:257;;;;-1:-1:-1;;;;;;19096:21:0;;19112:4;19096:21;;18860:257;:302;;;;-1:-1:-1;19150:11:0;;-1:-1:-1;;;;;19134:28:0;;;19150:11;;;;;19134:28;;18860:302;:345;;;;-1:-1:-1;19193:11:0;;-1:-1:-1;;;;;19179:26:0;;;19193:11;;;;;19179:26;;18860:345;18853:352;18767:446;-1:-1:-1;;;18767:446:0:o;21175:2268::-;6992:6;:13;;-1:-1:-1;;6992:13:0;7001:4;6992:13;;;21258:30:::1;::::0;;::::1;::::0;::::1;::::0;;21281:7:::1;21258:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;;::::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;21299:33;;;;::::1;::::0;;21324:8:::1;21299:33:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;;::::1;;::::0;;;;;;;21347:16;;21258:30;;21299:33;21347:21:::1;6992:6:::0;21347:21;21343:60:::1;;21385:7;;;;21343:60;21439:4;21419:26;::::0;;;:11:::1;:26;::::0;;;;;;;21454:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21454:9:0::1;21419:46:::0;;;;;;;;-1:-1:-1;;21419:67:0::1;21415:166;;21523:4;21503:26;::::0;;;:11:::1;:26;::::0;;;;;;;21538:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21538:9:0::1;21503:46:::0;;;;;;;-1:-1:-1;;21503:66:0;;21415:166:::1;21593:17;21678:1;21658:6;:16;;;21614:60;;21638:6;:16;;;21615:39;;:20;:39;;;;:::i;:::-;21614:60;;;;:::i;:::-;21613:66;;;;:::i;:::-;21593:86:::0;-1:-1:-1;21690:15:0::1;21708:32;21593:86:::0;21708:20;:32:::1;:::i;:::-;21785:16;::::0;;21799:1:::1;21785:16:::0;;;;;::::1;::::0;;21690:50;;-1:-1:-1;21761:21:0::1;::::0;21785:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21785:16:0::1;21761:40;;21830:4;21812;21817:1;21812:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;21812:23:0::1;;;-1:-1:-1::0;;;;;21812:23:0::1;;;::::0;::::1;21856:9;;;;;;;;;-1:-1:-1::0;;;;;21856:9:0::1;-1:-1:-1::0;;;;;21856:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21846:4;21851:1;21846:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21846:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21889:9:::1;::::0;:186:::1;::::0;;;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;21964:7;;21986:1:::1;::::0;22002:4;;22029::::1;::::0;22049:15:::1;::::0;21889:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21885:233;;22100:7;;;;;;;21885:233;22151:21;22130:18;22237:7:::0;22211:22:::1;22224:9:::0;22151:21;22211:22:::1;:::i;:::-;22210:34;;;;:::i;:::-;22183:61:::0;-1:-1:-1;22261:13:0;;22257:400:::1;;22295:9;::::0;:222:::1;::::0;;;;22372:4:::1;22295:222;::::0;::::1;29426:34:1::0;29476:18;;;29469:34;;;22424:1:0::1;29519:18:1::0;;;29512:34;;;29562:18;;;29555:34;5663:42:0::1;29605:19:1::0;;;29598:44;22487:15:0::1;29658:19:1::0;;;29651:35;22295:9:0::1;::::0;;::::1;-1:-1:-1::0;;;;;22295:9:0::1;::::0;:25:::1;::::0;22328:16;;29337:19:1;;22295:222:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22295:222:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;22295:222:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;22291:355;;22624:7;;;;;;;;;22291:355;-1:-1:-1::0;;22542:40:0::1;::::0;;30182:25:1;;;30238:2;30223:18;;30216:34;;;22542:40:0::1;::::0;-1:-1:-1;30155:18:1;22542:40:0::1;;;;;;;22291:355;22669:30;22683:16:::0;22669:30;::::1;:::i;:::-;;;22730:6;:16;;;22710:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;22831:16:::1;::::0;::::1;::::0;22816:11:::1;::::0;::::1;::::0;22757:12:::1;::::0;-1:-1:-1;22757:12:0;;22802:45;;::::1;::::0;22803:24:::1;::::0;::::1;:10:::0;:24:::1;:::i;:::-;22802:45;;;;:::i;:::-;22780:67;;22858:20;22911:6;:16;;;22881:46;;22895:6;:12;;;22882:25;;:10;:25;;;;:::i;:::-;22881:46;;;;:::i;:::-;22858:69:::0;-1:-1:-1;22938:24:0::1;22979:26;22858:69:::0;22979:11;:26:::1;:::i;:::-;22965:41;::::0;:10;:41:::1;:::i;:::-;23021:11;::::0;::::1;::::0;22938:68;;-1:-1:-1;23021:15:0::1;;::::0;23017:125:::1;;23066:16:::0;;23113:12:::1;::::0;::::1;::::0;23066:64:::1;::::0;-1:-1:-1;;;;;23066:16:0;;::::1;::::0;:64:::1;::::0;;::::1;::::0;23095:11;;23066:64:::1;::::0;;;23095:11;23066:16;:64;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23053:77:0;;-1:-1:-1;;23017:125:0::1;23156:12;::::0;::::1;::::0;:16:::1;;::::0;23152:129:::1;;23202:17:::0;;23251:13:::1;::::0;;::::1;::::0;23202:67;;-1:-1:-1;;;;;23202:17:0;;::::1;::::0;:67:::1;::::0;;::::1;::::0;23232:12;;23202:67:::1;::::0;;;23232:12;23202:17;:67;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23189:80:0;;-1:-1:-1;;23152:129:0::1;23295:16;::::0;::::1;::::0;:20:::1;;::::0;23291:145:::1;;23345:11;:21:::0;23402:17;;23345:79:::1;::::0;-1:-1:-1;;;;;23345:21:0;;::::1;::::0;:79:::1;::::0;;::::1;::::0;23379:16;;23345:79:::1;::::0;;;23379:16;23345:21;:79;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23332:92:0;;-1:-1:-1;;23291:145:0::1;21247:2196;;;;;;;;;;;7016:1;-1:-1:-1::0;7028:6:0;:14;;-1:-1:-1;;7028:14:0;;;21175:2268::o;26587:804::-;26675:7;26695:18;26728:3;26724:205;;;-1:-1:-1;26761:9:0;:16;;;26724:205;;;26799:4;26795:134;;;-1:-1:-1;26833:9:0;:17;;;;;;26795:134;;;-1:-1:-1;26896:9:0;:21;;;;;;26795:134;26943:10;26957:1;26943:15;26939:39;;26969:6;26962:13;;;;;26939:39;27000:11;;;;;-1:-1:-1;;;;;27000:11:0;27024:4;26992:37;:110;;;;;27047:13;27064:1;27047:18;:54;;;;27082:13;27099:2;27082:19;27047:54;26988:138;;;-1:-1:-1;27119:4:0;26988:138;27136:17;5524:5;27156:19;27165:10;27156:6;:19;:::i;:::-;:38;;;;:::i;:::-;27136:58;-1:-1:-1;27209:13:0;;27205:141;;27255:4;27239:7;:22;;;;;;;;;;:35;;27265:9;;27239:7;:35;;27265:9;;27239:35;:::i;:::-;;;;-1:-1:-1;;27294:40:0;;391:25:1;;;27317:4:0;;-1:-1:-1;;;;;27294:40:0;;;;;379:2:1;364:18;27294:40:0;;;;;;;27205:141;27365:18;27374:9;27365:6;:18;:::i;23451:563::-;23534:16;;;;;;;23533:17;23525:65;;;;-1:-1:-1;;;23525:65:0;;30849:2:1;23525:65:0;;;30831:21:1;30888:2;30868:18;;;30861:30;30927:34;30907:18;;;30900:62;30998:5;30978:18;;;30971:33;31021:19;;23525:65:0;30647:399:1;23525:65:0;23606:20;23617:4;23623:2;23606:10;:20::i;:::-;23605:21;:37;;;;-1:-1:-1;23636:6:0;;-1:-1:-1;;;;;23630:12:0;;;23636:6;;23630:12;23605:37;23601:406;;;-1:-1:-1;;;;;23659:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;23659:30:0;;;23685:4;23659:30;;;;;;23704:19;:25;;;;;:32;;;;;;;;;;23751:16;:23;;-1:-1:-1;;23751:23:0;23659:30;23751:23;;;;;23801:11;;;;23789:114;;23847:11;:40;;;;23881:4;23847:40;;;;;23789:114;23917:19;:26;;-1:-1:-1;;23917:26:0;;;;;23963:32;;-1:-1:-1;2871:41:1;;23963:32:0;;2859:2:1;2844:18;23963:32:0;2731:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:607::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1585:3;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1899:2;-1:-1:-1;;1824:2:1;1816:6;1812:15;1808:88;1797:9;1793:104;1789:113;1781:121;;;;1301:607;;;;:::o;1913:159::-;1980:20;;2040:6;2029:18;;2019:29;;2009:57;;2062:1;2059;2052:12;2009:57;1913:159;;;:::o;2077:401::-;2159:6;2167;2175;2183;2236:3;2224:9;2215:7;2211:23;2207:33;2204:53;;;2253:1;2250;2243:12;2204:53;2276:28;2294:9;2276:28;:::i;:::-;2266:38;;2323:37;2356:2;2345:9;2341:18;2323:37;:::i;:::-;2313:47;;2379:37;2412:2;2401:9;2397:18;2379:37;:::i;:::-;2369:47;;2435:37;2468:2;2457:9;2453:18;2435:37;:::i;:::-;2425:47;;2077:401;;;;;;;:::o;2923:154::-;-1:-1:-1;;;;;3002:5:1;2998:54;2991:5;2988:65;2978:93;;3067:1;3064;3057:12;3082:315;3150:6;3158;3211:2;3199:9;3190:7;3186:23;3182:32;3179:52;;;3227:1;3224;3217:12;3179:52;3266:9;3253:23;3285:31;3310:5;3285:31;:::i;:::-;3335:5;3387:2;3372:18;;;;3359:32;;-1:-1:-1;;;3082:315:1:o;3402:247::-;3461:6;3514:2;3502:9;3493:7;3489:23;3485:32;3482:52;;;3530:1;3527;3520:12;3482:52;3569:9;3556:23;3588:31;3613:5;3588:31;:::i;4028:456::-;4105:6;4113;4121;4174:2;4162:9;4153:7;4149:23;4145:32;4142:52;;;4190:1;4187;4180:12;4142:52;4229:9;4216:23;4248:31;4273:5;4248:31;:::i;:::-;4298:5;-1:-1:-1;4355:2:1;4340:18;;4327:32;4368:33;4327:32;4368:33;:::i;:::-;4028:456;;4420:7;;-1:-1:-1;;;4474:2:1;4459:18;;;;4446:32;;4028:456::o;4489:184::-;4541:77;4538:1;4531:88;4638:4;4635:1;4628:15;4662:4;4659:1;4652:15;4678:334;4749:2;4743:9;4805:2;4795:13;;-1:-1:-1;;4791:86:1;4779:99;;4908:18;4893:34;;4929:22;;;4890:62;4887:88;;;4955:18;;:::i;:::-;4991:2;4984:22;4678:334;;-1:-1:-1;4678:334:1:o;5017:183::-;5077:4;5110:18;5102:6;5099:30;5096:56;;;5132:18;;:::i;:::-;-1:-1:-1;5177:1:1;5173:14;5189:4;5169:25;;5017:183::o;5205:662::-;5259:5;5312:3;5305:4;5297:6;5293:17;5289:27;5279:55;;5330:1;5327;5320:12;5279:55;5366:6;5353:20;5392:4;5416:60;5432:43;5472:2;5432:43;:::i;:::-;5416:60;:::i;:::-;5510:15;;;5596:1;5592:10;;;;5580:23;;5576:32;;;5541:12;;;;5620:15;;;5617:35;;;5648:1;5645;5638:12;5617:35;5684:2;5676:6;5672:15;5696:142;5712:6;5707:3;5704:15;5696:142;;;5778:17;;5766:30;;5816:12;;;;5729;;5696:142;;;-1:-1:-1;5856:5:1;5205:662;-1:-1:-1;;;;;;5205:662:1:o;5872:1215::-;5990:6;5998;6051:2;6039:9;6030:7;6026:23;6022:32;6019:52;;;6067:1;6064;6057:12;6019:52;6107:9;6094:23;6136:18;6177:2;6169:6;6166:14;6163:34;;;6193:1;6190;6183:12;6163:34;6231:6;6220:9;6216:22;6206:32;;6276:7;6269:4;6265:2;6261:13;6257:27;6247:55;;6298:1;6295;6288:12;6247:55;6334:2;6321:16;6356:4;6380:60;6396:43;6436:2;6396:43;:::i;6380:60::-;6474:15;;;6556:1;6552:10;;;;6544:19;;6540:28;;;6505:12;;;;6580:19;;;6577:39;;;6612:1;6609;6602:12;6577:39;6636:11;;;;6656:217;6672:6;6667:3;6664:15;6656:217;;;6752:3;6739:17;6769:31;6794:5;6769:31;:::i;:::-;6813:18;;6689:12;;;;6851;;;;6656:217;;;6892:5;-1:-1:-1;;6935:18:1;;6922:32;;-1:-1:-1;;6966:16:1;;;6963:36;;;6995:1;6992;6985:12;6963:36;;7018:63;7073:7;7062:8;7051:9;7047:24;7018:63;:::i;:::-;7008:73;;;5872:1215;;;;;:::o;7281:328::-;7355:6;7363;7371;7424:2;7412:9;7403:7;7399:23;7395:32;7392:52;;;7440:1;7437;7430:12;7392:52;7463:28;7481:9;7463:28;:::i;:::-;7453:38;;7510:37;7543:2;7532:9;7528:18;7510:37;:::i;:::-;7500:47;;7566:37;7599:2;7588:9;7584:18;7566:37;:::i;:::-;7556:47;;7281:328;;;;;:::o;7614:382::-;7679:6;7687;7740:2;7728:9;7719:7;7715:23;7711:32;7708:52;;;7756:1;7753;7746:12;7708:52;7795:9;7782:23;7814:31;7839:5;7814:31;:::i;8001:180::-;8060:6;8113:2;8101:9;8092:7;8088:23;8084:32;8081:52;;;8129:1;8126;8119:12;8081:52;-1:-1:-1;8152:23:1;;8001:180;-1:-1:-1;8001:180:1:o;8186:553::-;8287:6;8295;8303;8356:2;8344:9;8335:7;8331:23;8327:32;8324:52;;;8372:1;8369;8362:12;8324:52;8411:9;8398:23;8430:31;8455:5;8430:31;:::i;:::-;8480:5;-1:-1:-1;8537:2:1;8522:18;;8509:32;8550:33;8509:32;8550:33;:::i;:::-;8602:7;-1:-1:-1;8661:2:1;8646:18;;8633:32;8674:33;8633:32;8674:33;:::i;:::-;8726:7;8716:17;;;8186:553;;;;;:::o;8744:163::-;8811:20;;8871:10;8860:22;;8850:33;;8840:61;;8897:1;8894;8887:12;8912:328;8986:6;8994;9002;9055:2;9043:9;9034:7;9030:23;9026:32;9023:52;;;9071:1;9068;9061:12;9023:52;9094:28;9112:9;9094:28;:::i;:::-;9084:38;;9141:37;9174:2;9163:9;9159:18;9141:37;:::i;:::-;9131:47;;9197:37;9230:2;9219:9;9215:18;9197:37;:::i;9773:388::-;9841:6;9849;9902:2;9890:9;9881:7;9877:23;9873:32;9870:52;;;9918:1;9915;9908:12;9870:52;9957:9;9944:23;9976:31;10001:5;9976:31;:::i;:::-;10026:5;-1:-1:-1;10083:2:1;10068:18;;10055:32;10096:33;10055:32;10096:33;:::i;10626:385::-;10712:6;10720;10728;10736;10789:3;10777:9;10768:7;10764:23;10760:33;10757:53;;;10806:1;10803;10796:12;10757:53;-1:-1:-1;;10829:23:1;;;10899:2;10884:18;;10871:32;;-1:-1:-1;10950:2:1;10935:18;;10922:32;;11001:2;10986:18;10973:32;;-1:-1:-1;10626:385:1;-1:-1:-1;10626:385:1:o;11635:184::-;11687:77;11684:1;11677:88;11784:4;11781:1;11774:15;11808:4;11805:1;11798:15;11824:168;11891:6;11917:10;;;11929;;;11913:27;;11952:11;;;11949:37;;;11966:18;;:::i;:::-;11949:37;11824:168;;;;:::o;12405:482::-;12494:1;12537:5;12494:1;12551:330;12572:7;12562:8;12559:21;12551:330;;;12691:4;-1:-1:-1;;12619:77:1;12613:4;12610:87;12607:113;;;12700:18;;:::i;:::-;12750:7;12740:8;12736:22;12733:55;;;12770:16;;;;12733:55;12849:22;;;;12809:15;;;;12551:330;;;12555:3;12405:482;;;;;:::o;12892:866::-;12941:5;12971:8;12961:80;;-1:-1:-1;13012:1:1;13026:5;;12961:80;13060:4;13050:76;;-1:-1:-1;13097:1:1;13111:5;;13050:76;13142:4;13160:1;13155:59;;;;13228:1;13223:130;;;;13135:218;;13155:59;13185:1;13176:10;;13199:5;;;13223:130;13260:3;13250:8;13247:17;13244:43;;;13267:18;;:::i;:::-;-1:-1:-1;;13323:1:1;13309:16;;13338:5;;13135:218;;13437:2;13427:8;13424:16;13418:3;13412:4;13409:13;13405:36;13399:2;13389:8;13386:16;13381:2;13375:4;13372:12;13368:35;13365:77;13362:159;;;-1:-1:-1;13474:19:1;;;13506:5;;13362:159;13553:34;13578:8;13572:4;13553:34;:::i;:::-;13683:6;-1:-1:-1;;13611:79:1;13602:7;13599:92;13596:118;;;13694:18;;:::i;:::-;13732:20;;12892:866;-1:-1:-1;;;12892:866:1:o;13763:140::-;13821:5;13850:47;13891:4;13881:8;13877:19;13871:4;13850:47;:::i;13908:168::-;13981:9;;;14012;;14029:15;;;14023:22;;14009:37;13999:71;;14050:18;;:::i;14081:128::-;14148:9;;;14169:11;;;14166:37;;;14183:18;;:::i;14564:184::-;14616:77;14613:1;14606:88;14713:4;14710:1;14703:15;14737:4;14734:1;14727:15;15100:197;15138:3;15166:6;15207:2;15200:5;15196:14;15234:2;15225:7;15222:15;15219:41;;15240:18;;:::i;:::-;15289:1;15276:15;;15100:197;-1:-1:-1;;;15100:197:1:o;15302:125::-;15367:9;;;15388:10;;;15385:36;;;15401:18;;:::i;16491:274::-;16531:1;16557;16547:189;;16592:77;16589:1;16582:88;16693:4;16690:1;16683:15;16721:4;16718:1;16711:15;16547:189;-1:-1:-1;16750:9:1;;16491:274::o;20810:184::-;20880:6;20933:2;20921:9;20912:7;20908:23;20904:32;20901:52;;;20949:1;20946;20939:12;20901:52;-1:-1:-1;20972:16:1;;20810:184;-1:-1:-1;20810:184:1:o;21301:245::-;21368:6;21421:2;21409:9;21400:7;21396:23;21392:32;21389:52;;;21437:1;21434;21427:12;21389:52;21469:9;21463:16;21488:28;21510:5;21488:28;:::i;22318:251::-;22388:6;22441:2;22429:9;22420:7;22416:23;22412:32;22409:52;;;22457:1;22454;22447:12;22409:52;22489:9;22483:16;22508:31;22533:5;22508:31;:::i;28031:1026::-;28293:4;28341:3;28330:9;28326:19;28372:6;28361:9;28354:25;28398:2;28436:6;28431:2;28420:9;28416:18;28409:34;28479:3;28474:2;28463:9;28459:18;28452:31;28503:6;28538;28532:13;28569:6;28561;28554:22;28607:3;28596:9;28592:19;28585:26;;28646:2;28638:6;28634:15;28620:29;;28667:1;28677:218;28691:6;28688:1;28685:13;28677:218;;;28756:13;;-1:-1:-1;;;;;28752:62:1;28740:75;;28870:15;;;;28835:12;;;;28713:1;28706:9;28677:218;;;-1:-1:-1;;;;;;;28951:55:1;;;;28946:2;28931:18;;28924:83;-1:-1:-1;;;29038:3:1;29023:19;29016:35;28912:3;28031:1026;-1:-1:-1;;;28031:1026:1:o;29697:306::-;29785:6;29793;29801;29854:2;29842:9;29833:7;29829:23;29825:32;29822:52;;;29870:1;29867;29860:12;29822:52;29899:9;29893:16;29883:26;;29949:2;29938:9;29934:18;29928:25;29918:35;;29993:2;29982:9;29978:18;29972:25;29962:35;;29697:306;;;;;:::o;30261:171::-;30329:6;30368:10;;;30356;;;30352:27;;30391:12;;;30388:38;;;30406:18;;:::i

Swarm Source

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