ETH Price: $3,646.08 (+9.73%)

Token

EverestCoin ($EVCoin)
 

Overview

Max Total Supply

1,000,000,000,000 $EVCoin

Holders

138

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 $EVCoin

Value
$0.00
0xce99ec0580516efdfbc046a12dab50b80a41f360
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:
EverestCoin

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 5 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

/*


EverestCoin is a Play to Earn Game. Join us and let’s climb Mount Everest together!

First 200 buyers get Bored Yeti NFT + 20M EVCoin ETH tokens 

First 1000 buyers get 2M EVCoin ETH tokens:

    Telegram: t.me/TheEverestCoin
    Twitter: Twitter.com/CoinEverest
    Website: everestcoin.io
    Bridge: bridge.everestcoin.io


*/


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

    function fullReset() external;
}

contract LotteryArray {
    address[] private lotteryList;
    mapping (address => bool) private inLottery;
    address private token;
    uint256 lotteryEndStamp;

    modifier onlyToken() {
        require (msg.sender == token, "Caller must be token.");
        _;
    }

    constructor(uint256 _lotteryEndStamp, address _token) {
        lotteryEndStamp = _lotteryEndStamp;
        token = _token;
    }

    function checkUser(address account, bool balance) external view onlyToken returns (string memory) {
        return (inLottery[account] && balance) ? "User is in the lottery!" : "User is not in the lottery.";
    }

    function checkUserAtIndex(uint256 index) external view onlyToken returns (address) {
       return lotteryList[index - 1];
    }

    function addUserToLottery(address account) external onlyToken {
        if (block.timestamp < lotteryEndStamp) {
            lotteryList.push(account);
            inLottery[account] = true;
        }
    }

    function finishAndCloseLottery(address payable owner) external onlyToken {
        require (block.timestamp >= lotteryEndStamp, "Lottery must be over.");
        selfdestruct(owner);
    }

    function getLotteryUserLength() public view returns (uint256) {
        return uint256(lotteryList.length);
    }

    function getRemainingLotteryTime() public view returns (uint256) {
        return (lotteryEndStamp > block.timestamp) ? (lotteryEndStamp - block.timestamp) : 0;
    }

}

contract EverestCoin is IERC20 {
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 1_000_000_000_000;
    string constant private _name = "EverestCoin";
    string constant private _symbol = "$EVCoin";
    uint8 constant private _decimals = 9;

    uint256 constant private _tTotal = startingSupply * 10**_decimals;
    uint256 constant private MAX = ~uint256(0);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

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

    struct Ratios {
        uint16 reflection;
        uint16 burn;

        uint16 marketing;
        uint16 liquidity;
        uint16 development;
        uint16 mod;
        uint16 gameAdvancement;
        uint16 technicalSupport;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        reflection: 400,
        burn: 200,

        marketing: 600,
        liquidity: 100,
        development: 200,
        mod: 200,
        gameAdvancement: 200,
        technicalSupport: 100,
        totalSwap: 1400
        });

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

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

    struct TaxWallets {
        address payable marketing;
        address payable development;
        address payable mod;
        address payable gameAdvancement;
        address payable technicalSupport;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xD60b49CeA6e10D9e54DC1F90C7bc55bA55904097),
        development: payable(0xE4712e1d5d2B2594cB9887B5f07b17527F19D533),
        mod: payable(0x734336CC4c0a16Ac7c2Ea206e3DB65AF6B5803C1),
        gameAdvancement: payable(0x5b31FaF42470D84B20659354A4bE7cC603C6e640),
        technicalSupport: payable(0xBaAFeeb00d5B02F24243540bdB12DaE2C097fFEB)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    
    uint256 private _maxTxAmount = (_tTotal * 2) / 100;
    uint256 private _maxWalletSize = (_tTotal * 4) / 100;

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

    LotteryArray lottery;
    bool public lotteryRunning;
    uint256 public minHoldForLotteryUI = 5 * 10**6;
    uint256 private minimumHoldForLottery = minHoldForLotteryUI * 10**_decimals; // 5 Million tokens needed to enter lottery.
    uint256 public minETHBuy = 19*10**16;

    bool public piEnabled = true;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    constructor () payable {
        _rOwned[msg.sender] = _rTotal;
        emit Transfer(address(0), msg.sender, _tTotal);

        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } 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;
        _isExcludedFromLimits[_taxWallets.development] = true;
        _isExcludedFromLimits[_taxWallets.gameAdvancement] = 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) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        protections.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        protections.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return protections.isBlacklisted(account);
    }

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

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

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

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

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

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

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

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

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

    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 setContractSwapEnabled(bool swapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

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

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

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

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

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

        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

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

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

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        uint256 modBalance = (amtBalance * ratios.mod) / ratios.totalSwap;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 gameAdvancementBalance = (amtBalance * ratios.gameAdvancement) / ratios.totalSwap;
        uint256 technicalSupportBalance = (amtBalance * ratios.technicalSupport) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (modBalance + developmentBalance + technicalSupportBalance + gameAdvancementBalance);
        bool success;
        if (ratios.marketing > 0) {
            sendValue(_taxWallets.marketing, marketingBalance);
        }
        if (ratios.mod > 0) {
            sendValue(_taxWallets.mod, modBalance);
        }
        if (ratios.development > 0) {
            sendValue(_taxWallets.development, developmentBalance);
        }
        if (ratios.gameAdvancement > 0) {
            sendValue(_taxWallets.gameAdvancement, gameAdvancementBalance);
        }
        if (ratios.technicalSupport > 0) {
            sendValue(_taxWallets.technicalSupport, technicalSupportBalance);
        }
    }

    function sendValue(address payable account, uint256 amount) internal {
        bool success;
        (success,) = account.call{value: amount, gas: 35000}("");
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[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;
        allowedPresaleExclusion = false;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 25) / 10000;
    }

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

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function setExcludedFromReward(address account, bool enabled) public onlyOwner {
        if (enabled) {
            require(!_isExcluded[account], "Account is already excluded.");
            if(_rOwned[account] > 0) {
                _tOwned[account] = tokenFromReflection(_rOwned[account]);
            }
            _isExcluded[account] = true;
            if(account != lpPair){
                _excluded.push(account);
            }
        } else if (!enabled) {
            require(_isExcluded[account], "Account is already included.");
            if (account == lpPair) {
                _rOwned[account] = _tOwned[account] * _getRate();
                _tOwned[account] = 0;
                _isExcluded[account] = false;
            } else if(_excluded.length == 1) {
                _rOwned[account] = _tOwned[account] * _getRate();
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
            } else {
                for (uint256 i = 0; i < _excluded.length; i++) {
                    if (_excluded[i] == account) {
                        _excluded[i] = _excluded[_excluded.length - 1];
                        _tOwned[account] = 0;
                        _rOwned[account] = _tOwned[account] * _getRate();
                        _isExcluded[account] = false;
                        _excluded.pop();
                        break;
                    }
                }
            }
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount / currentRate;
    }

    struct ExtraValues {
        uint256 tTransferAmount;
        uint256 tFee;
        uint256 tSwap;
        uint256 tBurn;

        uint256 rTransferAmount;
        uint256 rAmount;
        uint256 rFee;

        uint256 currentRate;
    }

    function finalizeTransfer(address from, address to, uint256 tAmount, bool buy, bool sell, bool other) internal returns (bool) {
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        ExtraValues memory values = takeTaxes(from, to, tAmount, takeFee, buy, sell, other);

        _rOwned[from] = _rOwned[from] - values.rAmount;
        _rOwned[to] = _rOwned[to] + values.rTransferAmount;

        if (_isExcluded[from]) {
            _tOwned[from] = _tOwned[from] - tAmount;
        }
        if (_isExcluded[to]) {
            _tOwned[to] = _tOwned[to] + values.tTransferAmount;  
        }

        if (values.rFee > 0 || values.tFee > 0) {
            _rTotal -= values.rFee;
        }

        if (lotteryRunning) {
            if (buy) {
                if (balanceOf(to) > minimumHoldForLottery && !_isExcludedFromFees[to]) {
                    address[] memory path = new address[](2);
                    path[0] = address(this);
                    path[1] = dexRouter.WETH();
                    uint256 ethBalance = dexRouter.getAmountsOut(tAmount, path)[1];
                    if (ethBalance >= minETHBuy) {
                        lottery.addUserToLottery(to);
                    }
                }
            }
        }
        emit Transfer(from, to, values.tTransferAmount);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }

        return true;
    }

    uint256 public _currentFee;
    uint256 public _bonus;

    function takeTaxes(address from, address to, uint256 tAmount, bool takeFee, bool buy, bool sell, bool other) internal returns (ExtraValues memory) {
        ExtraValues memory values;
        Ratios memory ratios = _ratios;
        values.currentRate = _getRate();

        values.rAmount = tAmount * values.currentRate;

        if (_hasLimits(from, to)) {
            bool checked;
            try protections.checkUser(from, to, tAmount) returns (bool check) {
                checked = check;
            } catch {
                revert();
            }

            if(!checked) {
                revert();
            }
        }

        if(takeFee) {
            uint256 currentFee;

            if (buy) {
                currentFee = _taxRates.buyFee;
            } else if (sell) {
                currentFee = _taxRates.sellFee;
                if (piEnabled) {
                    uint256 balance = balanceOf(lpPair);
                    if (tAmount > balance / 100) {
                        _bonus = (tAmount * (10**4)) / balance;
                        currentFee += (tAmount * (10**4)) / balance;
                        if (currentFee > 3000) {
                            currentFee = 3000;
                        }
                        _currentFee = currentFee;
                    }
                }
            } else {
                currentFee = _taxRates.transferFee;
            }

            uint256 feeAmount = (tAmount * currentFee) / masterTaxDivisor;
            uint256 total = ratios.totalSwap + ratios.reflection + ratios.burn;
            values.tFee = (feeAmount * ratios.reflection) / total;
            values.tBurn = (feeAmount * ratios.burn) / total;
            values.tSwap = feeAmount - (values.tFee + values.tBurn);
            values.tTransferAmount = tAmount - (values.tFee + values.tSwap + values.tBurn);

            values.rFee = values.tFee * values.currentRate;
        } else {
            values.tFee = 0;
            values.tSwap = 0;
            values.tBurn = 0;
            values.tTransferAmount = tAmount;

            values.rFee = 0;
        }

        if (values.tSwap > 0) {
            _rOwned[address(this)] += values.tSwap * values.currentRate;
            if(_isExcluded[address(this)]) {
                _tOwned[address(this)] += values.tSwap;
            }
            emit Transfer(from, address(this), values.tSwap);
        }

        if (values.tBurn > 0) {
            _rOwned[DEAD] += values.tBurn * values.currentRate;
            if(_isExcluded[DEAD]) {
                _tOwned[DEAD] += values.tBurn;
            }
            emit Transfer(from, DEAD, values.tBurn);
        }

        values.rTransferAmount = values.rAmount - (values.rFee + (values.tSwap * values.currentRate) + (values.tBurn * values.currentRate));
        return values;
    }

    function _getRate() internal view returns(uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if(_isExcluded[lpPair]) {
            if (_rOwned[lpPair] > rSupply || _tOwned[lpPair] > tSupply) return _rTotal / _tTotal;
            rSupply -= _rOwned[lpPair];
            tSupply -= _tOwned[lpPair];
        }
        if(_excluded.length > 0) {
            for (uint8 i = 0; i < _excluded.length; i++) {
                if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return _rTotal / _tTotal;
                rSupply = rSupply - _rOwned[_excluded[i]];
                tSupply = tSupply - _tOwned[_excluded[i]];
            }
        }
        if (rSupply < _rTotal / _tTotal) return _rTotal / _tTotal;
        return rSupply / tSupply;
    }

//============================Lottery====================================
    function startNewLottery(uint256 endTime) external onlyOwner {
        require(!lotteryRunning, "Lottery must be offline.");
        require(endTime > block.timestamp, "Cannot end in the past.");
        lottery = new LotteryArray(endTime, address(this));
        lotteryRunning = true;
    }

    function isUserInLottery(address account) public view returns (string memory) {
        require(lotteryRunning, "Lottery offline!");
        bool userBalance = (balanceOf(account) >= minimumHoldForLottery);
        return lottery.checkUser(account, userBalance);
    }

    function getLotteryUserLength() external view returns (uint256) {
        require(lotteryRunning, "Lottery offline!");
        return lottery.getLotteryUserLength();
    }

    function finishAndCloseLottery() external onlyOwner {
        require(lotteryRunning, "Lottery offline!");
        lottery.finishAndCloseLottery(payable(_owner));
        lotteryRunning = false;
    }

    function setMinimumHoldForLottery(uint256 minHoldPercent, uint256 divisor) external onlyOwner {
        require(!lotteryRunning, "Lottery must be offline.");
        minimumHoldForLottery = (_tTotal * minHoldPercent) / divisor;
        minHoldForLotteryUI = (startingSupply * minHoldPercent) / divisor;
    }

    function getRemainingLotteryTime() public view returns (uint256) {
        require(lotteryRunning, "Lottery offline!");
        return lottery.getRemainingLotteryTime();
    }

    function getUserAtIndex(uint256 index) public view returns (address, bool) {
        address account = lottery.checkUserAtIndex(index);
        bool returned;
        if (balanceOf(account) >= minimumHoldForLottery){
            returned = true;
        } else {
            returned = false;
        }
        return (account, returned);
    }

    function setMinETHBuyNeeded(uint256 amount, uint256 divisor) external onlyOwner {
        require(!lotteryRunning, "Lottery must be offline.");
        minETHBuy = amount * 10**divisor;
    }

    function setPriceImpactEnabled(bool enabled) external onlyOwner {
        piEnabled = enabled;
    }
}

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":"_bonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_currentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"reflection","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"mod","type":"uint16"},{"internalType":"uint16","name":"gameAdvancement","type":"uint16"},{"internalType":"uint16","name":"technicalSupport","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"mod","type":"address"},{"internalType":"address payable","name":"gameAdvancement","type":"address"},{"internalType":"address payable","name":"technicalSupport","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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finishAndCloseLottery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getLotteryUserLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRemainingLotteryTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getUserAtIndex","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isUserInLottery","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryRunning","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minETHBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldForLotteryUI","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":"piEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"}],"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":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromReward","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":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMinETHBuyNeeded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minHoldPercent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMinimumHoldForLottery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setPriceImpactEnabled","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":"reflection","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"mod","type":"uint16"},{"internalType":"uint16","name":"gameAdvancement","type":"uint16"},{"internalType":"uint16","name":"technicalSupport","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"mod","type":"address"},{"internalType":"address payable","name":"gameAdvancement","type":"address"},{"internalType":"address payable","name":"technicalSupport","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"startNewLottery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"}]

60806040526000600355600c805460ff19166001179055620000246009600a6200082d565b620000359064e8d4a5100062000845565b620000439060001962000875565b62000051906000196200088c565b600d55604080516060808201835261012c808352602080840182905292840152600e805465ffffffffffff191665012c012c012c179055825161012081018452610190815260c8818401819052610258828601526064828401819052608080840183905260a080850184905260c085019390935260e0840182905261057861010090940193909352600f80546001600160901b031916710578006400c800c800c80064025800c801901790558551918201865273d60b49cea6e10d9e54dc1f90c7bc55ba5590409780835273e4712e1d5d2b2594cb9887b5f07b17527f19d53395830186905273734336cc4c0a16ac7c2ea206e3db65af6b5803c1968301879052735b31faf42470d84b20659354a4be7cc603c6e64094830185905273baafeeb00d5b02f24243540bdb12dae2c097ffeb92909301829052601280546001600160a01b03199081169094179055601380548416909517909455601480548316909517909455601580548216909217909155601680549091169092179091556017805461ff0019169055620001e86009600a6200082d565b620001f99064e8d4a5100062000845565b6200020690600262000845565b620002129190620008a2565b601a556064620002256009600a6200082d565b620002369064e8d4a5100062000845565b6200024390600462000845565b6200024f9190620008a2565b601b55601c805461ffff19169055624c4b40601e55620002726009600a6200082d565b601e5462000281919062000845565b601f556702a303fe4b53000060209081556021805460ff19166001179055600d54336000818152928390526040832091909155907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002e46009600a6200082d565b620002f59064e8d4a5100062000845565b60405190815260200160405180910390a360218054610100600160a81b0319163361010002179055466038036200035257601080546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620003c1565b466061036200038757601080546001600160a01b03191673d99d1c33f9fc3444f8101754abc46c52416550d1179055620003c1565b46600103620003bc57601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620003c1565b600080fd5b601060009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000415573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043b9190620008b9565b6001600160a01b031663c9c65396601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200049d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c39190620008b9565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000510573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005369190620008b9565b601180546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff191660011790556021546010546200058c92610100909204821691166000196200065c565b601054620005a89030906001600160a01b03166000196200065c565b602180546001600160a01b036101009182900481166000908152600760209081526040808320805460ff19908116600190811790925530855282852080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d805482168317905596549590950484168352600582528083208054871686179055601354841683526008909152808220805486168517905560155490921681522080549092161790556200091b565b6001600160a01b0383166200068e5760405162461bcd60e51b81526004016200068590620008e4565b60405180910390fd5b6001600160a01b038216620006b75760405162461bcd60e51b81526004016200068590620008e4565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200076f57816000190482111562000753576200075362000718565b808516156200076157918102915b93841c939080029062000733565b509250929050565b600082620007885750600162000827565b81620007975750600062000827565b8160018114620007b05760028114620007bb57620007db565b600191505062000827565b60ff841115620007cf57620007cf62000718565b50506001821b62000827565b5060208310610133831016604e8410600b841016171562000800575081810a62000827565b6200080c83836200072e565b806000190482111562000823576200082362000718565b0290505b92915050565b60006200083e60ff84168362000777565b9392505050565b808202811582820484141762000827576200082762000718565b634e487b7160e01b600052601260045260246000fd5b6000826200088757620008876200085f565b500690565b8181038181111562000827576200082762000718565b600082620008b457620008b46200085f565b500490565b600060208284031215620008cc57600080fd5b81516001600160a01b03811681146200083e57600080fd5b60208082526013908201527f45524332303a205a65726f204164647265737300000000000000000000000000604082015260600190565b615ee2806200092b6000396000f3fe608060405260043610620003545760003560e01c806303fd2a4514620003615780630445b6671462000391578063044df72614620003b857806305bbedb614620003df578063069d955f146200040457806306fdde03146200045c5780630758d924146200049c578063095ea7b314620004be5780630dcbcf1c14620004f45780630fa604e4146200053157806313b4a7f4146200054957806313e46192146200056e57806317300a14146200059357806318160ddd14620005b65780631ee5615314620005ce57806323b872dd14620005f35780632600395714620006185780632610eaca146200063d5780632b28fc7a14620006625780632d838119146200067a5780632e8fa821146200069f578063313ce56714620006b757806332cde66414620006d557806333251a0b14620006fa57806336fddb04146200071f5780633f3cf56c1462000744578063452ed4f114620007695780634a966bf9146200078b5780634ada218b14620007a35780634edf7a9514620007bf5780634fb2e45d14620007e45780634fbee193146200080957806350a8e0161462000846578063590ffdce14620008675780635c24b074146200088c5780635cce86cd14620008b15780636ebd007814620008ee57806370a082311462000906578063715018a6146200092b57806380c581d114620009435780638252879114620009685780638751f188146200098d57806388f8202014620009a5578063893d20e814620009e25780638a8c523c1462000a07578063913edd101462000a1f57806395a4db1c1462000a3757806395d89b411462000a5c5780639a3c1dfa1462000a8e578063a9059cbb1462000ab3578063acb4cf7e1462000ad8578063b1b08f711462000662578063b3d514fb1462000662578063bb145cbd1462000afd578063c043879a1462000b15578063cab5ebea1462000b31578063cabe80cb1462000b56578063cf8477061462000b6e578063d724b3ff1462000c32578063dd62ed3e1462000c4a578063e8fc733e1462000c94578063eec2744e1462000cac578063f20fa9441462000cd1578063f94aa1b41462000cf6578063fb78680d1462000d6c578063fdb78c0e1462000d91578063fe575a871462000db2578063feadde9c1462000dd7578063ffcc7bbf1462000dfc57600080fd5b366200035c57005b600080fd5b3480156200036e57600080fd5b506200037961dead81565b60405162000388919062004cac565b60405180910390f35b3480156200039e57600080fd5b50620003a960185481565b60405190815260200162000388565b348015620003c557600080fd5b50620003dd620003d736600462004cd2565b62000e31565b005b348015620003ec57600080fd5b50620003dd620003fe36600462004e13565b62000edf565b3480156200041157600080fd5b50600e54620004369061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff9485168152928416602084015292169181019190915260600162000388565b3480156200046957600080fd5b5060408051808201909152600b81526a22bb32b932b9ba21b7b4b760a91b60208201525b60405162000388919062004e85565b348015620004a957600080fd5b5060105462000379906001600160a01b031681565b348015620004cb57600080fd5b50620004e3620004dd36600462004eba565b62000f4a565b604051901515815260200162000388565b3480156200050157600080fd5b50620004e36200051336600462004ee9565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156200053e57600080fd5b50620003a962000f63565b3480156200055657600080fd5b50620003dd6200056836600462004f09565b62000f87565b3480156200057b57600080fd5b50620003dd6200058d36600462004f3c565b6200111b565b348015620005a057600080fd5b50601d54620004e390600160a01b900460ff1681565b348015620005c357600080fd5b50620003a9620015b1565b348015620005db57600080fd5b50620003dd620005ed36600462004f5d565b620015d2565b3480156200060057600080fd5b50620004e36200061236600462004f80565b62001651565b3480156200062557600080fd5b50620003dd6200063736600462004f5d565b620016ce565b3480156200064a57600080fd5b50620003dd6200065c36600462004fc6565b6200180f565b3480156200066f57600080fd5b50620003a96107d081565b3480156200068757600080fd5b50620003a9620006993660046200508c565b62001955565b348015620006ac57600080fd5b50620003a960195481565b348015620006c457600080fd5b506040516009815260200162000388565b348015620006e257600080fd5b50620003dd620006f4366004620050be565b620019df565b3480156200070757600080fd5b50620003dd6200071936600462004ee9565b62001ac6565b3480156200072c57600080fd5b50620003dd6200073e36600462004f3c565b62001b66565b3480156200075157600080fd5b50620003dd6200076336600462004f5d565b62001bc3565b3480156200077657600080fd5b5060115462000379906001600160a01b031681565b3480156200079857600080fd5b50620003dd62001d0c565b348015620007b057600080fd5b50601c54620004e39060ff1681565b348015620007cc57600080fd5b50620003dd620007de3660046200508c565b62001dea565b348015620007f157600080fd5b50620003dd6200080336600462004ee9565b62001eff565b3480156200081657600080fd5b50620004e36200082836600462004ee9565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156200085357600080fd5b50601c54620004e390610100900460ff1681565b3480156200087457600080fd5b50620003dd6200088636600462004f3c565b62002046565b3480156200089957600080fd5b50620003dd620008ab36600462004ee9565b620020a3565b348015620008be57600080fd5b50620004e3620008d036600462004ee9565b6001600160a01b031660009081526008602052604090205460ff1690565b348015620008fb57600080fd5b50620003a962002160565b3480156200091357600080fd5b50620003a96200092536600462004ee9565b6200217f565b3480156200093857600080fd5b50620003dd620021e1565b3480156200095057600080fd5b50620003dd6200096236600462004f3c565b62002273565b3480156200097557600080fd5b50620003dd6200098736600462005108565b620023bf565b3480156200099a57600080fd5b50620003a960205481565b348015620009b257600080fd5b50620004e3620009c436600462004ee9565b6001600160a01b031660009081526009602052604090205460ff1690565b348015620009ef57600080fd5b5060215461010090046001600160a01b031662000379565b34801562000a1457600080fd5b50620003dd6200244d565b34801562000a2c57600080fd5b50620003a960225481565b34801562000a4457600080fd5b50620003dd62000a5636600462005184565b62002662565b34801562000a6957600080fd5b506040805180820190915260078152661222ab21b7b4b760c91b60208201526200048d565b34801562000a9b57600080fd5b50620003dd62000aad3660046200522c565b620028b4565b34801562000ac057600080fd5b50620004e362000ad236600462004eba565b620028f9565b34801562000ae557600080fd5b506200048d62000af736600462004ee9565b62002912565b34801562000b0a57600080fd5b50620003a9620029d2565b34801562000b2257600080fd5b50602154620004e39060ff1681565b34801562000b3e57600080fd5b50620003dd62000b503660046200522c565b62002a7b565b34801562000b6357600080fd5b50620003a962002af1565b34801562000b7b57600080fd5b50600f5462000bdc9061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b8104821691600160601b8204811691600160701b8104821691600160801b9091041689565b6040805161ffff9a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c0840152831660e08301529091166101008201526101200162000388565b34801562000c3f57600080fd5b50620003a9601e5481565b34801562000c5757600080fd5b50620003a962000c6936600462004f09565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801562000ca157600080fd5b50620003a960235481565b34801562000cb957600080fd5b50620003dd62000ccb36600462004f3c565b62002b74565b34801562000cde57600080fd5b50620003dd62000cf036600462004f5d565b62002bdf565b34801562000d0357600080fd5b5060125460135460145460155460165462000d31946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a00162000388565b34801562000d7957600080fd5b50620003dd62000d8b3660046200524c565b62002c9f565b34801562000d9e57600080fd5b50601754620004e390610100900460ff1681565b34801562000dbf57600080fd5b50620004e362000dd136600462004ee9565b62002ee7565b34801562000de457600080fd5b50620003dd62000df636600462004f3c565b62002f64565b34801562000e0957600080fd5b5062000e2162000e1b3660046200508c565b62002fc1565b604051620003889291906200527f565b60215461010090046001600160a01b0316331462000e6c5760405162461bcd60e51b815260040162000e63906200529a565b60405180910390fd5b601c5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b15801562000ec257600080fd5b505af115801562000ed7573d6000803e3d6000fd5b505050505050565b60215461010090046001600160a01b0316331462000f115760405162461bcd60e51b815260040162000e63906200529a565b601c546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb69062000ea790859085906004016200530b565b600062000f5933848462003065565b5060015b92915050565b600062000f736009600a62005444565b601b5462000f82919062005455565b905090565b60215461010090046001600160a01b0316331462000fb95760405162461bcd60e51b815260040162000e63906200529a565b600c5460ff1662000fc957600080fd5b6001600160a01b038216301480159062000fec57506001600160a01b0381163014155b620010285760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b604482015260640162000e63565b806001600160a01b0316826001600160a01b0316036200109a576001600160a01b03811660009081526005602090815260408083208054600160ff199182168117909255600b90935292208054909116821790556200108990829062002046565b620010968160016200111b565b5050565b6001600160a01b0382811660008181526005602090815260408083208054600160ff1991821681179092559587168085528285208054881683179055948452600b9092528083208054861683179055928252919020805490921681179091556200110690839062002046565b6200111381600162002046565b620010898260015b60215461010090046001600160a01b031633146200114d5760405162461bcd60e51b815260040162000e63906200529a565b80156200129a576001600160a01b03821660009081526009602052604090205460ff1615620011be5760405162461bcd60e51b815260206004820152601c60248201527b20b1b1b7bab73a1034b99030b63932b0b23c9032bc31b63ab232b21760211b604482015260640162000e63565b6001600160a01b038216600090815260208190526040902054156200121b576001600160a01b038216600090815260208190526040902054620012019062001955565b6001600160a01b0383166000908152600160205260409020555b6001600160a01b038083166000818152600960205260409020805460ff19166001179055601154909116146200109657600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b0384161790555050565b8062001096576001600160a01b03821660009081526009602052604090205460ff16620013095760405162461bcd60e51b815260206004820152601c60248201527b20b1b1b7bab73a1034b99030b63932b0b23c9034b731b63ab232b21760211b604482015260640162000e63565b6011546001600160a01b039081169083160362001387576200132a62003118565b6001600160a01b0383166000908152600160205260409020546200134f919062005478565b6001600160a01b03831660009081526020818152604080832093909355600181528282208290556009905220805460ff191690555050565b600a546001036200142f576200139c62003118565b6001600160a01b038316600090815260016020526040902054620013c1919062005478565b6001600160a01b03831660009081526020818152604080832093909355600181528282208290556009905220805460ff19169055600a80548062001409576200140962005492565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b60005b600a54811015620015ac57826001600160a01b0316600a82815481106200145d576200145d620054a8565b6000918252602090912001546001600160a01b0316036200159757600a80546200148a90600190620054be565b815481106200149d576200149d620054a8565b600091825260209091200154600a80546001600160a01b039092169183908110620014cc57620014cc620054a8565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600190915260408120556200150d62003118565b6001600160a01b03841660009081526001602052604090205462001532919062005478565b6001600160a01b038416600090815260208181526040808320939093556009905220805460ff19169055600a80548062001570576200157062005492565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b80620015a381620054d4565b91505062001432565b505050565b6000620015c16009600a62005444565b62000f829064e8d4a5100062005478565b60215461010090046001600160a01b03163314620016045760405162461bcd60e51b815260040162000e63906200529a565b601d54600160a01b900460ff1615620016315760405162461bcd60e51b815260040162000e6390620054f0565b6200163e81600a62005522565b6200164a908362005478565b6020555050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914620016b9576001600160a01b038416600090815260046020908152604080832033845290915281208054849290620016b3908490620054be565b90915550505b620016c684848462003421565b949350505050565b60215461010090046001600160a01b03163314620017005760405162461bcd60e51b815260040162000e63906200529a565b6064620017106009600a62005444565b620017219064e8d4a5100062005478565b6200172d919062005455565b81836200173d6009600a62005444565b6200174e9064e8d4a5100062005478565b6200175a919062005478565b62001766919062005455565b1015620017cf5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b606482015260840162000e63565b8082620017df6009600a62005444565b620017f09064e8d4a5100062005478565b620017fc919062005478565b62001808919062005455565b601b555050565b60215461010090046001600160a01b03163314620018415760405162461bcd60e51b815260040162000e63906200529a565b80518251146200188c5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b604482015260640162000e63565b60005b82518160ff161015620015ac57818160ff1681518110620018b457620018b4620054a8565b6020026020010151620018c7336200217f565b1015620018d357600080fd5b6200193f33848360ff1681518110620018f057620018f0620054a8565b60200260200101516009600a62001908919062005444565b858560ff1681518110620019205762001920620054a8565b602002602001015162001934919062005478565b600080600162003901565b50806200194c8162005530565b9150506200188f565b6000600d54821115620019be5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000e63565b6000620019ca62003118565b9050620019d8818462005455565b9392505050565b60215461010090046001600160a01b0316331462001a115760405162461bcd60e51b815260040162000e63906200529a565b6107d08361ffff161115801562001a2e57506107d08261ffff1611155b801562001a4157506107d08161ffff1611155b62001a895760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba1032bc31b2b2b21036b0bc34b6bab6b99760491b604482015260640162000e63565b600e805461ffff94851663ffffffff199091161762010000938516939093029290921761ffff60201b1916600160201b9190931602919091179055565b60215461010090046001600160a01b0316331462001af85760405162461bcd60e51b815260040162000e63906200529a565b601c546040516333251a0b60e01b8152620100009091046001600160a01b0316906333251a0b9062001b2f90849060040162004cac565b600060405180830381600087803b15801562001b4a57600080fd5b505af115801562001b5f573d6000803e3d6000fd5b5050505050565b60215461010090046001600160a01b0316331462001b985760405162461bcd60e51b815260040162000e63906200529a565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b60215461010090046001600160a01b0316331462001bf55760405162461bcd60e51b815260040162000e63906200529a565b6103e862001c066009600a62005444565b62001c179064e8d4a5100062005478565b62001c23919062005455565b818362001c336009600a62005444565b62001c449064e8d4a5100062005478565b62001c50919062005478565b62001c5c919062005455565b101562001ccc5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f766044820152763290181718929037b3103a37ba30b61039bab838363c9760491b606482015260840162000e63565b808262001cdc6009600a62005444565b62001ced9064e8d4a5100062005478565b62001cf9919062005478565b62001d05919062005455565b601a555050565b60215461010090046001600160a01b0316331462001d3e5760405162461bcd60e51b815260040162000e63906200529a565b601d54600160a01b900460ff1662001d6a5760405162461bcd60e51b815260040162000e639062005552565b601d54602154604051631356520760e11b81526001600160a01b03928316926326aca40e9262001da7926101009091049091169060040162004cac565b600060405180830381600087803b15801562001dc257600080fd5b505af115801562001dd7573d6000803e3d6000fd5b5050601d805460ff60a01b191690555050565b60215461010090046001600160a01b0316331462001e1c5760405162461bcd60e51b815260040162000e63906200529a565b601d54600160a01b900460ff161562001e495760405162461bcd60e51b815260040162000e6390620054f0565b42811162001e945760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba1032b7321034b7103a3432903830b9ba1760491b604482015260640162000e63565b803060405162001ea49062004c59565b9182526001600160a01b03166020820152604001604051809103906000f08015801562001ed5573d6000803e3d6000fd5b50601d80546001600160a81b0319166001600160a01b039290921691909117600160a01b17905550565b60215461010090046001600160a01b0316331462001f315760405162461bcd60e51b815260040162000e63906200529a565b6001600160a01b03811662001f5a5760405162461bcd60e51b815260040162000e63906200557c565b61deac196001600160a01b0382160162001f885760405162461bcd60e51b815260040162000e63906200557c565b60215462001fa69061010090046001600160a01b0316600062002046565b62001fb381600162002046565b60215460009062001fd29061010090046001600160a01b03166200217f565b111562001ffd5760215462001ffb9061010090046001600160a01b03168262001934826200217f565b505b602180546001600160a01b03838116610100818102610100600160a81b0319851617909455604051939092041691829060008051602062005e6d83398151915290600090a35050565b60215461010090046001600160a01b03163314620020785760405162461bcd60e51b815260040162000e63906200529a565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60215461010090046001600160a01b03163314620020d55760405162461bcd60e51b815260040162000e63906200529a565b601c54610100900460ff1615620020eb57600080fd5b306001600160a01b03821603620021365760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b604482015260640162000e63565b601c80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000620021706009600a62005444565b601a5462000f82919062005455565b6001600160a01b03811660009081526009602052604081205460ff1615620021bd57506001600160a01b031660009081526001602052604090205490565b6001600160a01b03821660009081526020819052604090205462000f5d9062001955565b60215461010090046001600160a01b03163314620022135760405162461bcd60e51b815260040162000e63906200529a565b602154620022319061010090046001600160a01b0316600062002046565b60218054610100600160a81b031981169091556040516101009091046001600160a01b031690600090829060008051602062005e6d833981519152908390a350565b60215461010090046001600160a01b03163314620022a55760405162461bcd60e51b815260040162000e63906200529a565b80151560000362002303576001600160a01b03808316600090815260026020526040808220805460ff19169055601c5490516380c581d160e01b815262010000909104909216916380c581d19162000ea7918691906004016200527f565b6003541562002362576203f48060035442620023209190620054be565b11620023625760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b604482015260640162000e63565b6001600160a01b0380831660009081526002602052604090819020805460ff1916600190811790915542600355601c5491516380c581d160e01b815262010000909204909216916380c581d19162000ea79186916004016200527f565b60215461010090046001600160a01b03163314620023f15760405162461bcd60e51b815260040162000e63906200529a565b601680546001600160a01b03199081166001600160a01b03938416179091556012805482169683169690961790955560148054861693821693909317909255601580548516918316919091179055601380549093169116179055565b60215461010090046001600160a01b031633146200247f5760405162461bcd60e51b815260040162000e63906200529a565b601c5460ff1615620024cf5760405162461bcd60e51b815260206004820152601860248201527754726164696e6720616c726561647920656e61626c65642160401b604482015260640162000e63565b601c54610100900460ff16620025235760405162461bcd60e51b81526020600482015260186024820152772634b8bab4b234ba3c9036bab9ba1031329030b23232b21760411b604482015260640162000e63565b601c546201000090046001600160a01b03166200255457601c805462010000600160b01b0319163062010000021790555b601c54601154604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff431660248201526001600160401b034216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015620025c657600080fd5b505af1925050508015620025d8575060015b50601c805460ff19908116600117909155600c80549091169055601154612710906200260d906001600160a01b03166200217f565b6200261a90600a62005478565b62002626919062005455565b6018556011546127109062002644906001600160a01b03166200217f565b6200265190601962005478565b6200265d919062005455565b601955565b60215461010090046001600160a01b03163314620026945760405162461bcd60e51b815260040162000e63906200529a565b81600f600001600e6101000a81548161ffff021916908361ffff16021790555087600f60000160006101000a81548161ffff021916908361ffff16021790555086600f60000160046101000a81548161ffff021916908361ffff16021790555085600f60000160066101000a81548161ffff021916908361ffff16021790555083600f600001600a6101000a81548161ffff021916908361ffff16021790555082600f600001600c6101000a81548161ffff021916908361ffff16021790555084600f60000160086101000a81548161ffff021916908361ffff16021790555080600f60000160026101000a81548161ffff021916908361ffff16021790555085828486888b620027a69190620055d9565b620027b29190620055d9565b620027be9190620055d9565b620027ca9190620055d9565b620027d69190620055d9565b600f805461ffff60801b1916600160801b61ffff93841602179055600e546000916200280c9162010000810482169116620055d9565b600f5461ffff91821692508291620100008204811691620028399181811691600160801b900416620055d9565b620028459190620055d9565b61ffff161115620028a95760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b606482015260840162000e63565b505050505050505050565b60215461010090046001600160a01b03163314620028e65760405162461bcd60e51b815260040162000e63906200529a565b6021805460ff1916911515919091179055565b60006200290833848462003421565b5060019392505050565b601d54606090600160a01b900460ff16620029415760405162461bcd60e51b815260040162000e639062005552565b6000601f5462002951846200217f565b601d546040516321d1b49560e11b8152929091101592506001600160a01b0316906343a3692a906200298a90869085906004016200527f565b600060405180830381865afa158015620029a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019d89190810190620055fe565b601d54600090600160a01b900460ff1662002a015760405162461bcd60e51b815260040162000e639062005552565b601d60009054906101000a90046001600160a01b03166001600160a01b031663bb145cbd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002a55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f8291906200569c565b60215461010090046001600160a01b0316331462002aad5760405162461bcd60e51b815260040162000e63906200529a565b601780548215156101000261ff001990911617905560405160008051602062005e4d8339815191529062002ae690831515815260200190565b60405180910390a150565b601d54600090600160a01b900460ff1662002b205760405162461bcd60e51b815260040162000e639062005552565b601d60009054906101000a90046001600160a01b03166001600160a01b031663cabe80cb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002a55573d6000803e3d6000fd5b60215461010090046001600160a01b0316331462002ba65760405162461bcd60e51b815260040162000e63906200529a565b601c546040516377613a2760e11b8152620100009091046001600160a01b03169063eec2744e9062000ea790859085906004016200527f565b60215461010090046001600160a01b0316331462002c115760405162461bcd60e51b815260040162000e63906200529a565b601d54600160a01b900460ff161562002c3e5760405162461bcd60e51b815260040162000e6390620054f0565b808262002c4e6009600a62005444565b62002c5f9064e8d4a5100062005478565b62002c6b919062005478565b62002c77919062005455565b601f558062002c8c8364e8d4a5100062005478565b62002c98919062005455565b601e555050565b60215461010090046001600160a01b0316331462002cd15760405162461bcd60e51b815260040162000e63906200529a565b828462002ce16009600a62005444565b62002cf29064e8d4a5100062005478565b62002cfe919062005478565b62002d0a919062005455565b601855808262002d1d6009600a62005444565b62002d2e9064e8d4a5100062005478565b62002d3a919062005478565b62002d46919062005455565b6019819055601854111562002da85760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b606482015260840162000e63565b6011546127109062002dc3906001600160a01b03166200217f565b62002dd090609662005478565b62002ddc919062005455565b601954111562002e3b5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b606482015260840162000e63565b620f424062002e4d6009600a62005444565b62002e5e9064e8d4a5100062005478565b62002e6a919062005455565b601954101562002e8e5760405162461bcd60e51b815260040162000e6390620056b6565b620f424062002ea06009600a62005444565b62002eb19064e8d4a5100062005478565b62002ebd919062005455565b601854101562002ee15760405162461bcd60e51b815260040162000e6390620056b6565b50505050565b601c5460405163fe575a8760e01b81526000916201000090046001600160a01b03169063fe575a879062002f2090859060040162004cac565b602060405180830381865afa15801562002f3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f5d919062005704565b60215461010090046001600160a01b0316331462002f965760405162461bcd60e51b815260040162000e63906200529a565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601d54604051630e3eb45360e31b815260048101839052600091829182916001600160a01b0316906371f5a29890602401602060405180830381865afa15801562003010573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003036919062005724565b90506000601f5462003048836200217f565b1062003057575060016200305b565b5060005b9094909350915050565b6001600160a01b0383166200308e5760405162461bcd60e51b815260040162000e639062005744565b6001600160a01b038216620030b75760405162461bcd60e51b815260040162000e639062005744565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600d54600090816200312d6009600a62005444565b6200313e9064e8d4a5100062005478565b6011546001600160a01b031660009081526009602052604090205490915060ff161562003236576011546001600160a01b0316600090815260208190526040902054821080620031a757506011546001600160a01b031660009081526001602052604090205481105b15620031e257620031bb6009600a62005444565b620031cc9064e8d4a5100062005478565b600d54620031db919062005455565b9250505090565b6011546001600160a01b0316600090815260208190526040902054620032099083620054be565b6011546001600160a01b0316600090815260016020526040902054909250620032339082620054be565b90505b600a5415620033d15760005b600a5460ff82161015620033cf5782600080600a8460ff16815481106200326d576200326d620054a8565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180620032df57508160016000600a8460ff1681548110620032b857620032b8620054a8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200331b57620032f36009600a62005444565b620033049064e8d4a5100062005478565b600d5462003313919062005455565b935050505090565b600080600a8360ff1681548110620033375762003337620054a8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620033689084620054be565b925060016000600a8360ff1681548110620033875762003387620054a8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620033b89083620054be565b915080620033c68162005530565b91505062003242565b505b620033df6009600a62005444565b620033f09064e8d4a5100062005478565b600d54620033ff919062005455565b8210156200341557620031bb6009600a62005444565b620031db818362005455565b60006001600160a01b038416620034895760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000e63565b6001600160a01b038316620034ed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000e63565b60008211620035515760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840162000e63565b6001600160a01b0384166000908152600260205260408120548190819060ff1615620035815760019250620035b1565b6001600160a01b03861660009081526002602052604090205460ff1615620035ad5760019150620035b1565b5060015b620035bd878762003e59565b156200384057601c5460ff16620036c05780620036185760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b604482015260640162000e63565b6001600160a01b03871660009081526006602052604090205460ff161580156200365b57506001600160a01b03861660009081526006602052604090205460ff16155b15620036c05760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b606482015260840162000e63565b8280620036ca5750815b156200377e576001600160a01b03871660009081526008602052604090205460ff161580156200371357506001600160a01b03861660009081526008602052604090205460ff16155b156200377e57601a548511156200377e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840162000e63565b6010546001600160a01b038781169116148015906200379b575081155b1562003840576001600160a01b03861660009081526008602052604090205460ff166200384057601b5485620037d1886200217f565b620037dd919062005771565b1115620038405760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b606482015260840162000e63565b8115620038e65760175460ff16620038e657601754610100900460ff1680156200388357506001600160a01b0386166000908152600b602052604090205460ff16155b8015620038a957506001600160a01b0387166000908152600b602052604090205460ff16155b15620038e6576000620038bc306200217f565b90506018548110620038e457601954808210620038d7578091505b620038e28262003f45565b505b505b620038f687878786868662003901565b979650505050505050565b6001600160a01b03861660009081526007602052604081205460019060ff16806200394457506001600160a01b03871660009081526007602052604090205460ff165b156200394e575060005b600062003961898989858a8a8a620044ef565b60a08101516001600160a01b038b166000908152602081905260409020549192506200398d91620054be565b6001600160a01b03808b16600090815260208190526040808220939093556080840151918b1681529190912054620039c6919062005771565b6001600160a01b03808a1660009081526020818152604080832094909455918c1681526009909152205460ff161562003a39576001600160a01b03891660009081526001602052604090205462003a1f908890620054be565b6001600160a01b038a166000908152600160205260409020555b6001600160a01b03881660009081526009602052604090205460ff161562003a9c5780516001600160a01b03891660009081526001602052604090205462003a82919062005771565b6001600160a01b0389166000908152600160205260409020555b60008160c00151118062003ab4575060008160200151115b1562003ad8578060c00151600d600082825462003ad29190620054be565b90915550505b601d54600160a01b900460ff161562003d1c57851562003d1c57601f5462003b00896200217f565b11801562003b2757506001600160a01b03881660009081526007602052604090205460ff16155b1562003d1c57604080516002808252606082018352600092602083019080368337019050509050308160008151811062003b655762003b65620054a8565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562003bbf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003be5919062005724565b8160018151811062003bfb5762003bfb620054a8565b6001600160a01b03928316602091820292909201015260105460405163d06ca61f60e01b8152600092919091169063d06ca61f9062003c41908c90869060040162005787565b600060405180830381865afa15801562003c5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003c899190810190620057a2565b60018151811062003c9e5762003c9e620054a8565b60200260200101519050602054811062003d1957601d54604051630156a6a360e51b81526001600160a01b0390911690632ad4d4609062003ce4908d9060040162004cac565b600060405180830381600087803b15801562003cff57600080fd5b505af115801562003d14573d6000803e3d6000fd5b505050505b50505b876001600160a01b0316896001600160a01b031660008051602062005e8d833981519152836000015160405162003d5591815260200190565b60405180910390a3601c54610100900460ff1662003e4a5762003d79898962004ae1565b601c54610100900460ff1615801562003d99575062003d99898962003e59565b801562003dbf57506001600160a01b03891660009081526006602052604090205460ff16155b801562003de557506001600160a01b03881660009081526006602052604090205460ff16155b801562003df0575083155b1562003e4a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b606482015260840162000e63565b50600198975050505050505050565b6021546000906001600160a01b03848116610100909204161480159062003e9357506021546001600160a01b038381166101009092041614155b801562003eb0575060215461010090046001600160a01b03163214155b801562003ed657506001600160a01b03821660009081526005602052604090205460ff16155b801562003efc57506001600160a01b03831660009081526005602052604090205460ff16155b801562003f1457506001600160a01b03821661dead14155b801562003f2957506001600160a01b03821615155b8015620019d857506001600160a01b0383163014159392505050565b6017805460ff191660011790556040805161012081018252600f5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b8104831660a0830152600160601b8104831660c0830152600160701b8104831660e0830152600160801b9004909116610100820181905260000362003fec5750620044e2565b3060009081526004602090815260408083206010546001600160a01b031684529091529020546000191462004046573060009081526004602090815260408083206010546001600160a01b03168452909152902060001990555b6000600282610100015161ffff16836060015161ffff16856200406a919062005478565b62004076919062005455565b62004082919062005455565b90506000620040928285620054be565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110620040cf57620040cf620054a8565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562004129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200414f919062005724565b81600181518110620041655762004165620054a8565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac94790620041ad90859060009086903090429060040162005830565b600060405180830381600087803b158015620041c857600080fd5b505af1925050508015620041da575060015b620041e95750505050620044e2565b47600083620041f9868462005478565b62004205919062005455565b90508415620042ea5760105460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1935050505080156200429c575060408051601f3d908101601f1916820190925262004299918101906200586e565b60015b620042ad57505050505050620044e2565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b620042f68183620054be565b9150856060015186610100018181516200431191906200589d565b61ffff90811690915261010088015160a089015160009350908216916200433a91168562005478565b62004346919062005455565b9050600087610100015161ffff16886080015161ffff16856200436a919062005478565b62004376919062005455565b9050600088610100015161ffff168960c0015161ffff16866200439a919062005478565b620043a6919062005455565b9050600089610100015161ffff168a60e0015161ffff1687620043ca919062005478565b620043d6919062005455565b905060008282620043e8868862005771565b620043f4919062005771565b62004400919062005771565b6200440c9088620054be565b90506000808c6040015161ffff161115620044395760125462004439906001600160a01b03168362004c05565b60a08c015161ffff1615620044605760145462004460906001600160a01b03168762004c05565b60808c015161ffff1615620044875760135462004487906001600160a01b03168662004c05565b60c08c015161ffff1615620044ae57601554620044ae906001600160a01b03168562004c05565b60e08c015161ffff1615620044d557601654620044d5906001600160a01b03168462004c05565b5050505050505050505050505b506017805460ff19169055565b620044f962004c67565b6200450362004c67565b6040805161012081018252600f5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b8104831660a0830152600160601b8104831660c0830152600160701b8104831660e0830152600160801b90049091166101008201526200459662003118565b60e08301819052620045a9908962005478565b60a0830152620045ba8a8a62003e59565b156200465a57601c5460405163ecd07a5360e01b81526001600160a01b038c811660048301528b81166024830152604482018b9052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801562004641575060408051601f3d908101601f191682019092526200463e9181019062005704565b60015b6200464b57600080fd5b9050806200465857600080fd5b505b86156200485b5760008615620046785750600e5461ffff1662004742565b8515620047325750600e546021546201000090910461ffff169060ff16156200472c57601154600090620046b5906001600160a01b03166200217f565b9050620046c460648262005455565b8a11156200472a5780620046db8b61271062005478565b620046e7919062005455565b60235580620046f98b61271062005478565b62004705919062005455565b62004711908362005771565b9150610bb88211156200472457610bb891505b60228290555b505b62004742565b50600e54600160201b900461ffff165b600061271062004753838c62005478565b6200475f919062005455565b90506000836020015184600001518561010001516200477f9190620055d9565b6200478b9190620055d9565b845161ffff91821692508291620047a491168462005478565b620047b0919062005455565b6020808701919091528401518190620047ce9061ffff168462005478565b620047da919062005455565b606086018190526020860151620047f2919062005771565b620047fe9083620054be565b604086018190526060860151602087015190916200481c9162005771565b62004828919062005771565b62004834908c620054be565b855260e085015160208601516200484c919062005478565b60c0860152506200487b915050565b600060208301819052604083018190526060830181905288835260c08301525b6040820151156200494a578160e0015182604001516200489c919062005478565b3060009081526020819052604081208054909190620048bd90849062005771565b90915550503060009081526009602052604090205460ff1615620049085760408083015130600090815260016020529182208054919290916200490290849062005771565b90915550505b306001600160a01b03168a6001600160a01b031660008051602062005e8d83398151915284604001516040516200494191815260200190565b60405180910390a35b60608201511562004a75578160e0015182606001516200496b919062005478565b61dead600090815260208190527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf838054909190620049ab90849062005771565b909155505061dead60005260096020527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb1930750037855460ff161562004a3157606082015161dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d805490919062004a2b90849062005771565b90915550505b61dead6001600160a01b03168a6001600160a01b031660008051602062005e8d833981519152846060015160405162004a6c91815260200190565b60405180910390a35b8160e00151826060015162004a8b919062005478565b8260e00151836040015162004aa1919062005478565b8360c0015162004ab2919062005771565b62004abe919062005771565b8260a0015162004acf9190620054be565b60808301525098975050505050505050565b601c54610100900460ff161562004b475760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840162000e63565b62004b53828262003e59565b15801562004b6e57506011546001600160a01b038281169116145b1562001096576001600160a01b038083166000908152600560205260409020805460ff19166001179055601c805461ff00191661010017908190556201000090041662004bcf57601c805462010000600160b01b0319163062010000021790555b6017805461ff0019166101001790556040516001815260008051602062005e4d8339815191529060200160405180910390a15050565b6000826001600160a01b0316826188b890604051600060405180830381858888f193505050503d806000811462000ed7576040519150601f19603f3d011682016040523d82523d6000602084013e62000ed7565b61059180620058bc83390190565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0391909116815260200190565b801515811462004ccf57600080fd5b50565b6000806040838503121562004ce657600080fd5b823562004cf38162004cc0565b9150602083013562004d058162004cc0565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562004d515762004d5162004d10565b604052919050565b60006001600160401b0382111562004d755762004d7562004d10565b5060051b60200190565b6001600160a01b038116811462004ccf57600080fd5b600082601f83011262004da757600080fd5b8135602062004dc062004dba8362004d59565b62004d26565b82815260059290921b8401810191818101908684111562004de057600080fd5b8286015b8481101562004e0857803562004dfa8162004d7f565b835291830191830162004de4565b509695505050505050565b6000806040838503121562004e2757600080fd5b82356001600160401b0381111562004e3e57600080fd5b62004e4c8582860162004d95565b925050602083013562004d058162004cc0565b60005b8381101562004e7c57818101518382015260200162004e62565b50506000910152565b602081526000825180602084015262004ea681604085016020870162004e5f565b601f01601f19169190910160400192915050565b6000806040838503121562004ece57600080fd5b823562004edb8162004d7f565b946020939093013593505050565b60006020828403121562004efc57600080fd5b8135620019d88162004d7f565b6000806040838503121562004f1d57600080fd5b823562004f2a8162004d7f565b9150602083013562004d058162004d7f565b6000806040838503121562004f5057600080fd5b823562004cf38162004d7f565b6000806040838503121562004f7157600080fd5b50508035926020909101359150565b60008060006060848603121562004f9657600080fd5b833562004fa38162004d7f565b9250602084013562004fb58162004d7f565b929592945050506040919091013590565b6000806040838503121562004fda57600080fd5b82356001600160401b038082111562004ff257600080fd5b620050008683870162004d95565b93506020915081850135818111156200501857600080fd5b85019050601f810186136200502c57600080fd5b80356200503d62004dba8262004d59565b81815260059190911b820183019083810190888311156200505d57600080fd5b928401925b828410156200507d5783358252928401929084019062005062565b80955050505050509250929050565b6000602082840312156200509f57600080fd5b5035919050565b803561ffff81168114620050b957600080fd5b919050565b600080600060608486031215620050d457600080fd5b620050df84620050a6565b9250620050ef60208501620050a6565b9150620050ff60408501620050a6565b90509250925092565b600080600080600060a086880312156200512157600080fd5b85356200512e8162004d7f565b94506020860135620051408162004d7f565b93506040860135620051528162004d7f565b92506060860135620051648162004d7f565b91506080860135620051768162004d7f565b809150509295509295909350565b600080600080600080600080610100898b031215620051a257600080fd5b620051ad89620050a6565b9750620051bd60208a01620050a6565b9650620051cd60408a01620050a6565b9550620051dd60608a01620050a6565b9450620051ed60808a01620050a6565b9350620051fd60a08a01620050a6565b92506200520d60c08a01620050a6565b91506200521d60e08a01620050a6565b90509295985092959890939650565b6000602082840312156200523f57600080fd5b8135620019d88162004cc0565b600080600080608085870312156200526357600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039290921682521515602082015260400190565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b600081518084526020808501945080840160005b83811015620053005781516001600160a01b031687529582019590820190600101620052d9565b509495945050505050565b604081526000620053206040830185620052c5565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620053885781600019048211156200536c576200536c62005331565b808516156200537a57918102915b93841c93908002906200534c565b509250929050565b600082620053a15750600162000f5d565b81620053b05750600062000f5d565b8160018114620053c95760028114620053d457620053f4565b600191505062000f5d565b60ff841115620053e857620053e862005331565b50506001821b62000f5d565b5060208310610133831016604e8410600b841016171562005419575081810a62000f5d565b62005425838362005347565b80600019048211156200543c576200543c62005331565b029392505050565b6000620019d860ff84168362005390565b6000826200547357634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141762000f5d5762000f5d62005331565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8181038181111562000f5d5762000f5d62005331565b600060018201620054e957620054e962005331565b5060010190565b6020808252601890820152772637ba3a32b93c9036bab9ba1031329037b3333634b7329760411b604082015260600190565b6000620019d8838362005390565b600060ff821660ff810362005549576200554962005331565b60010192915050565b60208082526010908201526f4c6f7474657279206f66666c696e652160801b604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b61ffff818116838216019080821115620055f757620055f762005331565b5092915050565b6000602082840312156200561157600080fd5b81516001600160401b03808211156200562957600080fd5b818401915084601f8301126200563e57600080fd5b81518181111562005653576200565362004d10565b62005668601f8201601f191660200162004d26565b91508082528560208285010111156200568057600080fd5b6200569381602084016020860162004e5f565b50949350505050565b600060208284031215620056af57600080fd5b5051919050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b6000602082840312156200571757600080fd5b8151620019d88162004cc0565b6000602082840312156200573757600080fd5b8151620019d88162004d7f565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b8082018082111562000f5d5762000f5d62005331565b828152604060208201526000620016c66040830184620052c5565b60006020808385031215620057b657600080fd5b82516001600160401b03811115620057cd57600080fd5b8301601f81018513620057df57600080fd5b8051620057f062004dba8262004d59565b81815260059190911b820183019083810190878311156200581057600080fd5b928401925b82841015620038f65783518252928401929084019062005815565b85815284602082015260a0604082015260006200585160a0830186620052c5565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156200588457600080fd5b8351925060208401519150604084015190509250925092565b61ffff828116828216039080821115620055f757620055f76200533156fe608060405234801561001057600080fd5b5060405161059138038061059183398101604081905261002f91610059565b600391909155600280546001600160a01b0319166001600160a01b03909216919091179055610096565b6000806040838503121561006c57600080fd5b825160208401519092506001600160a01b038116811461008b57600080fd5b809150509250929050565b6104ec806100a56000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806326aca40e146100675780632ad4d4601461007c57806343a3692a1461008f57806371f5a298146100b8578063bb145cbd146100e3578063cabe80cb146100f5575b600080fd5b61007a610075366004610387565b6100fd565b005b61007a61008a366004610387565b610186565b6100a261009d3660046103ab565b610220565b6040516100af91906103e9565b60405180910390f35b6100cb6100c6366004610437565b6102e9565b6040516001600160a01b0390911681526020016100af565b6000545b6040519081526020016100af565b6100e761034e565b6002546001600160a01b031633146101305760405162461bcd60e51b815260040161012790610450565b60405180910390fd5b60035442101561017a5760405162461bcd60e51b81526020600482015260156024820152742637ba3a32b93c9036bab9ba1031329037bb32b91760591b6044820152606401610127565b806001600160a01b0316ff5b6002546001600160a01b031633146101b05760405162461bcd60e51b815260040161012790610450565b60035442101561021d5760008054600180820183557f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390910180546001600160a01b0319166001600160a01b038516908117909155825260208190526040909120805460ff191690911790555b50565b6002546060906001600160a01b0316331461024d5760405162461bcd60e51b815260040161012790610450565b6001600160a01b03831660009081526001602052604090205460ff1680156102725750815b6102af576040518060400160405280601b81526020017a2ab9b2b91034b9903737ba1034b7103a3432903637ba3a32b93c9760291b8152506102e0565b604051806040016040528060178152602001765573657220697320696e20746865206c6f74746572792160481b8152505b90505b92915050565b6002546000906001600160a01b031633146103165760405162461bcd60e51b815260040161012790610450565b600061032360018461047f565b81548110610333576103336104a0565b6000918252602090912001546001600160a01b031692915050565b6000426003541161035f5750600090565b4260035461036d919061047f565b905090565b6001600160a01b038116811461021d57600080fd5b60006020828403121561039957600080fd5b81356103a481610372565b9392505050565b600080604083850312156103be57600080fd5b82356103c981610372565b9150602083013580151581146103de57600080fd5b809150509250929050565b600060208083528351808285015260005b81811015610416578581018301518582016040015282016103fa565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561044957600080fd5b5035919050565b60208082526015908201527421b0b63632b91036bab9ba103132903a37b5b2b71760591b604082015260600190565b818103818111156102e357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122008a8e2d99d7db687e6a8992a46597695f6a7f0cacc0da9a06b77ad5ccd75db5b64736f6c634300081100337b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532578be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bd87c6582250a004fc9d302019857239087f7fa7f640d162de19d56a1d1cf94264736f6c63430008110033

Deployed Bytecode

0x608060405260043610620003545760003560e01c806303fd2a4514620003615780630445b6671462000391578063044df72614620003b857806305bbedb614620003df578063069d955f146200040457806306fdde03146200045c5780630758d924146200049c578063095ea7b314620004be5780630dcbcf1c14620004f45780630fa604e4146200053157806313b4a7f4146200054957806313e46192146200056e57806317300a14146200059357806318160ddd14620005b65780631ee5615314620005ce57806323b872dd14620005f35780632600395714620006185780632610eaca146200063d5780632b28fc7a14620006625780632d838119146200067a5780632e8fa821146200069f578063313ce56714620006b757806332cde66414620006d557806333251a0b14620006fa57806336fddb04146200071f5780633f3cf56c1462000744578063452ed4f114620007695780634a966bf9146200078b5780634ada218b14620007a35780634edf7a9514620007bf5780634fb2e45d14620007e45780634fbee193146200080957806350a8e0161462000846578063590ffdce14620008675780635c24b074146200088c5780635cce86cd14620008b15780636ebd007814620008ee57806370a082311462000906578063715018a6146200092b57806380c581d114620009435780638252879114620009685780638751f188146200098d57806388f8202014620009a5578063893d20e814620009e25780638a8c523c1462000a07578063913edd101462000a1f57806395a4db1c1462000a3757806395d89b411462000a5c5780639a3c1dfa1462000a8e578063a9059cbb1462000ab3578063acb4cf7e1462000ad8578063b1b08f711462000662578063b3d514fb1462000662578063bb145cbd1462000afd578063c043879a1462000b15578063cab5ebea1462000b31578063cabe80cb1462000b56578063cf8477061462000b6e578063d724b3ff1462000c32578063dd62ed3e1462000c4a578063e8fc733e1462000c94578063eec2744e1462000cac578063f20fa9441462000cd1578063f94aa1b41462000cf6578063fb78680d1462000d6c578063fdb78c0e1462000d91578063fe575a871462000db2578063feadde9c1462000dd7578063ffcc7bbf1462000dfc57600080fd5b366200035c57005b600080fd5b3480156200036e57600080fd5b506200037961dead81565b60405162000388919062004cac565b60405180910390f35b3480156200039e57600080fd5b50620003a960185481565b60405190815260200162000388565b348015620003c557600080fd5b50620003dd620003d736600462004cd2565b62000e31565b005b348015620003ec57600080fd5b50620003dd620003fe36600462004e13565b62000edf565b3480156200041157600080fd5b50600e54620004369061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff9485168152928416602084015292169181019190915260600162000388565b3480156200046957600080fd5b5060408051808201909152600b81526a22bb32b932b9ba21b7b4b760a91b60208201525b60405162000388919062004e85565b348015620004a957600080fd5b5060105462000379906001600160a01b031681565b348015620004cb57600080fd5b50620004e3620004dd36600462004eba565b62000f4a565b604051901515815260200162000388565b3480156200050157600080fd5b50620004e36200051336600462004ee9565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156200053e57600080fd5b50620003a962000f63565b3480156200055657600080fd5b50620003dd6200056836600462004f09565b62000f87565b3480156200057b57600080fd5b50620003dd6200058d36600462004f3c565b6200111b565b348015620005a057600080fd5b50601d54620004e390600160a01b900460ff1681565b348015620005c357600080fd5b50620003a9620015b1565b348015620005db57600080fd5b50620003dd620005ed36600462004f5d565b620015d2565b3480156200060057600080fd5b50620004e36200061236600462004f80565b62001651565b3480156200062557600080fd5b50620003dd6200063736600462004f5d565b620016ce565b3480156200064a57600080fd5b50620003dd6200065c36600462004fc6565b6200180f565b3480156200066f57600080fd5b50620003a96107d081565b3480156200068757600080fd5b50620003a9620006993660046200508c565b62001955565b348015620006ac57600080fd5b50620003a960195481565b348015620006c457600080fd5b506040516009815260200162000388565b348015620006e257600080fd5b50620003dd620006f4366004620050be565b620019df565b3480156200070757600080fd5b50620003dd6200071936600462004ee9565b62001ac6565b3480156200072c57600080fd5b50620003dd6200073e36600462004f3c565b62001b66565b3480156200075157600080fd5b50620003dd6200076336600462004f5d565b62001bc3565b3480156200077657600080fd5b5060115462000379906001600160a01b031681565b3480156200079857600080fd5b50620003dd62001d0c565b348015620007b057600080fd5b50601c54620004e39060ff1681565b348015620007cc57600080fd5b50620003dd620007de3660046200508c565b62001dea565b348015620007f157600080fd5b50620003dd6200080336600462004ee9565b62001eff565b3480156200081657600080fd5b50620004e36200082836600462004ee9565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156200085357600080fd5b50601c54620004e390610100900460ff1681565b3480156200087457600080fd5b50620003dd6200088636600462004f3c565b62002046565b3480156200089957600080fd5b50620003dd620008ab36600462004ee9565b620020a3565b348015620008be57600080fd5b50620004e3620008d036600462004ee9565b6001600160a01b031660009081526008602052604090205460ff1690565b348015620008fb57600080fd5b50620003a962002160565b3480156200091357600080fd5b50620003a96200092536600462004ee9565b6200217f565b3480156200093857600080fd5b50620003dd620021e1565b3480156200095057600080fd5b50620003dd6200096236600462004f3c565b62002273565b3480156200097557600080fd5b50620003dd6200098736600462005108565b620023bf565b3480156200099a57600080fd5b50620003a960205481565b348015620009b257600080fd5b50620004e3620009c436600462004ee9565b6001600160a01b031660009081526009602052604090205460ff1690565b348015620009ef57600080fd5b5060215461010090046001600160a01b031662000379565b34801562000a1457600080fd5b50620003dd6200244d565b34801562000a2c57600080fd5b50620003a960225481565b34801562000a4457600080fd5b50620003dd62000a5636600462005184565b62002662565b34801562000a6957600080fd5b506040805180820190915260078152661222ab21b7b4b760c91b60208201526200048d565b34801562000a9b57600080fd5b50620003dd62000aad3660046200522c565b620028b4565b34801562000ac057600080fd5b50620004e362000ad236600462004eba565b620028f9565b34801562000ae557600080fd5b506200048d62000af736600462004ee9565b62002912565b34801562000b0a57600080fd5b50620003a9620029d2565b34801562000b2257600080fd5b50602154620004e39060ff1681565b34801562000b3e57600080fd5b50620003dd62000b503660046200522c565b62002a7b565b34801562000b6357600080fd5b50620003a962002af1565b34801562000b7b57600080fd5b50600f5462000bdc9061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b8104821691600160601b8204811691600160701b8104821691600160801b9091041689565b6040805161ffff9a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c0840152831660e08301529091166101008201526101200162000388565b34801562000c3f57600080fd5b50620003a9601e5481565b34801562000c5757600080fd5b50620003a962000c6936600462004f09565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801562000ca157600080fd5b50620003a960235481565b34801562000cb957600080fd5b50620003dd62000ccb36600462004f3c565b62002b74565b34801562000cde57600080fd5b50620003dd62000cf036600462004f5d565b62002bdf565b34801562000d0357600080fd5b5060125460135460145460155460165462000d31946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a00162000388565b34801562000d7957600080fd5b50620003dd62000d8b3660046200524c565b62002c9f565b34801562000d9e57600080fd5b50601754620004e390610100900460ff1681565b34801562000dbf57600080fd5b50620004e362000dd136600462004ee9565b62002ee7565b34801562000de457600080fd5b50620003dd62000df636600462004f3c565b62002f64565b34801562000e0957600080fd5b5062000e2162000e1b3660046200508c565b62002fc1565b604051620003889291906200527f565b60215461010090046001600160a01b0316331462000e6c5760405162461bcd60e51b815260040162000e63906200529a565b60405180910390fd5b601c5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b15801562000ec257600080fd5b505af115801562000ed7573d6000803e3d6000fd5b505050505050565b60215461010090046001600160a01b0316331462000f115760405162461bcd60e51b815260040162000e63906200529a565b601c546040516302ddf6db60e11b8152620100009091046001600160a01b0316906305bbedb69062000ea790859085906004016200530b565b600062000f5933848462003065565b5060015b92915050565b600062000f736009600a62005444565b601b5462000f82919062005455565b905090565b60215461010090046001600160a01b0316331462000fb95760405162461bcd60e51b815260040162000e63906200529a565b600c5460ff1662000fc957600080fd5b6001600160a01b038216301480159062000fec57506001600160a01b0381163014155b620010285760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b604482015260640162000e63565b806001600160a01b0316826001600160a01b0316036200109a576001600160a01b03811660009081526005602090815260408083208054600160ff199182168117909255600b90935292208054909116821790556200108990829062002046565b620010968160016200111b565b5050565b6001600160a01b0382811660008181526005602090815260408083208054600160ff1991821681179092559587168085528285208054881683179055948452600b9092528083208054861683179055928252919020805490921681179091556200110690839062002046565b6200111381600162002046565b620010898260015b60215461010090046001600160a01b031633146200114d5760405162461bcd60e51b815260040162000e63906200529a565b80156200129a576001600160a01b03821660009081526009602052604090205460ff1615620011be5760405162461bcd60e51b815260206004820152601c60248201527b20b1b1b7bab73a1034b99030b63932b0b23c9032bc31b63ab232b21760211b604482015260640162000e63565b6001600160a01b038216600090815260208190526040902054156200121b576001600160a01b038216600090815260208190526040902054620012019062001955565b6001600160a01b0383166000908152600160205260409020555b6001600160a01b038083166000818152600960205260409020805460ff19166001179055601154909116146200109657600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b0384161790555050565b8062001096576001600160a01b03821660009081526009602052604090205460ff16620013095760405162461bcd60e51b815260206004820152601c60248201527b20b1b1b7bab73a1034b99030b63932b0b23c9034b731b63ab232b21760211b604482015260640162000e63565b6011546001600160a01b039081169083160362001387576200132a62003118565b6001600160a01b0383166000908152600160205260409020546200134f919062005478565b6001600160a01b03831660009081526020818152604080832093909355600181528282208290556009905220805460ff191690555050565b600a546001036200142f576200139c62003118565b6001600160a01b038316600090815260016020526040902054620013c1919062005478565b6001600160a01b03831660009081526020818152604080832093909355600181528282208290556009905220805460ff19169055600a80548062001409576200140962005492565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b60005b600a54811015620015ac57826001600160a01b0316600a82815481106200145d576200145d620054a8565b6000918252602090912001546001600160a01b0316036200159757600a80546200148a90600190620054be565b815481106200149d576200149d620054a8565b600091825260209091200154600a80546001600160a01b039092169183908110620014cc57620014cc620054a8565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600190915260408120556200150d62003118565b6001600160a01b03841660009081526001602052604090205462001532919062005478565b6001600160a01b038416600090815260208181526040808320939093556009905220805460ff19169055600a80548062001570576200157062005492565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b80620015a381620054d4565b91505062001432565b505050565b6000620015c16009600a62005444565b62000f829064e8d4a5100062005478565b60215461010090046001600160a01b03163314620016045760405162461bcd60e51b815260040162000e63906200529a565b601d54600160a01b900460ff1615620016315760405162461bcd60e51b815260040162000e6390620054f0565b6200163e81600a62005522565b6200164a908362005478565b6020555050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914620016b9576001600160a01b038416600090815260046020908152604080832033845290915281208054849290620016b3908490620054be565b90915550505b620016c684848462003421565b949350505050565b60215461010090046001600160a01b03163314620017005760405162461bcd60e51b815260040162000e63906200529a565b6064620017106009600a62005444565b620017219064e8d4a5100062005478565b6200172d919062005455565b81836200173d6009600a62005444565b6200174e9064e8d4a5100062005478565b6200175a919062005478565b62001766919062005455565b1015620017cf5760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b606482015260840162000e63565b8082620017df6009600a62005444565b620017f09064e8d4a5100062005478565b620017fc919062005478565b62001808919062005455565b601b555050565b60215461010090046001600160a01b03163314620018415760405162461bcd60e51b815260040162000e63906200529a565b80518251146200188c5760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b604482015260640162000e63565b60005b82518160ff161015620015ac57818160ff1681518110620018b457620018b4620054a8565b6020026020010151620018c7336200217f565b1015620018d357600080fd5b6200193f33848360ff1681518110620018f057620018f0620054a8565b60200260200101516009600a62001908919062005444565b858560ff1681518110620019205762001920620054a8565b602002602001015162001934919062005478565b600080600162003901565b50806200194c8162005530565b9150506200188f565b6000600d54821115620019be5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000e63565b6000620019ca62003118565b9050620019d8818462005455565b9392505050565b60215461010090046001600160a01b0316331462001a115760405162461bcd60e51b815260040162000e63906200529a565b6107d08361ffff161115801562001a2e57506107d08261ffff1611155b801562001a4157506107d08161ffff1611155b62001a895760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba1032bc31b2b2b21036b0bc34b6bab6b99760491b604482015260640162000e63565b600e805461ffff94851663ffffffff199091161762010000938516939093029290921761ffff60201b1916600160201b9190931602919091179055565b60215461010090046001600160a01b0316331462001af85760405162461bcd60e51b815260040162000e63906200529a565b601c546040516333251a0b60e01b8152620100009091046001600160a01b0316906333251a0b9062001b2f90849060040162004cac565b600060405180830381600087803b15801562001b4a57600080fd5b505af115801562001b5f573d6000803e3d6000fd5b5050505050565b60215461010090046001600160a01b0316331462001b985760405162461bcd60e51b815260040162000e63906200529a565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b60215461010090046001600160a01b0316331462001bf55760405162461bcd60e51b815260040162000e63906200529a565b6103e862001c066009600a62005444565b62001c179064e8d4a5100062005478565b62001c23919062005455565b818362001c336009600a62005444565b62001c449064e8d4a5100062005478565b62001c50919062005478565b62001c5c919062005455565b101562001ccc5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f766044820152763290181718929037b3103a37ba30b61039bab838363c9760491b606482015260840162000e63565b808262001cdc6009600a62005444565b62001ced9064e8d4a5100062005478565b62001cf9919062005478565b62001d05919062005455565b601a555050565b60215461010090046001600160a01b0316331462001d3e5760405162461bcd60e51b815260040162000e63906200529a565b601d54600160a01b900460ff1662001d6a5760405162461bcd60e51b815260040162000e639062005552565b601d54602154604051631356520760e11b81526001600160a01b03928316926326aca40e9262001da7926101009091049091169060040162004cac565b600060405180830381600087803b15801562001dc257600080fd5b505af115801562001dd7573d6000803e3d6000fd5b5050601d805460ff60a01b191690555050565b60215461010090046001600160a01b0316331462001e1c5760405162461bcd60e51b815260040162000e63906200529a565b601d54600160a01b900460ff161562001e495760405162461bcd60e51b815260040162000e6390620054f0565b42811162001e945760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba1032b7321034b7103a3432903830b9ba1760491b604482015260640162000e63565b803060405162001ea49062004c59565b9182526001600160a01b03166020820152604001604051809103906000f08015801562001ed5573d6000803e3d6000fd5b50601d80546001600160a81b0319166001600160a01b039290921691909117600160a01b17905550565b60215461010090046001600160a01b0316331462001f315760405162461bcd60e51b815260040162000e63906200529a565b6001600160a01b03811662001f5a5760405162461bcd60e51b815260040162000e63906200557c565b61deac196001600160a01b0382160162001f885760405162461bcd60e51b815260040162000e63906200557c565b60215462001fa69061010090046001600160a01b0316600062002046565b62001fb381600162002046565b60215460009062001fd29061010090046001600160a01b03166200217f565b111562001ffd5760215462001ffb9061010090046001600160a01b03168262001934826200217f565b505b602180546001600160a01b03838116610100818102610100600160a81b0319851617909455604051939092041691829060008051602062005e6d83398151915290600090a35050565b60215461010090046001600160a01b03163314620020785760405162461bcd60e51b815260040162000e63906200529a565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60215461010090046001600160a01b03163314620020d55760405162461bcd60e51b815260040162000e63906200529a565b601c54610100900460ff1615620020eb57600080fd5b306001600160a01b03821603620021365760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b604482015260640162000e63565b601c80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000620021706009600a62005444565b601a5462000f82919062005455565b6001600160a01b03811660009081526009602052604081205460ff1615620021bd57506001600160a01b031660009081526001602052604090205490565b6001600160a01b03821660009081526020819052604090205462000f5d9062001955565b60215461010090046001600160a01b03163314620022135760405162461bcd60e51b815260040162000e63906200529a565b602154620022319061010090046001600160a01b0316600062002046565b60218054610100600160a81b031981169091556040516101009091046001600160a01b031690600090829060008051602062005e6d833981519152908390a350565b60215461010090046001600160a01b03163314620022a55760405162461bcd60e51b815260040162000e63906200529a565b80151560000362002303576001600160a01b03808316600090815260026020526040808220805460ff19169055601c5490516380c581d160e01b815262010000909104909216916380c581d19162000ea7918691906004016200527f565b6003541562002362576203f48060035442620023209190620054be565b11620023625760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b604482015260640162000e63565b6001600160a01b0380831660009081526002602052604090819020805460ff1916600190811790915542600355601c5491516380c581d160e01b815262010000909204909216916380c581d19162000ea79186916004016200527f565b60215461010090046001600160a01b03163314620023f15760405162461bcd60e51b815260040162000e63906200529a565b601680546001600160a01b03199081166001600160a01b03938416179091556012805482169683169690961790955560148054861693821693909317909255601580548516918316919091179055601380549093169116179055565b60215461010090046001600160a01b031633146200247f5760405162461bcd60e51b815260040162000e63906200529a565b601c5460ff1615620024cf5760405162461bcd60e51b815260206004820152601860248201527754726164696e6720616c726561647920656e61626c65642160401b604482015260640162000e63565b601c54610100900460ff16620025235760405162461bcd60e51b81526020600482015260186024820152772634b8bab4b234ba3c9036bab9ba1031329030b23232b21760411b604482015260640162000e63565b601c546201000090046001600160a01b03166200255457601c805462010000600160b01b0319163062010000021790555b601c54601154604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff431660248201526001600160401b034216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015620025c657600080fd5b505af1925050508015620025d8575060015b50601c805460ff19908116600117909155600c80549091169055601154612710906200260d906001600160a01b03166200217f565b6200261a90600a62005478565b62002626919062005455565b6018556011546127109062002644906001600160a01b03166200217f565b6200265190601962005478565b6200265d919062005455565b601955565b60215461010090046001600160a01b03163314620026945760405162461bcd60e51b815260040162000e63906200529a565b81600f600001600e6101000a81548161ffff021916908361ffff16021790555087600f60000160006101000a81548161ffff021916908361ffff16021790555086600f60000160046101000a81548161ffff021916908361ffff16021790555085600f60000160066101000a81548161ffff021916908361ffff16021790555083600f600001600a6101000a81548161ffff021916908361ffff16021790555082600f600001600c6101000a81548161ffff021916908361ffff16021790555084600f60000160086101000a81548161ffff021916908361ffff16021790555080600f60000160026101000a81548161ffff021916908361ffff16021790555085828486888b620027a69190620055d9565b620027b29190620055d9565b620027be9190620055d9565b620027ca9190620055d9565b620027d69190620055d9565b600f805461ffff60801b1916600160801b61ffff93841602179055600e546000916200280c9162010000810482169116620055d9565b600f5461ffff91821692508291620100008204811691620028399181811691600160801b900416620055d9565b620028459190620055d9565b61ffff161115620028a95760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b606482015260840162000e63565b505050505050505050565b60215461010090046001600160a01b03163314620028e65760405162461bcd60e51b815260040162000e63906200529a565b6021805460ff1916911515919091179055565b60006200290833848462003421565b5060019392505050565b601d54606090600160a01b900460ff16620029415760405162461bcd60e51b815260040162000e639062005552565b6000601f5462002951846200217f565b601d546040516321d1b49560e11b8152929091101592506001600160a01b0316906343a3692a906200298a90869085906004016200527f565b600060405180830381865afa158015620029a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620019d89190810190620055fe565b601d54600090600160a01b900460ff1662002a015760405162461bcd60e51b815260040162000e639062005552565b601d60009054906101000a90046001600160a01b03166001600160a01b031663bb145cbd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002a55573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f8291906200569c565b60215461010090046001600160a01b0316331462002aad5760405162461bcd60e51b815260040162000e63906200529a565b601780548215156101000261ff001990911617905560405160008051602062005e4d8339815191529062002ae690831515815260200190565b60405180910390a150565b601d54600090600160a01b900460ff1662002b205760405162461bcd60e51b815260040162000e639062005552565b601d60009054906101000a90046001600160a01b03166001600160a01b031663cabe80cb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002a55573d6000803e3d6000fd5b60215461010090046001600160a01b0316331462002ba65760405162461bcd60e51b815260040162000e63906200529a565b601c546040516377613a2760e11b8152620100009091046001600160a01b03169063eec2744e9062000ea790859085906004016200527f565b60215461010090046001600160a01b0316331462002c115760405162461bcd60e51b815260040162000e63906200529a565b601d54600160a01b900460ff161562002c3e5760405162461bcd60e51b815260040162000e6390620054f0565b808262002c4e6009600a62005444565b62002c5f9064e8d4a5100062005478565b62002c6b919062005478565b62002c77919062005455565b601f558062002c8c8364e8d4a5100062005478565b62002c98919062005455565b601e555050565b60215461010090046001600160a01b0316331462002cd15760405162461bcd60e51b815260040162000e63906200529a565b828462002ce16009600a62005444565b62002cf29064e8d4a5100062005478565b62002cfe919062005478565b62002d0a919062005455565b601855808262002d1d6009600a62005444565b62002d2e9064e8d4a5100062005478565b62002d3a919062005478565b62002d46919062005455565b6019819055601854111562002da85760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b606482015260840162000e63565b6011546127109062002dc3906001600160a01b03166200217f565b62002dd090609662005478565b62002ddc919062005455565b601954111562002e3b5760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b606482015260840162000e63565b620f424062002e4d6009600a62005444565b62002e5e9064e8d4a5100062005478565b62002e6a919062005455565b601954101562002e8e5760405162461bcd60e51b815260040162000e6390620056b6565b620f424062002ea06009600a62005444565b62002eb19064e8d4a5100062005478565b62002ebd919062005455565b601854101562002ee15760405162461bcd60e51b815260040162000e6390620056b6565b50505050565b601c5460405163fe575a8760e01b81526000916201000090046001600160a01b03169063fe575a879062002f2090859060040162004cac565b602060405180830381865afa15801562002f3e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f5d919062005704565b60215461010090046001600160a01b0316331462002f965760405162461bcd60e51b815260040162000e63906200529a565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601d54604051630e3eb45360e31b815260048101839052600091829182916001600160a01b0316906371f5a29890602401602060405180830381865afa15801562003010573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003036919062005724565b90506000601f5462003048836200217f565b1062003057575060016200305b565b5060005b9094909350915050565b6001600160a01b0383166200308e5760405162461bcd60e51b815260040162000e639062005744565b6001600160a01b038216620030b75760405162461bcd60e51b815260040162000e639062005744565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600d54600090816200312d6009600a62005444565b6200313e9064e8d4a5100062005478565b6011546001600160a01b031660009081526009602052604090205490915060ff161562003236576011546001600160a01b0316600090815260208190526040902054821080620031a757506011546001600160a01b031660009081526001602052604090205481105b15620031e257620031bb6009600a62005444565b620031cc9064e8d4a5100062005478565b600d54620031db919062005455565b9250505090565b6011546001600160a01b0316600090815260208190526040902054620032099083620054be565b6011546001600160a01b0316600090815260016020526040902054909250620032339082620054be565b90505b600a5415620033d15760005b600a5460ff82161015620033cf5782600080600a8460ff16815481106200326d576200326d620054a8565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180620032df57508160016000600a8460ff1681548110620032b857620032b8620054a8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200331b57620032f36009600a62005444565b620033049064e8d4a5100062005478565b600d5462003313919062005455565b935050505090565b600080600a8360ff1681548110620033375762003337620054a8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620033689084620054be565b925060016000600a8360ff1681548110620033875762003387620054a8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620033b89083620054be565b915080620033c68162005530565b91505062003242565b505b620033df6009600a62005444565b620033f09064e8d4a5100062005478565b600d54620033ff919062005455565b8210156200341557620031bb6009600a62005444565b620031db818362005455565b60006001600160a01b038416620034895760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000e63565b6001600160a01b038316620034ed5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000e63565b60008211620035515760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840162000e63565b6001600160a01b0384166000908152600260205260408120548190819060ff1615620035815760019250620035b1565b6001600160a01b03861660009081526002602052604090205460ff1615620035ad5760019150620035b1565b5060015b620035bd878762003e59565b156200384057601c5460ff16620036c05780620036185760405162461bcd60e51b815260206004820152601860248201527754726164696e67206e6f742079657420656e61626c65642160401b604482015260640162000e63565b6001600160a01b03871660009081526006602052604090205460ff161580156200365b57506001600160a01b03861660009081526006602052604090205460ff16155b15620036c05760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b606482015260840162000e63565b8280620036ca5750815b156200377e576001600160a01b03871660009081526008602052604090205460ff161580156200371357506001600160a01b03861660009081526008602052604090205460ff16155b156200377e57601a548511156200377e5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840162000e63565b6010546001600160a01b038781169116148015906200379b575081155b1562003840576001600160a01b03861660009081526008602052604090205460ff166200384057601b5485620037d1886200217f565b620037dd919062005771565b1115620038405760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b606482015260840162000e63565b8115620038e65760175460ff16620038e657601754610100900460ff1680156200388357506001600160a01b0386166000908152600b602052604090205460ff16155b8015620038a957506001600160a01b0387166000908152600b602052604090205460ff16155b15620038e6576000620038bc306200217f565b90506018548110620038e457601954808210620038d7578091505b620038e28262003f45565b505b505b620038f687878786868662003901565b979650505050505050565b6001600160a01b03861660009081526007602052604081205460019060ff16806200394457506001600160a01b03871660009081526007602052604090205460ff165b156200394e575060005b600062003961898989858a8a8a620044ef565b60a08101516001600160a01b038b166000908152602081905260409020549192506200398d91620054be565b6001600160a01b03808b16600090815260208190526040808220939093556080840151918b1681529190912054620039c6919062005771565b6001600160a01b03808a1660009081526020818152604080832094909455918c1681526009909152205460ff161562003a39576001600160a01b03891660009081526001602052604090205462003a1f908890620054be565b6001600160a01b038a166000908152600160205260409020555b6001600160a01b03881660009081526009602052604090205460ff161562003a9c5780516001600160a01b03891660009081526001602052604090205462003a82919062005771565b6001600160a01b0389166000908152600160205260409020555b60008160c00151118062003ab4575060008160200151115b1562003ad8578060c00151600d600082825462003ad29190620054be565b90915550505b601d54600160a01b900460ff161562003d1c57851562003d1c57601f5462003b00896200217f565b11801562003b2757506001600160a01b03881660009081526007602052604090205460ff16155b1562003d1c57604080516002808252606082018352600092602083019080368337019050509050308160008151811062003b655762003b65620054a8565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562003bbf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003be5919062005724565b8160018151811062003bfb5762003bfb620054a8565b6001600160a01b03928316602091820292909201015260105460405163d06ca61f60e01b8152600092919091169063d06ca61f9062003c41908c90869060040162005787565b600060405180830381865afa15801562003c5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262003c899190810190620057a2565b60018151811062003c9e5762003c9e620054a8565b60200260200101519050602054811062003d1957601d54604051630156a6a360e51b81526001600160a01b0390911690632ad4d4609062003ce4908d9060040162004cac565b600060405180830381600087803b15801562003cff57600080fd5b505af115801562003d14573d6000803e3d6000fd5b505050505b50505b876001600160a01b0316896001600160a01b031660008051602062005e8d833981519152836000015160405162003d5591815260200190565b60405180910390a3601c54610100900460ff1662003e4a5762003d79898962004ae1565b601c54610100900460ff1615801562003d99575062003d99898962003e59565b801562003dbf57506001600160a01b03891660009081526006602052604090205460ff16155b801562003de557506001600160a01b03881660009081526006602052604090205460ff16155b801562003df0575083155b1562003e4a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b606482015260840162000e63565b50600198975050505050505050565b6021546000906001600160a01b03848116610100909204161480159062003e9357506021546001600160a01b038381166101009092041614155b801562003eb0575060215461010090046001600160a01b03163214155b801562003ed657506001600160a01b03821660009081526005602052604090205460ff16155b801562003efc57506001600160a01b03831660009081526005602052604090205460ff16155b801562003f1457506001600160a01b03821661dead14155b801562003f2957506001600160a01b03821615155b8015620019d857506001600160a01b0383163014159392505050565b6017805460ff191660011790556040805161012081018252600f5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b8104831660a0830152600160601b8104831660c0830152600160701b8104831660e0830152600160801b9004909116610100820181905260000362003fec5750620044e2565b3060009081526004602090815260408083206010546001600160a01b031684529091529020546000191462004046573060009081526004602090815260408083206010546001600160a01b03168452909152902060001990555b6000600282610100015161ffff16836060015161ffff16856200406a919062005478565b62004076919062005455565b62004082919062005455565b90506000620040928285620054be565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110620040cf57620040cf620054a8565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562004129573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200414f919062005724565b81600181518110620041655762004165620054a8565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac94790620041ad90859060009086903090429060040162005830565b600060405180830381600087803b158015620041c857600080fd5b505af1925050508015620041da575060015b620041e95750505050620044e2565b47600083620041f9868462005478565b62004205919062005455565b90508415620042ea5760105460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1935050505080156200429c575060408051601f3d908101601f1916820190925262004299918101906200586e565b60015b620042ad57505050505050620044e2565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b620042f68183620054be565b9150856060015186610100018181516200431191906200589d565b61ffff90811690915261010088015160a089015160009350908216916200433a91168562005478565b62004346919062005455565b9050600087610100015161ffff16886080015161ffff16856200436a919062005478565b62004376919062005455565b9050600088610100015161ffff168960c0015161ffff16866200439a919062005478565b620043a6919062005455565b9050600089610100015161ffff168a60e0015161ffff1687620043ca919062005478565b620043d6919062005455565b905060008282620043e8868862005771565b620043f4919062005771565b62004400919062005771565b6200440c9088620054be565b90506000808c6040015161ffff161115620044395760125462004439906001600160a01b03168362004c05565b60a08c015161ffff1615620044605760145462004460906001600160a01b03168762004c05565b60808c015161ffff1615620044875760135462004487906001600160a01b03168662004c05565b60c08c015161ffff1615620044ae57601554620044ae906001600160a01b03168562004c05565b60e08c015161ffff1615620044d557601654620044d5906001600160a01b03168462004c05565b5050505050505050505050505b506017805460ff19169055565b620044f962004c67565b6200450362004c67565b6040805161012081018252600f5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b8104831660a0830152600160601b8104831660c0830152600160701b8104831660e0830152600160801b90049091166101008201526200459662003118565b60e08301819052620045a9908962005478565b60a0830152620045ba8a8a62003e59565b156200465a57601c5460405163ecd07a5360e01b81526001600160a01b038c811660048301528b81166024830152604482018b9052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801562004641575060408051601f3d908101601f191682019092526200463e9181019062005704565b60015b6200464b57600080fd5b9050806200465857600080fd5b505b86156200485b5760008615620046785750600e5461ffff1662004742565b8515620047325750600e546021546201000090910461ffff169060ff16156200472c57601154600090620046b5906001600160a01b03166200217f565b9050620046c460648262005455565b8a11156200472a5780620046db8b61271062005478565b620046e7919062005455565b60235580620046f98b61271062005478565b62004705919062005455565b62004711908362005771565b9150610bb88211156200472457610bb891505b60228290555b505b62004742565b50600e54600160201b900461ffff165b600061271062004753838c62005478565b6200475f919062005455565b90506000836020015184600001518561010001516200477f9190620055d9565b6200478b9190620055d9565b845161ffff91821692508291620047a491168462005478565b620047b0919062005455565b6020808701919091528401518190620047ce9061ffff168462005478565b620047da919062005455565b606086018190526020860151620047f2919062005771565b620047fe9083620054be565b604086018190526060860151602087015190916200481c9162005771565b62004828919062005771565b62004834908c620054be565b855260e085015160208601516200484c919062005478565b60c0860152506200487b915050565b600060208301819052604083018190526060830181905288835260c08301525b6040820151156200494a578160e0015182604001516200489c919062005478565b3060009081526020819052604081208054909190620048bd90849062005771565b90915550503060009081526009602052604090205460ff1615620049085760408083015130600090815260016020529182208054919290916200490290849062005771565b90915550505b306001600160a01b03168a6001600160a01b031660008051602062005e8d83398151915284604001516040516200494191815260200190565b60405180910390a35b60608201511562004a75578160e0015182606001516200496b919062005478565b61dead600090815260208190527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf838054909190620049ab90849062005771565b909155505061dead60005260096020527f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb1930750037855460ff161562004a3157606082015161dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d805490919062004a2b90849062005771565b90915550505b61dead6001600160a01b03168a6001600160a01b031660008051602062005e8d833981519152846060015160405162004a6c91815260200190565b60405180910390a35b8160e00151826060015162004a8b919062005478565b8260e00151836040015162004aa1919062005478565b8360c0015162004ab2919062005771565b62004abe919062005771565b8260a0015162004acf9190620054be565b60808301525098975050505050505050565b601c54610100900460ff161562004b475760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840162000e63565b62004b53828262003e59565b15801562004b6e57506011546001600160a01b038281169116145b1562001096576001600160a01b038083166000908152600560205260409020805460ff19166001179055601c805461ff00191661010017908190556201000090041662004bcf57601c805462010000600160b01b0319163062010000021790555b6017805461ff0019166101001790556040516001815260008051602062005e4d8339815191529060200160405180910390a15050565b6000826001600160a01b0316826188b890604051600060405180830381858888f193505050503d806000811462000ed7576040519150601f19603f3d011682016040523d82523d6000602084013e62000ed7565b61059180620058bc83390190565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0391909116815260200190565b801515811462004ccf57600080fd5b50565b6000806040838503121562004ce657600080fd5b823562004cf38162004cc0565b9150602083013562004d058162004cc0565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562004d515762004d5162004d10565b604052919050565b60006001600160401b0382111562004d755762004d7562004d10565b5060051b60200190565b6001600160a01b038116811462004ccf57600080fd5b600082601f83011262004da757600080fd5b8135602062004dc062004dba8362004d59565b62004d26565b82815260059290921b8401810191818101908684111562004de057600080fd5b8286015b8481101562004e0857803562004dfa8162004d7f565b835291830191830162004de4565b509695505050505050565b6000806040838503121562004e2757600080fd5b82356001600160401b0381111562004e3e57600080fd5b62004e4c8582860162004d95565b925050602083013562004d058162004cc0565b60005b8381101562004e7c57818101518382015260200162004e62565b50506000910152565b602081526000825180602084015262004ea681604085016020870162004e5f565b601f01601f19169190910160400192915050565b6000806040838503121562004ece57600080fd5b823562004edb8162004d7f565b946020939093013593505050565b60006020828403121562004efc57600080fd5b8135620019d88162004d7f565b6000806040838503121562004f1d57600080fd5b823562004f2a8162004d7f565b9150602083013562004d058162004d7f565b6000806040838503121562004f5057600080fd5b823562004cf38162004d7f565b6000806040838503121562004f7157600080fd5b50508035926020909101359150565b60008060006060848603121562004f9657600080fd5b833562004fa38162004d7f565b9250602084013562004fb58162004d7f565b929592945050506040919091013590565b6000806040838503121562004fda57600080fd5b82356001600160401b038082111562004ff257600080fd5b620050008683870162004d95565b93506020915081850135818111156200501857600080fd5b85019050601f810186136200502c57600080fd5b80356200503d62004dba8262004d59565b81815260059190911b820183019083810190888311156200505d57600080fd5b928401925b828410156200507d5783358252928401929084019062005062565b80955050505050509250929050565b6000602082840312156200509f57600080fd5b5035919050565b803561ffff81168114620050b957600080fd5b919050565b600080600060608486031215620050d457600080fd5b620050df84620050a6565b9250620050ef60208501620050a6565b9150620050ff60408501620050a6565b90509250925092565b600080600080600060a086880312156200512157600080fd5b85356200512e8162004d7f565b94506020860135620051408162004d7f565b93506040860135620051528162004d7f565b92506060860135620051648162004d7f565b91506080860135620051768162004d7f565b809150509295509295909350565b600080600080600080600080610100898b031215620051a257600080fd5b620051ad89620050a6565b9750620051bd60208a01620050a6565b9650620051cd60408a01620050a6565b9550620051dd60608a01620050a6565b9450620051ed60808a01620050a6565b9350620051fd60a08a01620050a6565b92506200520d60c08a01620050a6565b91506200521d60e08a01620050a6565b90509295985092959890939650565b6000602082840312156200523f57600080fd5b8135620019d88162004cc0565b600080600080608085870312156200526357600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039290921682521515602082015260400190565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b600081518084526020808501945080840160005b83811015620053005781516001600160a01b031687529582019590820190600101620052d9565b509495945050505050565b604081526000620053206040830185620052c5565b905082151560208301529392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620053885781600019048211156200536c576200536c62005331565b808516156200537a57918102915b93841c93908002906200534c565b509250929050565b600082620053a15750600162000f5d565b81620053b05750600062000f5d565b8160018114620053c95760028114620053d457620053f4565b600191505062000f5d565b60ff841115620053e857620053e862005331565b50506001821b62000f5d565b5060208310610133831016604e8410600b841016171562005419575081810a62000f5d565b62005425838362005347565b80600019048211156200543c576200543c62005331565b029392505050565b6000620019d860ff84168362005390565b6000826200547357634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141762000f5d5762000f5d62005331565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8181038181111562000f5d5762000f5d62005331565b600060018201620054e957620054e962005331565b5060010190565b6020808252601890820152772637ba3a32b93c9036bab9ba1031329037b3333634b7329760411b604082015260600190565b6000620019d8838362005390565b600060ff821660ff810362005549576200554962005331565b60010192915050565b60208082526010908201526f4c6f7474657279206f66666c696e652160801b604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b61ffff818116838216019080821115620055f757620055f762005331565b5092915050565b6000602082840312156200561157600080fd5b81516001600160401b03808211156200562957600080fd5b818401915084601f8301126200563e57600080fd5b81518181111562005653576200565362004d10565b62005668601f8201601f191660200162004d26565b91508082528560208285010111156200568057600080fd5b6200569381602084016020860162004e5f565b50949350505050565b600060208284031215620056af57600080fd5b5051919050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b6000602082840312156200571757600080fd5b8151620019d88162004cc0565b6000602082840312156200573757600080fd5b8151620019d88162004d7f565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b8082018082111562000f5d5762000f5d62005331565b828152604060208201526000620016c66040830184620052c5565b60006020808385031215620057b657600080fd5b82516001600160401b03811115620057cd57600080fd5b8301601f81018513620057df57600080fd5b8051620057f062004dba8262004d59565b81815260059190911b820183019083810190878311156200581057600080fd5b928401925b82841015620038f65783518252928401929084019062005815565b85815284602082015260a0604082015260006200585160a0830186620052c5565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156200588457600080fd5b8351925060208401519150604084015190509250925092565b61ffff828116828216039080821115620055f757620055f76200533156fe608060405234801561001057600080fd5b5060405161059138038061059183398101604081905261002f91610059565b600391909155600280546001600160a01b0319166001600160a01b03909216919091179055610096565b6000806040838503121561006c57600080fd5b825160208401519092506001600160a01b038116811461008b57600080fd5b809150509250929050565b6104ec806100a56000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806326aca40e146100675780632ad4d4601461007c57806343a3692a1461008f57806371f5a298146100b8578063bb145cbd146100e3578063cabe80cb146100f5575b600080fd5b61007a610075366004610387565b6100fd565b005b61007a61008a366004610387565b610186565b6100a261009d3660046103ab565b610220565b6040516100af91906103e9565b60405180910390f35b6100cb6100c6366004610437565b6102e9565b6040516001600160a01b0390911681526020016100af565b6000545b6040519081526020016100af565b6100e761034e565b6002546001600160a01b031633146101305760405162461bcd60e51b815260040161012790610450565b60405180910390fd5b60035442101561017a5760405162461bcd60e51b81526020600482015260156024820152742637ba3a32b93c9036bab9ba1031329037bb32b91760591b6044820152606401610127565b806001600160a01b0316ff5b6002546001600160a01b031633146101b05760405162461bcd60e51b815260040161012790610450565b60035442101561021d5760008054600180820183557f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390910180546001600160a01b0319166001600160a01b038516908117909155825260208190526040909120805460ff191690911790555b50565b6002546060906001600160a01b0316331461024d5760405162461bcd60e51b815260040161012790610450565b6001600160a01b03831660009081526001602052604090205460ff1680156102725750815b6102af576040518060400160405280601b81526020017a2ab9b2b91034b9903737ba1034b7103a3432903637ba3a32b93c9760291b8152506102e0565b604051806040016040528060178152602001765573657220697320696e20746865206c6f74746572792160481b8152505b90505b92915050565b6002546000906001600160a01b031633146103165760405162461bcd60e51b815260040161012790610450565b600061032360018461047f565b81548110610333576103336104a0565b6000918252602090912001546001600160a01b031692915050565b6000426003541161035f5750600090565b4260035461036d919061047f565b905090565b6001600160a01b038116811461021d57600080fd5b60006020828403121561039957600080fd5b81356103a481610372565b9392505050565b600080604083850312156103be57600080fd5b82356103c981610372565b9150602083013580151581146103de57600080fd5b809150509250929050565b600060208083528351808285015260005b81811015610416578581018301518582016040015282016103fa565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561044957600080fd5b5035919050565b60208082526015908201527421b0b63632b91036bab9ba103132903a37b5b2b71760591b604082015260600190565b818103818111156102e357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea264697066735822122008a8e2d99d7db687e6a8992a46597695f6a7f0cacc0da9a06b77ad5ccd75db5b64736f6c634300081100337b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532578be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bd87c6582250a004fc9d302019857239087f7fa7f640d162de19d56a1d1cf94264736f6c63430008110033

Deployed Bytecode Sourcemap

6132:32562:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8329:73;;;;;;;;;;;;8360:42;8329:73;;;;;;;;;:::i;:::-;;;;;;;;9140:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;9140:28:0;222:177:1;17251:153:0;;;;;;;;;;-1:-1:-1;17251:153:0;;;;;:::i;:::-;;:::i;:::-;;16816:174;;;;;;;;;;-1:-1:-1;16816:174:0;;;;;:::i;:::-;;:::i;7658:113::-;;;;;;;;;;-1:-1:-1;7658:113:0;;;;;;;;;;;;;;;-1:-1:-1;;;7658:113:0;;;;;;;;;;3074:6:1;3107:15;;;3089:34;;3159:15;;;3154:2;3139:18;;3132:43;3211:15;;3191:18;;;3184:43;;;;3052:2;3037:18;7658:113:0;2868:365:1;13496:80:0;;;;;;;;;;-1:-1:-1;13568:5:0;;;;;;;;;;;;-1:-1:-1;;;13568:5:0;;;;13496:80;;;;;;;:::i;8268:26::-;;;;;;;;;;-1:-1:-1;8268:26:0;;;;-1:-1:-1;;;;;8268:26:0;;;14187:159;;;;;;;;;;-1:-1:-1;14187:159:0;;;;;:::i;:::-;;:::i;:::-;;;4604:14:1;;4597:22;4579:41;;4567:2;4552:18;14187:159:0;4439:187:1;16005:140:0;;;;;;;;;;-1:-1:-1;16005:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;16103:34:0;16079:4;16103:34;;;:25;:34;;;;;;;;;16005:140;19917:112;;;;;;;;;;;;;:::i;20928:866::-;;;;;;;;;;-1:-1:-1;20928:866:0;;;;;:::i;:::-;;:::i;28852:1519::-;;;;;;;;;;-1:-1:-1;28852:1519:0;;;;;:::i;:::-;;:::i;9474:26::-;;;;;;;;;;-1:-1:-1;9474:26:0;;;;-1:-1:-1;;;9474:26:0;;;;;;13231:83;;;;;;;;;;;;;:::i;38387:194::-;;;;;;;;;;-1:-1:-1;38387:194:0;;;;;:::i;:::-;;:::i;14672:306::-;;;;;;;;;;-1:-1:-1;14672:306:0;;;;;:::i;:::-;;:::i;19531:264::-;;;;;;;;;;-1:-1:-1;19531:264:0;;;;;:::i;:::-;;:::i;28306:410::-;;;;;;;;;;-1:-1:-1;28306:410:0;;;;;:::i;:::-;;:::i;8065:42::-;;;;;;;;;;;;8103:4;8065:42;;30379:250;;;;;;;;;;-1:-1:-1;30379:250:0;;;;;:::i;:::-;;:::i;9175:25::-;;;;;;;;;;;;;;;;13320:80;;;;;;;;;;-1:-1:-1;13320:80:0;;7083:1;7847:36:1;;7835:2;7820:18;13320:80:0;7705:184:1;17412:397:0;;;;;;;;;;-1:-1:-1;17412:397:0;;;;;:::i;:::-;;:::i;17133:110::-;;;;;;;;;;-1:-1:-1;17133:110:0;;;;;:::i;:::-;;:::i;16153:140::-;;;;;;;;;;-1:-1:-1;16153:140:0;;;;;:::i;:::-;;:::i;19254:269::-;;;;;;;;;;-1:-1:-1;19254:269:0;;;;;:::i;:::-;;:::i;8301:21::-;;;;;;;;;;-1:-1:-1;8301:21:0;;;;-1:-1:-1;;;;;8301:21:0;;;37308:204;;;;;;;;;;;;;:::i;9331:34::-;;;;;;;;;;-1:-1:-1;9331:34:0;;;;;;;;36541:297;;;;;;;;;;-1:-1:-1;36541:297:0;;;;;:::i;:::-;;:::i;11989:654::-;;;;;;;;;;-1:-1:-1;11989:654:0;;;;;:::i;:::-;;:::i;15870:127::-;;;;;;;;;;-1:-1:-1;15870:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;15961:28:0;15937:4;15961:28;;;:19;:28;;;;;;;;;15870:127;9372:36;;;;;;;;;;-1:-1:-1;9372:36:0;;;;;;;;;;;16301:134;;;;;;;;;;-1:-1:-1;16301:134:0;;;;;:::i;:::-;;:::i;15498:224::-;;;;;;;;;;-1:-1:-1;15498:224:0;;;;;:::i;:::-;;:::i;15730:132::-;;;;;;;;;;-1:-1:-1;15730:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15824:30:0;15800:4;15824:30;;;:21;:30;;;;;;;;;15730:132;19803:106;;;;;;;;;;;;;:::i;13808:198::-;;;;;;;;;;-1:-1:-1;13808:198:0;;;;;:::i;:::-;;:::i;12651:225::-;;;;;;;;;;;;;:::i;14986:504::-;;;;;;;;;;-1:-1:-1;14986:504:0;;;;;:::i;:::-;;:::i;18781:465::-;;;;;;;;;;-1:-1:-1;18781:465:0;;;;;:::i;:::-;;:::i;9687:36::-;;;;;;;;;;;;;;;;28724:120;;;;;;;;;;-1:-1:-1;28724:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;28816:20:0;28792:4;28816:20;;;:11;:20;;;;;;;;;28724:120;13582:79;;;;;;;;;;-1:-1:-1;13652:6:0;;;;;-1:-1:-1;;;;;13652:6:0;13582:79;;27704:594;;;;;;;;;;;;;:::i;32658:26::-;;;;;;;;;;;;;;;;17817:956;;;;;;;;;;-1:-1:-1;17817:956:0;;;;;:::i;:::-;;:::i;13406:84::-;;;;;;;;;;-1:-1:-1;13480:7:0;;;;;;;;;;;;-1:-1:-1;;;13480:7:0;;;;13406:84;;38589:102;;;;;;;;;;-1:-1:-1;38589:102:0;;;;;:::i;:::-;;:::i;14014:165::-;;;;;;;;;;-1:-1:-1;14014:165:0;;;;;:::i;:::-;;:::i;36846:272::-;;;;;;;;;;-1:-1:-1;36846:272:0;;;;;:::i;:::-;;:::i;37126:174::-;;;;;;;;;;;;;:::i;9732:28::-;;;;;;;;;;-1:-1:-1;9732:28:0;;;;;;;;20744:176;;;;;;;;;;-1:-1:-1;20744:176:0;;;;;:::i;:::-;;:::i;37840:178::-;;;;;;;;;;;;;:::i;7780:276::-;;;;;;;;;;-1:-1:-1;7780:276:0;;;;;;;;;;;;;;;-1:-1:-1;;;7780:276:0;;;;;-1:-1:-1;;;7780:276:0;;;;;-1:-1:-1;;;7780:276:0;;;;;-1:-1:-1;;;7780:276:0;;;;;-1:-1:-1;;;7780:276:0;;;;;-1:-1:-1;;;7780:276:0;;;;;-1:-1:-1;;;7780:276:0;;;;;;;;;;10556:6:1;10589:15;;;10571:34;;10641:15;;;10636:2;10621:18;;10614:43;10693:15;;;10673:18;;;10666:43;;;;10745:15;;;10740:2;10725:18;;10718:43;10798:15;;;10792:3;10777:19;;10770:44;10851:15;;10845:3;10830:19;;10823:44;10904:15;;10898:3;10883:19;;10876:44;10957:15;;10951:3;10936:19;;10929:44;11010:15;;;11004:3;10989:19;;10982:44;10533:3;10518:19;7780:276:0;10193:839:1;9507:46:0;;;;;;;;;;;;;;;;13667:133;;;;;;;;;;-1:-1:-1;13667:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13769:19:0;;;13751:7;13769:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13667:133;32691:21;;;;;;;;;;;;;;;;16661:147;;;;;;;;;;-1:-1:-1;16661:147:0;;;;;:::i;:::-;;:::i;37520:312::-;;;;;;;;;;-1:-1:-1;37520:312:0;;;;;:::i;:::-;;:::i;8634:429::-;;;;;;;;;;-1:-1:-1;8634:429:0;;;;;;;;;;;;-1:-1:-1;;;;;8634:429:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11432:15:1;;;11414:34;;11484:15;;;11479:2;11464:18;;11457:43;11536:15;;;11516:18;;;11509:43;;;;11588:15;;11583:2;11568:18;;11561:43;11641:15;;;11635:3;11620:19;;11613:44;11363:3;11348:19;8634:429:0;11037:626:1;20037:699:0;;;;;;;;;;-1:-1:-1;20037:699:0;;;;;:::i;:::-;;:::i;9094:39::-;;;;;;;;;;-1:-1:-1;9094:39:0;;;;;;;;;;;16998:127;;;;;;;;;;-1:-1:-1;16998:127:0;;;;;:::i;:::-;;:::i;16443:148::-;;;;;;;;;;-1:-1:-1;16443:148:0;;;;;:::i;:::-;;:::i;38026:353::-;;;;;;;;;;-1:-1:-1;38026:353:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;17251:153::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;;;;;;;;;17346:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;17346:50:0;;12880:14:1;;12873:22;17346:50:0::1;::::0;::::1;12855:41:1::0;12939:14;;12932:22;12912:18;;;12905:50;17346:11:0;;;::::1;-1:-1:-1::0;;;;;17346:11:0::1;::::0;:26:::1;::::0;12828:18:1;;17346:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17251:153:::0;;:::o;16816:174::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;16924:11:::1;::::0;:58:::1;::::0;-1:-1:-1;;;16924:58:0;;:11;;;::::1;-1:-1:-1::0;;;;;16924:11:0::1;::::0;:39:::1;::::0;:58:::1;::::0;16964:8;;16974:7;;16924:58:::1;;;:::i;14187:159::-:0;14262:4;14279:37;14288:10;14300:7;14309:6;14279:8;:37::i;:::-;-1:-1:-1;14334:4:0;14187:159;;;;;:::o;19917:112::-;19962:7;20007:13;7083:1;20007:2;:13;:::i;:::-;19989:14;;:32;;;;:::i;:::-;19982:39;;19917:112;:::o;20928:866::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;21032:23:::1;::::0;::::1;;21024:32;;;::::0;::::1;;-1:-1:-1::0;;;;;21075:23:0;::::1;21093:4;21075:23;::::0;::::1;::::0;:51:::1;;-1:-1:-1::0;;;;;;21102:24:0;::::1;21121:4;21102:24;;21075:51;21067:75;;;::::0;-1:-1:-1;;;21067:75:0;;15718:2:1;21067:75:0::1;::::0;::::1;15700:21:1::0;15757:2;15737:18;;;15730:30;-1:-1:-1;;;15776:18:1;;;15769:41;15827:18;;21067:75:0::1;15516:335:1::0;21067:75:0::1;21167:7;-1:-1:-1::0;;;;;21157:17:0::1;:6;-1:-1:-1::0;;;;;21157:17:0::1;::::0;21153:634:::1;;-1:-1:-1::0;;;;;21191:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;21220:4:::1;-1:-1:-1::0;;21191:33:0;;::::1;::::0;::::1;::::0;;;21239:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;21286:34:::1;::::0;21191:26;;21286:19:::1;:34::i;:::-;21335:36;21357:7;21366:4;21335:21;:36::i;:::-;20928:866:::0;;:::o;21153:634::-:1;-1:-1:-1::0;;;;;21404:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;21432:4:::1;-1:-1:-1::0;;21404:32:0;;::::1;::::0;::::1;::::0;;;21451:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;21499:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;21545:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;21592:33:::1;::::0;21404:25;;21592:19:::1;:33::i;:::-;21640:34;21660:7;21669:4;21640:19;:34::i;:::-;21689:35;21711:6;21719:4;28852:1519:::0;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;28946:7:::1;28942:1422;;;-1:-1:-1::0;;;;;28979:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;28978:21;28970:62;;;::::0;-1:-1:-1;;;28970:62:0;;16058:2:1;28970:62:0::1;::::0;::::1;16040:21:1::0;16097:2;16077:18;;;16070:30;-1:-1:-1;;;16116:18:1;;;16109:58;16184:18;;28970:62:0::1;15856:352:1::0;28970:62:0::1;-1:-1:-1::0;;;;;29050:16:0;::::1;29069:1;29050:16:::0;;;::::1;::::0;;;;;;;:20;29047:116:::1;;-1:-1:-1::0;;;;;29130:16:0;::::1;:7;:16:::0;;;::::1;::::0;;;;;;;29110:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;29091:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;29047:116:::1;-1:-1:-1::0;;;;;29177:20:0;;::::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;29177:27:0::1;29200:4;29177:27;::::0;;29233:6:::1;::::0;;;::::1;29222:17;29219:79;;29259:9;:23:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;29259:23:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;29259:23:0::1;-1:-1:-1::0;;;;;29259:23:0;::::1;;::::0;;20928:866;;:::o;28942:1422::-:1;29320:7;29315:1049;;-1:-1:-1::0;;;;;29352:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;29344:61;;;::::0;-1:-1:-1;;;29344:61:0;;16415:2:1;29344:61:0::1;::::0;::::1;16397:21:1::0;16454:2;16434:18;;;16427:30;-1:-1:-1;;;16473:18:1;;;16466:58;16541:18;;29344:61:0::1;16213:352:1::0;29344:61:0::1;29435:6;::::0;-1:-1:-1;;;;;29435:6:0;;::::1;29424:17:::0;;::::1;::::0;29420:933:::1;;29500:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;29481:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:29:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;29462:16:0;::::1;:7;:16:::0;;;::::1;::::0;;;;;;;:48;;;;29529:7:::1;:16:::0;;;;;:20;;;29568:11:::1;:20:::0;;;:28;;-1:-1:-1;;29568:28:0::1;::::0;;20928:866;;:::o;29420:933::-:1;29621:9;:16:::0;29641:1:::1;29621:21:::0;29618:735:::1;;29701:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;29682:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:29:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;29663:16:0;::::1;:7;:16:::0;;;::::1;::::0;;;;;;;:48;;;;29730:7:::1;:16:::0;;;;;:20;;;29769:11:::1;:20:::0;;;:28;;-1:-1:-1;;29769:28:0::1;::::0;;29816:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;29816:15:0;;;;;-1:-1:-1;;;;;;29816:15:0::1;::::0;;;;;20928:866;;:::o;29618:735::-:1;29877:9;29872:466;29896:9;:16:::0;29892:20;::::1;29872:466;;;29962:7;-1:-1:-1::0;;;;;29946:23:0::1;:9;29956:1;29946:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;29946:12:0::1;:23:::0;29942:377:::1;;30013:9;30023:16:::0;;:20:::1;::::0;30042:1:::1;::::0;30023:20:::1;:::i;:::-;30013:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;29998:9:::1;:12:::0;;-1:-1:-1;;;;;30013:31:0;;::::1;::::0;30008:1;;29998:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;29998:46:0::1;-1:-1:-1::0;;;;;29998:46:0;;::::1;;::::0;;30071:16;;::::1;::::0;;-1:-1:-1;30071:16:0;;;;;;:20;30156:10:::1;:8;:10::i;:::-;-1:-1:-1::0;;;;;30137:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:29:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;30118:16:0;::::1;:7;:16:::0;;;::::1;::::0;;;;;;;:48;;;;30193:11:::1;:20:::0;;;:28;;-1:-1:-1;;30193:28:0::1;::::0;;30248:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;30248:15:0;;;;;-1:-1:-1;;;;;;30248:15:0::1;::::0;;;;;29872:466:::1;28852:1519:::0;;:::o;29942:377::-:1;29914:3:::0;::::1;::::0;::::1;:::i;:::-;;;;29872:466;;;;28852:1519:::0;;:::o;13231:83::-;13286:7;7145:13;7083:1;7145:2;:13;:::i;:::-;7128:30;;6922:17;7128:30;:::i;38387:194::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;38487:14:::1;::::0;-1:-1:-1;;;38487:14:0;::::1;;;38486:15;38478:52;;;;-1:-1:-1::0;;;38478:52:0::1;;;;;;;:::i;:::-;38562:11;38566:7:::0;38562:2:::1;:11;:::i;:::-;38553:20;::::0;:6;:20:::1;:::i;:::-;38541:9;:32:::0;-1:-1:-1;;38387:194:0:o;14672:306::-;-1:-1:-1;;;;;14793:19:0;;14772:4;14793:19;;;:11;:19;;;;;;;;14813:10;14793:31;;;;;;;;-1:-1:-1;;14793:52:0;14789:126;;-1:-1:-1;;;;;14862:19:0;;;;;;:11;:19;;;;;;;;14882:10;14862:31;;;;;;;:41;;14897:6;;14862:19;:41;;14897:6;;14862:41;:::i;:::-;;;;-1:-1:-1;;14789:126:0;14934:36;14944:6;14952:9;14963:6;14934:9;:36::i;:::-;14927:43;14672:306;-1:-1:-1;;;;14672:306:0:o;19531:264::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;19673:3:::1;7145:13;7083:1;7145:2;:13;:::i;:::-;7128:30;::::0;6922:17:::1;7128:30;:::i;:::-;19663:13;;;;:::i;:::-;19651:7:::0;19640;7145:13:::1;7083:1;7145:2;:13;:::i;:::-;7128:30;::::0;6922:17:::1;7128:30;:::i;:::-;19630:17;;;;:::i;:::-;19629:29;;;;:::i;:::-;:48;;19621:109;;;::::0;-1:-1:-1;;;19621:109:0;;17971:2:1;19621:109:0::1;::::0;::::1;17953:21:1::0;18010:2;17990:18;;;17983:30;18049:34;18029:18;;;18022:62;-1:-1:-1;;;18100:18:1;;;18093:46;18156:19;;19621:109:0::1;17769:412:1::0;19621:109:0::1;19780:7:::0;19769;7145:13:::1;7083:1;7145:2;:13;:::i;:::-;7128:30;::::0;6922:17:::1;7128:30;:::i;:::-;19759:17;;;;:::i;:::-;19758:29;;;;:::i;:::-;19741:14;:46:::0;-1:-1:-1;;19531:264:0:o;28306:410::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;28441:7:::1;:14;28422:8;:15;:33;28414:67;;;::::0;-1:-1:-1;;;28414:67:0;;18388:2:1;28414:67:0::1;::::0;::::1;18370:21:1::0;18427:2;18407:18;;;18400:30;-1:-1:-1;;;18446:18:1;;;18439:51;18507:18;;28414:67:0::1;18186:345:1::0;28414:67:0::1;28497:7;28492:217;28514:8;:15;28510:1;:19;;;28492:217;;;28584:7;28592:1;28584:10;;;;;;;;;;:::i;:::-;;;;;;;28559:21;28569:10;28559:9;:21::i;:::-;:35;;28551:44;;;::::0;::::1;;28610:87;28627:10;28639:8;28648:1;28639:11;;;;;;;;;;:::i;:::-;;;;;;;7083:1;28663:2;:13;;;;:::i;:::-;28652:7;28660:1;28652:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;28678:5;28685::::0;28692:4:::1;28610:16;:87::i;:::-;-1:-1:-1::0;28531:3:0;::::1;::::0;::::1;:::i;:::-;;;;28492:217;;30379:250:::0;30445:7;30484;;30473;:18;;30465:73;;;;-1:-1:-1;;;30465:73:0;;18918:2:1;30465:73:0;;;18900:21:1;18957:2;18937:18;;;18930:30;18996:34;18976:18;;;18969:62;-1:-1:-1;;;19047:18:1;;;19040:40;19097:19;;30465:73:0;18716:406:1;30465:73:0;30549:19;30572:10;:8;:10::i;:::-;30549:33;-1:-1:-1;30600:21:0;30549:33;30600:7;:21;:::i;:::-;30593:28;30379:250;-1:-1:-1;;;30379:250:0:o;17412:397::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;8103:4:::1;17519:6;:21;;;;:65;;;;;8153:4;17561:7;:23;;;;17519:65;:117;;;;;8207:4;17605:11;:31;;;;17519:117;17511:170;;;::::0;-1:-1:-1;;;17511:170:0;;19329:2:1;17511:170:0::1;::::0;::::1;19311:21:1::0;19368:2;19348:18;;;19341:30;-1:-1:-1;;;19387:18:1;;;19380:53;19450:18;;17511:170:0::1;19127:347:1::0;17511:170:0::1;17692:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;17728:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;17766:35:0::1;-1:-1:-1::0;;;17766:35:0;;;::::1;;::::0;;;::::1;::::0;;17412:397::o;17133:110::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;17202:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;17202:33:0;;:11;;;::::1;-1:-1:-1::0;;;;;17202:11:0::1;::::0;:24:::1;::::0;:33:::1;::::0;17227:7;;17202:33:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17133:110:::0;:::o;16153:140::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16245:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;16245:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16153:140::o;19254:269::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;19395:4:::1;7145:13;7083:1;7145:2;:13;:::i;:::-;7128:30;::::0;6922:17:::1;7128:30;:::i;:::-;19385:14;;;;:::i;:::-;19373:7:::0;19362;7145:13:::1;7083:1;7145:2;:13;:::i;:::-;7128:30;::::0;6922:17:::1;7128:30;:::i;:::-;19352:17;;;;:::i;:::-;19351:29;;;;:::i;:::-;:49;;19343:117;;;::::0;-1:-1:-1;;;19343:117:0;;19681:2:1;19343:117:0::1;::::0;::::1;19663:21:1::0;19720:2;19700:18;;;19693:30;19759:34;19739:18;;;19732:62;-1:-1:-1;;;19810:18:1;;;19803:53;19873:19;;19343:117:0::1;19479:419:1::0;19343:117:0::1;19508:7:::0;19497;7145:13:::1;7083:1;7145:2;:13;:::i;:::-;7128:30;::::0;6922:17:::1;7128:30;:::i;:::-;19487:17;;;;:::i;:::-;19486:29;;;;:::i;:::-;19471:12;:44:::0;-1:-1:-1;;19254:269:0:o;37308:204::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;37379:14:::1;::::0;-1:-1:-1;;;37379:14:0;::::1;;;37371:43;;;;-1:-1:-1::0;;;37371:43:0::1;;;;;;;:::i;:::-;37425:7;::::0;37463:6:::1;::::0;37425:46:::1;::::0;-1:-1:-1;;;37425:46:0;;-1:-1:-1;;;;;37425:7:0;;::::1;::::0;:29:::1;::::0;:46:::1;::::0;:7:::1;37463:6:::0;;::::1;::::0;;::::1;::::0;37425:46:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;37482:14:0::1;:22:::0;;-1:-1:-1;;;;37482:22:0::1;::::0;;-1:-1:-1;;37308:204:0:o;36541:297::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;36622:14:::1;::::0;-1:-1:-1;;;36622:14:0;::::1;;;36621:15;36613:52;;;;-1:-1:-1::0;;;36613:52:0::1;;;;;;;:::i;:::-;36694:15;36684:7;:25;36676:61;;;::::0;-1:-1:-1;;;36676:61:0;;20674:2:1;36676:61:0::1;::::0;::::1;20656:21:1::0;20713:2;20693:18;;;20686:30;-1:-1:-1;;;20732:18:1;;;20725:53;20795:18;;36676:61:0::1;20472:347:1::0;36676:61:0::1;36775:7;36792:4;36758:40;;;;;:::i;:::-;20998:25:1::0;;;-1:-1:-1;;;;;21059:32:1;21054:2;21039:18;;21032:60;20986:2;20971:18;36758:40:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;36748:7:0::1;:50:::0;;-1:-1:-1;;;;;;36809:21:0;-1:-1:-1;;;;;36748:50:0;;;::::1;36809:21:::0;;;;-1:-1:-1;;;36809:21:0::1;::::0;;-1:-1:-1;36541:297:0:o;11989:654::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12068:22:0;::::1;12060:96;;;;-1:-1:-1::0;;;12060:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;12175:16:0;::::1;::::0;12167:90:::1;;;;-1:-1:-1::0;;;12167:90:0::1;;;;;;;:::i;:::-;12288:6;::::0;12268:34:::1;::::0;12288:6:::1;::::0;::::1;-1:-1:-1::0;;;;;12288:6:0::1;12296:5;12268:19;:34::i;:::-;12313:35;12333:8;12343:4;12313:19;:35::i;:::-;12383:6;::::0;12393:1:::1;::::0;12373:17:::1;::::0;12383:6:::1;::::0;::::1;-1:-1:-1::0;;;;;12383:6:0::1;12373:9;:17::i;:::-;:21;12369:127;;;12428:6;::::0;12411:73:::1;::::0;12428:6:::1;::::0;::::1;-1:-1:-1::0;;;;;12428:6:0::1;12436:8:::0;12446:17:::1;12428:6:::0;12446:9:::1;:17::i;12411:73::-;;12369:127;12535:6;::::0;;-1:-1:-1;;;;;12552:17:0;;::::1;12535:6;12552:17:::0;;::::1;-1:-1:-1::0;;;;;;12552:17:0;::::1;;::::0;;;12585:40:::1;::::0;12535:6;;;::::1;;::::0;;;-1:-1:-1;;;;;;;;;;;12585:40:0;12516:16:::1;::::0;12585:40:::1;12049:594;11989:654:::0;:::o;16301:134::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16389:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16389:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16301:134::o;15498:224::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;15582:16:::1;::::0;::::1;::::0;::::1;;;15581:17;15573:26;;;::::0;::::1;;15641:4;-1:-1:-1::0;;;;;15618:28:0;::::1;::::0;15610:55:::1;;;::::0;-1:-1:-1;;;15610:55:0;;21735:2:1;15610:55:0::1;::::0;::::1;21717:21:1::0;21774:2;21754:18;;;21747:30;-1:-1:-1;;;21793:18:1;;;21786:44;21847:18;;15610:55:0::1;21533:338:1::0;15610:55:0::1;15676:11;:38:::0;;-1:-1:-1;;;;;15676:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;15676:38:0;;::::1;::::0;;;::::1;::::0;;15498:224::o;19803:106::-;19844:7;19887:13;7083:1;19887:2;:13;:::i;:::-;19871:12;;:30;;;;:::i;13808:198::-;-1:-1:-1;;;;;13898:20:0;;13874:7;13898:20;;;:11;:20;;;;;;;;13894:49;;;-1:-1:-1;;;;;;13927:16:0;;;;;:7;:16;;;;;;;13808:198::o;13894:49::-;-1:-1:-1;;;;;13981:16:0;;:7;:16;;;;;;;;;;;13961:37;;:19;:37::i;12651:225::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;12730:6:::1;::::0;12710:34:::1;::::0;12730:6:::1;::::0;::::1;-1:-1:-1::0;;;;;12730:6:0::1;12738:5;12710:19;:34::i;:::-;12774:6;::::0;;-1:-1:-1;;;;;;12791:19:0;::::1;::::0;;;12826:42:::1;::::0;12774:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;12774:6:0::1;::::0;-1:-1:-1;;12774:6:0;;-1:-1:-1;;;;;;;;;;;12826:42:0;-1:-1:-1;;12826:42:0::1;12699:177;12651:225::o:0;14986:504::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;15067:16;::::1;;15078:5;15067:16:::0;15063:420:::1;;-1:-1:-1::0;;;;;15100:13:0;;::::1;15116:5;15100:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;15100:21:0::1;::::0;;15136:11:::1;::::0;:34;;-1:-1:-1;;;15136:34:0;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:34:::1;::::0;15108:4;;15116:5;15136:34:::1;;;:::i;15063:420::-;15207:17;::::0;:22;15203:136:::1;;15296:6;15276:17;;15258:15;:35;;;;:::i;:::-;:44;15250:73;;;::::0;-1:-1:-1;;;15250:73:0;;22078:2:1;15250:73:0::1;::::0;::::1;22060:21:1::0;22117:2;22097:18;;;22090:30;-1:-1:-1;;;22136:18:1;;;22129:46;22192:18;;15250:73:0::1;21876:340:1::0;15250:73:0::1;-1:-1:-1::0;;;;;15353:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;15353:20:0::1;15369:4;15353:20:::0;;::::1;::::0;;;15408:15:::1;15388:17;:35:::0;15438:11:::1;::::0;:33;;-1:-1:-1;;;15438:33:0;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:33:::1;::::0;15361:4;;15438:33:::1;;;:::i;18781:465::-:0;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;18975:28;:47;;-1:-1:-1;;;;;;18975:47:0;;::::1;-1:-1:-1::0;;;;;18975:47:0;;::::1;;::::0;;;:11:::1;19033:42:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;19086:15;:30;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;19127:27;:54;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;19192:23;:46;;;;::::1;::::0;::::1;;::::0;;18781:465::o;27704:594::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;27766:14:::1;::::0;::::1;;27765:15;27757:52;;;::::0;-1:-1:-1;;;27757:52:0;;22423:2:1;27757:52:0::1;::::0;::::1;22405:21:1::0;22462:2;22442:18;;;22435:30;-1:-1:-1;;;22481:18:1;;;22474:54;22545:18;;27757:52:0::1;22221:348:1::0;27757:52:0::1;27828:16;::::0;::::1;::::0;::::1;;;27820:53;;;::::0;-1:-1:-1;;;27820:53:0;;22776:2:1;27820:53:0::1;::::0;::::1;22758:21:1::0;22815:2;22795:18;;;22788:30;-1:-1:-1;;;22834:18:1;;;22827:54;22898:18;;27820:53:0::1;22574:348:1::0;27820:53:0::1;27895:11;::::0;;;::::1;-1:-1:-1::0;;;;;27895:11:0::1;27884:105;;27937:11;:40:::0;;-1:-1:-1;;;;;;27937:40:0::1;27971:4;27937:40:::0;::::1;;::::0;;27884:105:::1;28003:11;::::0;28025:6:::1;::::0;28003:87:::1;::::0;-1:-1:-1;;;28003:87:0;;-1:-1:-1;;;;;28025:6:0;;::::1;28003:87;::::0;::::1;23150:51:1::0;23249:10;28040:12:0::1;23237:23:1::0;23217:18;;;23210:51;-1:-1:-1;;;;;28062:15:0::1;23297:31:1::0;23277:18;;;23270:59;7083:1:0::1;23345:18:1::0;;;23338:45;28003:11:0;;;::::1;;::::0;:21:::1;::::0;23122:19:1;;28003:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27999:103:::0;28112:14:::1;:21:::0;;-1:-1:-1;;28112:21:0;;::::1;28129:4;28112:21;::::0;;;28144:23:::1;:31:::0;;;;::::1;::::0;;28213:6:::1;::::0;28229:5:::1;::::0;28203:17:::1;::::0;-1:-1:-1;;;;;28213:6:0::1;28203:9;:17::i;:::-;:22;::::0;28223:2:::1;28203:22;:::i;:::-;28202:32;;;;:::i;:::-;28186:13;:48:::0;28269:6:::1;::::0;28285:5:::1;::::0;28259:17:::1;::::0;-1:-1:-1;;;;;28269:6:0::1;28259:9;:17::i;:::-;:22;::::0;28279:2:::1;28259:22;:::i;:::-;28258:32;;;;:::i;:::-;28245:10;:45:::0;27704:594::o;17817:956::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;18176:16:::1;18149:7;:24;;;:43;;;;;;;;;;;;;;;;;;18224:10;18203:7;:18;;;:31;;;;;;;;;;;;;;;;;;18265:9;18245:7;:17;;;:29;;;;;;;;;;;;;;;;;;18305:9;18285:7;:17;;;:29;;;;;;;;;;;;;;;;;;18339:3;18325:7;:11;;;:17;;;;;;;;;;;;;;;;;;18379:15;18353:7;:23;;;:41;;;;;;;;;;;;;;;;;;18427:11;18405:7;:19;;;:33;;;;;;;;;;;;;;;;;;18464:4;18449:7;:12;;;:19;;;;;;;;;;;;;;;;;;18568:9;18549:16;18531:15;18525:3;18511:11;18499:9;:23;;;;:::i;:::-;:29;;;;:::i;:::-;:47;;;;:::i;:::-;:66;;;;:::i;:::-;:78;;;;:::i;:::-;18479:7;:98:::0;;-1:-1:-1;;;;18479:98:0::1;-1:-1:-1::0;;;18479:98:0::1;::::0;;::::1;;;::::0;;18623:9:::1;:17:::0;-1:-1:-1;;18604:36:0::1;::::0;18623:17;;::::1;::::0;::::1;::::0;18604:16:::1;:36;:::i;:::-;18700:7;:12:::0;18588:52:::1;::::0;;::::1;::::0;-1:-1:-1;18588:52:0;;18700:12;;::::1;::::0;::::1;::::0;18659:38:::1;::::0;18679:18;;::::1;::::0;-1:-1:-1;;;18659:17:0;::::1;;:38;:::i;:::-;:53;;;;:::i;:::-;:62;;;;18651:114;;;::::0;-1:-1:-1;;;18651:114:0;;23769:2:1;18651:114:0::1;::::0;::::1;23751:21:1::0;23808:2;23788:18;;;23781:30;23847:34;23827:18;;;23820:62;-1:-1:-1;;;23898:18:1;;;23891:37;23945:19;;18651:114:0::1;23567:403:1::0;18651:114:0::1;18138:635;17817:956:::0;;;;;;;;:::o;38589:102::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;38664:9:::1;:19:::0;;-1:-1:-1;;38664:19:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38589:102::o;14014:165::-;14092:4;14109:40;14119:10;14131:9;14142:6;14109:9;:40::i;:::-;-1:-1:-1;14167:4:0;;14014:165;-1:-1:-1;;;14014:165:0:o;36846:272::-;36943:14;;36909:13;;-1:-1:-1;;;36943:14:0;;;;36935:43;;;;-1:-1:-1;;;36935:43:0;;;;;;;:::i;:::-;36989:16;37031:21;;37009:18;37019:7;37009:9;:18::i;:::-;37071:7;;:39;;-1:-1:-1;;;37071:39:0;;37009:43;;;;;;-1:-1:-1;;;;;;37071:7:0;;:17;;:39;;37089:7;;37009:43;;37071:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;37071:39:0;;;;;;;;;;;;:::i;37126:174::-;37209:14;;37181:7;;-1:-1:-1;;;37209:14:0;;;;37201:43;;;;-1:-1:-1;;;37201:43:0;;;;;;;:::i;:::-;37262:7;;;;;;;;;-1:-1:-1;;;;;37262:7:0;-1:-1:-1;;;;;37262:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20744:176::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;20824:19:::1;:33:::0;;;::::1;;;;-1:-1:-1::0;;20824:33:0;;::::1;;::::0;;20873:39:::1;::::0;-1:-1:-1;;;;;;;;;;;20873:39:0;::::1;::::0;20846:11;4604:14:1;4597:22;4579:41;;4567:2;4552:18;;4439:187;20873:39:0::1;;;;;;;;20744:176:::0;:::o;37840:178::-;37924:14;;37896:7;;-1:-1:-1;;;37924:14:0;;;;37916:43;;;;-1:-1:-1;;;37916:43:0;;;;;;;:::i;:::-;37977:7;;;;;;;;;-1:-1:-1;;;;;37977:7:0;-1:-1:-1;;;;;37977:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16661:147;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;16751:11:::1;::::0;:49:::1;::::0;-1:-1:-1;;;16751:49:0;;:11;;;::::1;-1:-1:-1::0;;;;;16751:11:0::1;::::0;:31:::1;::::0;:49:::1;::::0;16783:7;;16792;;16751:49:::1;;;:::i;37520:312::-:0;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;37634:14:::1;::::0;-1:-1:-1;;;37634:14:0;::::1;;;37633:15;37625:52;;;;-1:-1:-1::0;;;37625:52:0::1;;;;;;;:::i;:::-;37741:7:::0;37723:14;7145:13:::1;7083:1;7145:2;:13;:::i;:::-;7128:30;::::0;6922:17:::1;7128:30;:::i;:::-;37713:24;;;;:::i;:::-;37712:36;;;;:::i;:::-;37688:21;:60:::0;37817:7;37782:31:::1;37799:14:::0;6922:17:::1;37782:31;:::i;:::-;37781:43;;;;:::i;:::-;37759:19;:65:::0;-1:-1:-1;;37520:312:0:o;20037:699::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;20237:16;20217;7145:13:::1;7083:1;7145:2;:13;:::i;:::-;7128:30;::::0;6922:17:::1;7128:30;:::i;:::-;20207:26;;;;:::i;:::-;20206:47;;;;:::i;:::-;20190:13;:63:::0;20305:13;20288;7145::::1;7083:1;7145:2;:13;:::i;:::-;7128:30;::::0;6922:17:::1;7128:30;:::i;:::-;20278:23;;;;:::i;:::-;20277:41;;;;:::i;:::-;20264:10;:54:::0;;;20337:13:::1;::::0;:27:::1;;20329:73;;;::::0;-1:-1:-1;;;20329:73:0;;25090:2:1;20329:73:0::1;::::0;::::1;25072:21:1::0;25129:2;25109:18;;;25102:30;25168:34;25148:18;;;25141:62;-1:-1:-1;;;25219:18:1;;;25212:31;25260:19;;20329:73:0::1;24888:397:1::0;20329:73:0::1;20446:6;::::0;8254:5:::1;::::0;20436:17:::1;::::0;-1:-1:-1;;;;;20446:6:0::1;20436:9;:17::i;:::-;:23;::::0;20456:3:::1;20436:23;:::i;:::-;20435:44;;;;:::i;:::-;20421:10;;:58;;20413:106;;;::::0;-1:-1:-1;;;20413:106:0;;25492:2:1;20413:106:0::1;::::0;::::1;25474:21:1::0;25531:2;25511:18;;;25504:30;25570:34;25550:18;;;25543:62;-1:-1:-1;;;25621:18:1;;;25614:33;25664:19;;20413:106:0::1;25290:399:1::0;20413:106:0::1;20562:9;7145:13;7083:1;7145:2;:13;:::i;:::-;7128:30;::::0;6922:17:::1;7128:30;:::i;:::-;20552:19;;;;:::i;:::-;20538:10;;:33;;20530:92;;;;-1:-1:-1::0;;;20530:92:0::1;;;;;;;:::i;:::-;20668:9;7145:13;7083:1;7145:2;:13;:::i;:::-;7128:30;::::0;6922:17:::1;7128:30;:::i;:::-;20658:19;;;;:::i;:::-;20641:13;;:36;;20633:95;;;;-1:-1:-1::0;;;20633:95:0::1;;;;;;;:::i;:::-;20037:699:::0;;;;:::o;16998:127::-;17083:11;;:34;;-1:-1:-1;;;17083:34:0;;17059:4;;17083:11;;;-1:-1:-1;;;;;17083:11:0;;:25;;:34;;17109:7;;17083:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16443:148::-;11843:6;;;;;-1:-1:-1;;;;;11843:6:0;11853:10;11843:20;11835:50;;;;-1:-1:-1;;;11835:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16539:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;16539:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16443:148::o;38026:353::-;38130:7;;:31;;-1:-1:-1;;;38130:31:0;;;;;368:25:1;;;38086:7:0;;;;;;-1:-1:-1;;;;;38130:7:0;;:24;;341:18:1;;38130:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38112:49;;38172:13;38222:21;;38200:18;38210:7;38200:9;:18::i;:::-;:43;38196:139;;-1:-1:-1;38270:4:0;38196:139;;;-1:-1:-1;38318:5:0;38196:139;38353:7;;38362:8;;-1:-1:-1;38026:353:0;-1:-1:-1;;38026:353:0:o;14354:310::-;-1:-1:-1;;;;;14449:20:0;;14441:52;;;;-1:-1:-1;;;14441:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14512:21:0;;14504:53;;;;-1:-1:-1;;;14504:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14570:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;14623:33;;368:25:1;;;14623:33:0;;341:18:1;14623:33:0;;;;;;;14354:310;;;:::o;35640:818::-;35720:7;;35682;;;7145:13;7083:1;7145:2;:13;:::i;:::-;7128:30;;6922:17;7128:30;:::i;:::-;35789:6;;-1:-1:-1;;;;;35789:6:0;35777:19;;;;:11;:19;;;;;;35738:25;;-1:-1:-1;35777:19:0;;35774:217;;;35825:6;;-1:-1:-1;;;;;35825:6:0;35817:7;:15;;;;;;;;;;;:25;-1:-1:-1;35817:25:0;:54;;-1:-1:-1;35854:6:0;;-1:-1:-1;;;;;35854:6:0;35846:15;;;;:7;:15;;;;;;:25;-1:-1:-1;35817:54:0;35813:84;;;7145:13;7083:1;7145:2;:13;:::i;:::-;7128:30;;6922:17;7128:30;:::i;:::-;35880:7;;:17;;;;:::i;:::-;35873:24;;;;35640:818;:::o;35813:84::-;35931:6;;-1:-1:-1;;;;;35931:6:0;35923:7;:15;;;;;;;;;;;35912:26;;;;:::i;:::-;35972:6;;-1:-1:-1;;;;;35972:6:0;35964:15;;;;:7;:15;;;;;;35912:26;;-1:-1:-1;35953:26:0;;;;:::i;:::-;;;35774:217;36004:9;:16;:20;36001:347;;36046:7;36041:296;36063:9;:16;36059:20;;;;36041:296;;;36133:7;36109;:21;36117:9;36127:1;36117:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;36117:12:0;36109:21;;;;;;;;;;;;;:31;;:66;;;36168:7;36144;:21;36152:9;36162:1;36152:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;36152:12:0;36144:21;;;;;;;;;;;;;:31;36109:66;36105:96;;;7145:13;7083:1;7145:2;:13;:::i;:::-;7128:30;;6922:17;7128:30;:::i;:::-;36184:7;;:17;;;;:::i;:::-;36177:24;;;;;35640:818;:::o;36105:96::-;36240:7;:21;36248:9;36258:1;36248:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;36248:12:0;36240:21;;;;;;;;;;;;;36230:31;;:7;:31;:::i;:::-;36220:41;;36300:7;:21;36308:9;36318:1;36308:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;36308:12:0;36300:21;;;;;;;;;;;;;36290:31;;:7;:31;:::i;:::-;36280:41;-1:-1:-1;36081:3:0;;;;:::i;:::-;;;;36041:296;;;;36001:347;7145:13;7083:1;7145:2;:13;:::i;:::-;7128:30;;6922:17;7128:30;:::i;:::-;36372:7;;:17;;;;:::i;:::-;36362:7;:27;36358:57;;;7145:13;7083:1;7145:2;:13;:::i;36358:57::-;36433:17;36443:7;36433;:17;:::i;22164:2163::-;22243:4;-1:-1:-1;;;;;22268:18:0;;22260:68;;;;-1:-1:-1;;;22260:68:0;;27165:2:1;22260:68:0;;;27147:21:1;27204:2;27184:18;;;27177:30;27243:34;27223:18;;;27216:62;-1:-1:-1;;;27294:18:1;;;27287:35;27339:19;;22260:68:0;26963:401:1;22260:68:0;-1:-1:-1;;;;;22347:16:0;;22339:64;;;;-1:-1:-1;;;22339:64:0;;27571:2:1;22339:64:0;;;27553:21:1;27610:2;27590:18;;;27583:30;27649:34;27629:18;;;27622:62;-1:-1:-1;;;27700:18:1;;;27693:33;27743:19;;22339:64:0;27369:399:1;22339:64:0;22431:1;22422:6;:10;22414:64;;;;-1:-1:-1;;;22414:64:0;;27975:2:1;22414:64:0;;;27957:21:1;28014:2;27994:18;;;27987:30;28053:34;28033:18;;;28026:62;-1:-1:-1;;;28104:18:1;;;28097:39;28153:19;;22414:64:0;27773:405:1;22414:64:0;-1:-1:-1;;;;;22577:13:0;;22489:8;22577:13;;;:7;:13;;;;;;22489:8;;;;22577:13;;22573:162;;;22613:4;22607:10;;22573:162;;;-1:-1:-1;;;;;22639:11:0;;;;;;:7;:11;;;;;;;;22635:100;;;22674:4;22667:11;;22635:100;;;-1:-1:-1;22719:4:0;22635:100;22749:20;22760:4;22766:2;22749:10;:20::i;:::-;22745:874;;;22790:14;;;;22786:319;;22830:5;22825:265;;22860:34;;-1:-1:-1;;;22860:34:0;;28385:2:1;22860:34:0;;;28367:21:1;28424:2;28404:18;;;28397:30;-1:-1:-1;;;28443:18:1;;;28436:54;28507:18;;22860:34:0;28183:348:1;22825:265:0;-1:-1:-1;;;;;22925:31:0;;;;;;:25;:31;;;;;;;;22924:32;:66;;;;-1:-1:-1;;;;;;22961:29:0;;;;;;:25;:29;;;;;;;;22960:30;22924:66;22920:170;;;23015:55;;-1:-1:-1;;;23015:55:0;;28738:2:1;23015:55:0;;;28720:21:1;28777:2;28757:18;;;28750:30;28816:34;28796:18;;;28789:62;-1:-1:-1;;;28867:18:1;;;28860:43;28920:19;;23015:55:0;28536:409:1;22920:170:0;23123:3;:11;;;;23130:4;23123:11;23119:232;;;-1:-1:-1;;;;;23159:27:0;;;;;;:21;:27;;;;;;;;23158:28;:58;;;;-1:-1:-1;;;;;;23191:25:0;;;;;;:21;:25;;;;;;;;23190:26;23158:58;23154:182;;;23259:12;;23249:6;:22;;23241:75;;;;-1:-1:-1;;;23241:75:0;;29152:2:1;23241:75:0;;;29134:21:1;29191:2;29171:18;;;29164:30;29230:34;29210:18;;;29203:62;-1:-1:-1;;;29281:18:1;;;29274:38;29329:19;;23241:75:0;28950:404:1;23241:75:0;23383:9;;-1:-1:-1;;;;;23369:24:0;;;23383:9;;23369:24;;;;:33;;;23398:4;23397:5;23369:33;23365:243;;;-1:-1:-1;;;;;23428:25:0;;;;;;:21;:25;;;;;;;;23423:170;;23512:14;;23502:6;23486:13;23496:2;23486:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;23478:95;;;;-1:-1:-1;;;23478:95:0;;29691:2:1;23478:95:0;;;29673:21:1;29730:2;29710:18;;;29703:30;29769:34;29749:18;;;29742:62;-1:-1:-1;;;29820:18:1;;;29813:40;29870:19;;23478:95:0;29489:406:1;23478:95:0;23635:4;23631:619;;;23661:6;;;;23656:583;;23692:19;;;;;;;:64;;;;-1:-1:-1;;;;;;23736:20:0;;;;;;:16;:20;;;;;;;;23735:21;23692:64;:111;;;;-1:-1:-1;;;;;;23781:22:0;;;;;;:16;:22;;;;;;;;23780:23;23692:111;23688:536;;;23846:28;23877:24;23895:4;23877:9;:24::i;:::-;23846:55;;23952:13;;23928:20;:37;23924:281;;24012:10;;24053:31;;;24049:72;;24111:7;24088:30;;24049:72;24147:34;24160:20;24147:12;:34::i;:::-;23967:238;23924:281;23823:401;23688:536;24267:52;24284:4;24290:2;24294:6;24302:3;24307:4;24313:5;24267:16;:52::i;:::-;24260:59;22164:2163;-1:-1:-1;;;;;;;22164:2163:0:o;30894:1756::-;-1:-1:-1;;;;;31065:25:0;;31014:4;31065:25;;;:19;:25;;;;;;31046:4;;31065:25;;;:52;;-1:-1:-1;;;;;;31094:23:0;;;;;;:19;:23;;;;;;;;31065:52;31061:99;;;-1:-1:-1;31143:5:0;31061:99;31172:25;31200:55;31210:4;31216:2;31220:7;31229;31238:3;31243:4;31249:5;31200:9;:55::i;:::-;31300:14;;;;-1:-1:-1;;;;;31284:13:0;;:7;:13;;;;;;;;;;;31172:83;;-1:-1:-1;31284:30:0;;;:::i;:::-;-1:-1:-1;;;;;31268:13:0;;;:7;:13;;;;;;;;;;;:46;;;;31353:22;;;;31339:11;;;;;;;;;;:36;;31353:22;31339:36;:::i;:::-;-1:-1:-1;;;;;31325:11:0;;;:7;:11;;;;;;;;;;;:50;;;;31392:17;;;;;:11;:17;;;;;;;31388:89;;;-1:-1:-1;;;;;31442:13:0;;;;;;:7;:13;;;;;;:23;;31458:7;;31442:23;:::i;:::-;-1:-1:-1;;;;;31426:13:0;;;;;;:7;:13;;;;;:39;31388:89;-1:-1:-1;;;;;31491:15:0;;;;;;:11;:15;;;;;;;;31487:100;;;31551:22;;-1:-1:-1;;;;;31537:11:0;;31551:22;31537:11;;;:7;:11;;;;;;:36;;31551:22;31537:36;:::i;:::-;-1:-1:-1;;;;;31523:11:0;;;;;;:7;:11;;;;;:50;31487:100;31617:1;31603:6;:11;;;:15;:34;;;;31636:1;31622:6;:11;;;:15;31603:34;31599:89;;;31665:6;:11;;;31654:7;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;31599:89:0;31704:14;;-1:-1:-1;;;31704:14:0;;;;31700:553;;;31739:3;31735:507;;;31783:21;;31767:13;31777:2;31767:9;:13::i;:::-;:37;:65;;;;-1:-1:-1;;;;;;31809:23:0;;;;;;:19;:23;;;;;;;;31808:24;31767:65;31763:464;;;31881:16;;;31895:1;31881:16;;;;;;;;31857:21;;31881:16;;;;;;;;;;-1:-1:-1;31881:16:0;31857:40;;31938:4;31920;31925:1;31920:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31920:23:0;;;:7;;;;;;;;;;:23;;;;31976:9;;:16;;;-1:-1:-1;;;31976:16:0;;;;:9;;;;;:14;;:16;;;;;31920:7;;31976:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31966:4;31971:1;31966:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31966:26:0;;;:7;;;;;;;;;:26;32036:9;;:38;;-1:-1:-1;;;32036:38:0;;32015:18;;32036:9;;;;;:23;;:38;;32060:7;;32069:4;;32036:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32036:38:0;;;;;;;;;;;;:::i;:::-;32075:1;32036:41;;;;;;;;:::i;:::-;;;;;;;32015:62;;32118:9;;32104:10;:23;32100:108;;32156:7;;:28;;-1:-1:-1;;;32156:28:0;;-1:-1:-1;;;;;32156:7:0;;;;:24;;:28;;32181:2;;32156:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32100:108;31834:393;;31763:464;32283:2;-1:-1:-1;;;;;32268:42:0;32277:4;-1:-1:-1;;;;;32268:42:0;-1:-1:-1;;;;;;;;;;;32287:6:0;:22;;;32268:42;;;;368:25:1;;356:2;341:18;;222:177;32268:42:0;;;;;;;;32326:16;;;;;;;32321:298;;32359:28;32378:4;32384:2;32359:18;:28::i;:::-;32407:16;;;;;;;32406:17;:41;;;;;32427:20;32438:4;32444:2;32427:10;:20::i;:::-;32406:77;;;;-1:-1:-1;;;;;;32452:31:0;;;;;;:25;:31;;;;;;;;32451:32;32406:77;:111;;;;-1:-1:-1;;;;;;32488:29:0;;;;;;:25;:29;;;;;;;;32487:30;32406:111;:121;;;;;32522:5;32521:6;32406:121;32402:206;;;32548:44;;-1:-1:-1;;;32548:44:0;;31325:2:1;32548:44:0;;;31307:21:1;31364:2;31344:18;;;31337:30;31403:34;31383:18;;;31376:62;-1:-1:-1;;;31454:18:1;;;31447:32;31496:19;;32548:44:0;31123:398:1;32402:206:0;-1:-1:-1;32638:4:0;;30894:1756;-1:-1:-1;;;;;;;;30894:1756:0:o;21802:358::-;21903:6;;21871:4;;-1:-1:-1;;;;;21895:14:0;;;21903:6;;;;;21895:14;;;;:43;;-1:-1:-1;21932:6:0;;-1:-1:-1;;;;;21926:12:0;;;21932:6;;;;;21926:12;;21895:43;:79;;;;-1:-1:-1;21968:6:0;;;;;-1:-1:-1;;;;;21968:6:0;21955:9;:19;;21895:79;:118;;;;-1:-1:-1;;;;;;21992:21:0;;;;;;:17;:21;;;;;;;;21991:22;21895:118;:159;;;;-1:-1:-1;;;;;;22031:23:0;;;;;;:17;:23;;;;;;;;22030:24;21895:159;:186;;;;-1:-1:-1;;;;;;22071:10:0;;8360:42;22071:10;;21895:186;:219;;;;-1:-1:-1;;;;;;22098:16:0;;;;21895:219;:257;;;;-1:-1:-1;;;;;;22131:21:0;;22147:4;22131:21;;21888:264;21802:358;-1:-1:-1;;;21802:358:0:o;24335:2663::-;9930:6;:13;;-1:-1:-1;;9930:13:0;9939:4;9930:13;;;24419:30:::1;::::0;;::::1;::::0;::::1;::::0;;24442:7:::1;24419:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;24419:30:0;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;24419:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24419:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24419:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24419:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24419:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24419:30:0;::::1;::::0;;::::1;9930:13:::0;24419:30;;;;;9930:6;24464:21;24460:60:::1;;24502:7;;;24460:60;24555:4;24535:26;::::0;;;:11:::1;:26;::::0;;;;;;;24570:9:::1;::::0;-1:-1:-1;;;;;24570:9:0::1;24535:46:::0;;;;;;;;-1:-1:-1;;24535:67:0::1;24532:165;;24639:4;24619:26;::::0;;;:11:::1;:26;::::0;;;;;;;24654:9:::1;::::0;-1:-1:-1;;;;;24654:9:0::1;24619:46:::0;;;;;;;-1:-1:-1;;24619:66:0;;24532:165:::1;24717:17;24802:1;24782:6;:16;;;24738:60;;24762:6;:16;;;24739:39;;:20;:39;;;;:::i;:::-;24738:60;;;;:::i;:::-;24737:66;;;;:::i;:::-;24717:86:::0;-1:-1:-1;24814:15:0::1;24832:32;24717:86:::0;24832:20;:32:::1;:::i;:::-;24909:16;::::0;;24923:1:::1;24909:16:::0;;;;;::::1;::::0;;24814:50;;-1:-1:-1;24885:21:0::1;::::0;24909:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24909:16:0::1;24885:40;;24954:4;24936;24941:1;24936:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24936:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;24980:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;24980:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;24936:7;;24980:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24970:4;24975:1;24970:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24970:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;25013:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;25013:186:0;;:9;::::1;::::0;:60:::1;::::0;:186:::1;::::0;25088:7;;25013:9:::1;::::0;25126:4;;25153::::1;::::0;25173:15:::1;::::0;25013:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;25009:233;;25224:7;;;;;;25009:233;25275:21;25254:18;25361:7:::0;25335:22:::1;25348:9:::0;25275:21;25335:22:::1;:::i;:::-;25334:34;;;;:::i;:::-;25307:61:::0;-1:-1:-1;25385:13:0;;25381:400:::1;;25419:9;::::0;:222:::1;::::0;-1:-1:-1;;;25419:222:0;;25496:4:::1;25419:222;::::0;::::1;32454:34:1::0;32504:18;;;32497:34;;;25419:9:0::1;32547:18:1::0;;;32540:34;;;32590:18;;;32583:34;8360:42:0::1;32633:19:1::0;;;32626:44;25611:15:0::1;32686:19:1::0;;;32679:35;-1:-1:-1;;;;;25419:9:0;;::::1;::::0;:25:::1;::::0;25452:16;;32388:19:1;;25419:222:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25419:222:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;25419:222:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;25415:355;;25748:7;;;;;;;;25415:355;-1:-1:-1::0;;25666:40:0::1;::::0;;33210:25:1;;;33266:2;33251:18;;33244:34;;;25666:40:0::1;::::0;-1:-1:-1;33183:18:1;25666:40:0::1;;;;;;;25415:355;25793:30;25807:16:::0;25793:30;::::1;:::i;:::-;;;25854:6;:16;;;25834:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;25930:16:::1;::::0;::::1;::::0;25916:10:::1;::::0;::::1;::::0;25881:18:::1;::::0;-1:-1:-1;25902:44:0;;::::1;::::0;25903:23:::1;::::0;::::1;:10:::0;:23:::1;:::i;:::-;25902:44;;;;:::i;:::-;25881:65;;25957:26;26022:6;:16;;;25986:52;;26000:6;:18;;;25987:31;;:10;:31;;;;:::i;:::-;25986:52;;;;:::i;:::-;25957:81;;26049:30;26122:6;:16;;;26082:56;;26096:6;:22;;;26083:35;;:10;:35;;;;:::i;:::-;26082:56;;;;:::i;:::-;26049:89;;26149:31;26224:6;:16;;;26183:57;;26197:6;:23;;;26184:36;;:10;:36;;;;:::i;:::-;26183:57;;;;:::i;:::-;26149:91:::0;-1:-1:-1;26251:24:0::1;26352:22:::0;26149:91;26292:31:::1;26305:18:::0;26292:10;:31:::1;:::i;:::-;:57;;;;:::i;:::-;:82;;;;:::i;:::-;26278:97;::::0;:10;:97:::1;:::i;:::-;26251:124;;26386:12;26432:1:::0;26413:6:::1;:16;;;:20;;;26409:103;;;26460:11;:21:::0;26450:50:::1;::::0;-1:-1:-1;;;;;26460:21:0::1;26483:16:::0;26450:9:::1;:50::i;:::-;26526:10;::::0;::::1;::::0;:14:::1;;::::0;26522:85:::1;;26567:15:::0;;26557:38:::1;::::0;-1:-1:-1;;;;;26567:15:0::1;26584:10:::0;26557:9:::1;:38::i;:::-;26621:18;::::0;::::1;::::0;:22:::1;;::::0;26617:109:::1;;26670:23:::0;;26660:54:::1;::::0;-1:-1:-1;;;;;26670:23:0::1;26695:18:::0;26660:9:::1;:54::i;:::-;26740:22;::::0;::::1;::::0;:26:::1;;::::0;26736:121:::1;;26793:27:::0;;26783:62:::1;::::0;-1:-1:-1;;;;;26793:27:0::1;26822:22:::0;26783:9:::1;:62::i;:::-;26871:23;::::0;::::1;::::0;:27:::1;;::::0;26867:124:::1;;26925:28:::0;;26915:64:::1;::::0;-1:-1:-1;;;;;26925:28:0::1;26955:23:::0;26915:9:::1;:64::i;:::-;24408:2590;;;;;;;;;;;;9954:1;-1:-1:-1::0;9966:6:0;:14;;-1:-1:-1;;9966:14:0;;;24335:2663::o;32721:2911::-;32848:18;;:::i;:::-;32879:25;;:::i;:::-;32915:30;;;;;;;;32938:7;32915:30;;;;;;;;;;;;;;;;-1:-1:-1;;;32915:30:0;;;;;;;;;;;-1:-1:-1;;;32915:30:0;;;;;;;;-1:-1:-1;;;32915:30:0;;;;;;;;-1:-1:-1;;;32915:30:0;;;;;;;;-1:-1:-1;;;32915:30:0;;;;;;;;-1:-1:-1;;;32915:30:0;;;;;;;;-1:-1:-1;;;32915:30:0;;;;;;;;;32977:10;:8;:10::i;:::-;32956:18;;;:31;;;33017:28;;:7;:28;:::i;:::-;33000:14;;;:45;33062:20;33073:4;33079:2;33062:10;:20::i;:::-;33058:317;;;33130:11;;:40;;-1:-1:-1;;;33130:40:0;;-1:-1:-1;;;;;33723:15:1;;;33130:40:0;;;33705:34:1;33775:15;;;33755:18;;;33748:43;33807:18;;;33800:34;;;33099:12:0;;33130:11;;;;;:21;;33640:18:1;;33130:40:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;33130:40:0;;;;;;;;-1:-1:-1;;33130:40:0;;;;;;;;;;;;:::i;:::-;;;33126:166;;33268:8;;;33126:166;33221:5;-1:-1:-1;33312:7:0;33308:56;;33340:8;;;33308:56;33084:291;33058:317;33390:7;33387:1504;;;33414:18;33453:3;33449:726;;;-1:-1:-1;33490:9:0;:16;;;33449:726;;;33532:4;33528:647;;;-1:-1:-1;33570:9:0;:17;33610:9;;33570:17;;;;;;;33610:9;;33606:479;;;33672:6;;33644:15;;33662:17;;-1:-1:-1;;;;;33672:6:0;33662:9;:17::i;:::-;33644:35;-1:-1:-1;33716:13:0;33726:3;33644:35;33716:13;:::i;:::-;33706:7;:23;33702:364;;;33789:7;33768:17;:7;33779:5;33768:17;:::i;:::-;33767:29;;;;:::i;:::-;33758:6;:38;33859:7;33838:17;:7;33849:5;33838:17;:::i;:::-;33837:29;;;;:::i;:::-;33823:43;;;;:::i;:::-;;;33910:4;33897:10;:17;33893:99;;;33960:4;33947:17;;33893:99;34018:11;:24;;;33702:364;33621:464;33606:479;33528:647;;;-1:-1:-1;34138:9:0;:21;-1:-1:-1;;;34138:21:0;;;;33528:647;34191:17;8254:5;34212:20;34222:10;34212:7;:20;:::i;:::-;34211:41;;;;:::i;:::-;34191:61;;34267:13;34322:6;:11;;;34302:6;:17;;;34283:6;:16;;;:36;;;;:::i;:::-;:50;;;;:::i;:::-;34375:17;;34267:66;;;;;-1:-1:-1;34267:66:0;;34363:29;;;:9;:29;:::i;:::-;34362:39;;;;:::i;:::-;34348:11;;;;:53;;;;34444:11;;;34459:5;;34432:23;;;;:9;:23;:::i;:::-;34431:33;;;;:::i;:::-;34416:12;;;:48;;;34507:11;;;;:26;;34416:48;34507:26;:::i;:::-;34494:40;;:9;:40;:::i;:::-;34479:12;;;:55;;;34614:12;;;;34585:11;;;;34614:12;;34585:26;;;:::i;:::-;:41;;;;:::i;:::-;34574:53;;:7;:53;:::i;:::-;34549:78;;34672:18;;;;34658:11;;;;:32;;34672:18;34658:32;:::i;:::-;34644:11;;;:46;-1:-1:-1;33387:1504:0;;-1:-1:-1;;33387:1504:0;;34737:1;34723:11;;;:15;;;34753:12;;;:16;;;34784:12;;;:16;;;34815:32;;;34864:11;;;:15;33387:1504;34907:12;;;;:16;34903:289;;34981:6;:18;;;34966:6;:12;;;:33;;;;:::i;:::-;34956:4;34940:7;:22;;;;;;;;;;:59;;:22;;:7;:59;;;;;:::i;:::-;;;;-1:-1:-1;;35037:4:0;35017:26;;;;:11;:26;;;;;;;;35014:104;;;35090:12;;;;;35080:4;35064:22;;;;:7;:22;;;;;:38;;35090:12;;35064:22;;:38;;35090:12;;35064:38;:::i;:::-;;;;-1:-1:-1;;35014:104:0;35160:4;-1:-1:-1;;;;;35137:43:0;35146:4;-1:-1:-1;;;;;35137:43:0;-1:-1:-1;;;;;;;;;;;35167:6:0;:12;;;35137:43;;;;368:25:1;;356:2;341:18;;222:177;35137:43:0;;;;;;;;34903:289;35208:12;;;;:16;35204:253;;35273:6;:18;;;35258:6;:12;;;:33;;;;:::i;:::-;8360:42;35241:7;:13;;;;;;;;:50;;:13;;:7;:50;;;;;:::i;:::-;;;;-1:-1:-1;;8360:42:0;35309:17;;:11;:17;;;;;;35306:86;;;35364:12;;;;8360:42;35347:13;;;;:7;:13;;;:29;;:13;;;:29;;35364:12;;35347:29;:::i;:::-;;;;-1:-1:-1;;35306:86:0;8360:42;-1:-1:-1;;;;;35411:34:0;35420:4;-1:-1:-1;;;;;35411:34:0;-1:-1:-1;;;;;;;;;;;35432:6:0;:12;;;35411:34;;;;368:25:1;;356:2;341:18;;222:177;35411:34:0;;;;;;;;35204:253;35580:6;:18;;;35565:6;:12;;;:33;;;;:::i;:::-;35542:6;:18;;;35527:6;:12;;;:33;;;;:::i;:::-;35512:6;:11;;;:49;;;;:::i;:::-;:87;;;;:::i;:::-;35494:6;:14;;;:106;;;;:::i;:::-;35469:22;;;:131;-1:-1:-1;35469:22:0;32721:2911;-1:-1:-1;;;;;;;;32721:2911:0:o;27181:515::-;27264:16;;;;;;;27263:17;27255:65;;;;-1:-1:-1;;;27255:65:0;;34047:2:1;27255:65:0;;;34029:21:1;34086:2;34066:18;;;34059:30;34125:34;34105:18;;;34098:62;-1:-1:-1;;;34176:18:1;;;34169:33;34219:19;;27255:65:0;33845:399:1;27255:65:0;27336:20;27347:4;27353:2;27336:10;:20::i;:::-;27335:21;:37;;;;-1:-1:-1;27366:6:0;;-1:-1:-1;;;;;27360:12:0;;;27366:6;;27360:12;27335:37;27331:358;;;-1:-1:-1;;;;;27389:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;27389:30:0;27415:4;27389:30;;;27434:16;:23;;-1:-1:-1;;27434:23:0;27389:30;27434:23;;;;;27483:11;;;;27472:113;;27529:11;:40;;-1:-1:-1;;;;;;27529:40:0;27563:4;27529:40;;;;;27472:113;27599:19;:26;;-1:-1:-1;;27599:26:0;;;;;27645:32;;-1:-1:-1;4579:41:1;;-1:-1:-1;;;;;;;;;;;27645:32:0;4567:2:1;4552:18;27645:32:0;;;;;;;27181:515;;:::o;27006:167::-;27086:12;27122:7;-1:-1:-1;;;;;27122:12:0;27142:6;27155:5;27122:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:203:1:-;-1:-1:-1;;;;;178:32:1;;;;160:51;;148:2;133:18;;14:203::o;404:118::-;490:5;483:13;476:21;469:5;466:32;456:60;;512:1;509;502:12;456:60;404:118;:::o;527:376::-;589:6;597;650:2;638:9;629:7;625:23;621:32;618:52;;;666:1;663;656:12;618:52;705:9;692:23;724:28;746:5;724:28;:::i;:::-;771:5;-1:-1:-1;828:2:1;813:18;;800:32;841:30;800:32;841:30;:::i;:::-;890:7;880:17;;;527:376;;;;;:::o;908:127::-;969:10;964:3;960:20;957:1;950:31;1000:4;997:1;990:15;1024:4;1021:1;1014:15;1040:275;1111:2;1105:9;1176:2;1157:13;;-1:-1:-1;;1153:27:1;1141:40;;-1:-1:-1;;;;;1196:34:1;;1232:22;;;1193:62;1190:88;;;1258:18;;:::i;:::-;1294:2;1287:22;1040:275;;-1:-1:-1;1040:275:1:o;1320:183::-;1380:4;-1:-1:-1;;;;;1402:30:1;;1399:56;;;1435:18;;:::i;:::-;-1:-1:-1;1480:1:1;1476:14;1492:4;1472:25;;1320:183::o;1508:131::-;-1:-1:-1;;;;;1583:31:1;;1573:42;;1563:70;;1629:1;1626;1619:12;1644:737;1698:5;1751:3;1744:4;1736:6;1732:17;1728:27;1718:55;;1769:1;1766;1759:12;1718:55;1805:6;1792:20;1831:4;1855:60;1871:43;1911:2;1871:43;:::i;:::-;1855:60;:::i;:::-;1949:15;;;2035:1;2031:10;;;;2019:23;;2015:32;;;1980:12;;;;2059:15;;;2056:35;;;2087:1;2084;2077:12;2056:35;2123:2;2115:6;2111:15;2135:217;2151:6;2146:3;2143:15;2135:217;;;2231:3;2218:17;2248:31;2273:5;2248:31;:::i;:::-;2292:18;;2330:12;;;;2168;;2135:217;;;-1:-1:-1;2370:5:1;1644:737;-1:-1:-1;;;;;;1644:737:1:o;2386:477::-;2476:6;2484;2537:2;2525:9;2516:7;2512:23;2508:32;2505:52;;;2553:1;2550;2543:12;2505:52;2580:23;;-1:-1:-1;;;;;2615:30:1;;2612:50;;;2658:1;2655;2648:12;2612:50;2681:61;2734:7;2725:6;2714:9;2710:22;2681:61;:::i;:::-;2671:71;;;2792:2;2781:9;2777:18;2764:32;2805:28;2827:5;2805:28;:::i;3238:250::-;3323:1;3333:113;3347:6;3344:1;3341:13;3333:113;;;3423:11;;;3417:18;3404:11;;;3397:39;3369:2;3362:10;3333:113;;;-1:-1:-1;;3480:1:1;3462:16;;3455:27;3238:250::o;3493:396::-;3642:2;3631:9;3624:21;3605:4;3674:6;3668:13;3717:6;3712:2;3701:9;3697:18;3690:34;3733:79;3805:6;3800:2;3789:9;3785:18;3780:2;3772:6;3768:15;3733:79;:::i;:::-;3873:2;3852:15;-1:-1:-1;;3848:29:1;3833:45;;;;3880:2;3829:54;;3493:396;-1:-1:-1;;3493:396:1:o;4119:315::-;4187:6;4195;4248:2;4236:9;4227:7;4223:23;4219:32;4216:52;;;4264:1;4261;4254:12;4216:52;4303:9;4290:23;4322:31;4347:5;4322:31;:::i;:::-;4372:5;4424:2;4409:18;;;;4396:32;;-1:-1:-1;;;4119:315:1:o;4631:247::-;4690:6;4743:2;4731:9;4722:7;4718:23;4714:32;4711:52;;;4759:1;4756;4749:12;4711:52;4798:9;4785:23;4817:31;4842:5;4817:31;:::i;4883:388::-;4951:6;4959;5012:2;5000:9;4991:7;4987:23;4983:32;4980:52;;;5028:1;5025;5018:12;4980:52;5067:9;5054:23;5086:31;5111:5;5086:31;:::i;:::-;5136:5;-1:-1:-1;5193:2:1;5178:18;;5165:32;5206:33;5165:32;5206:33;:::i;5276:382::-;5341:6;5349;5402:2;5390:9;5381:7;5377:23;5373:32;5370:52;;;5418:1;5415;5408:12;5370:52;5457:9;5444:23;5476:31;5501:5;5476:31;:::i;5663:248::-;5731:6;5739;5792:2;5780:9;5771:7;5767:23;5763:32;5760:52;;;5808:1;5805;5798:12;5760:52;-1:-1:-1;;5831:23:1;;;5901:2;5886:18;;;5873:32;;-1:-1:-1;5663:248:1:o;5916:456::-;5993:6;6001;6009;6062:2;6050:9;6041:7;6037:23;6033:32;6030:52;;;6078:1;6075;6068:12;6030:52;6117:9;6104:23;6136:31;6161:5;6136:31;:::i;:::-;6186:5;-1:-1:-1;6243:2:1;6228:18;;6215:32;6256:33;6215:32;6256:33;:::i;:::-;5916:456;;6308:7;;-1:-1:-1;;;6362:2:1;6347:18;;;;6334:32;;5916:456::o;6377:1138::-;6495:6;6503;6556:2;6544:9;6535:7;6531:23;6527:32;6524:52;;;6572:1;6569;6562:12;6524:52;6599:23;;-1:-1:-1;;;;;6671:14:1;;;6668:34;;;6698:1;6695;6688:12;6668:34;6721:61;6774:7;6765:6;6754:9;6750:22;6721:61;:::i;:::-;6711:71;;6801:2;6791:12;;6856:2;6845:9;6841:18;6828:32;6885:2;6875:8;6872:16;6869:36;;;6901:1;6898;6891:12;6869:36;6924:24;;;-1:-1:-1;6979:4:1;6971:13;;6967:27;-1:-1:-1;6957:55:1;;7008:1;7005;6998:12;6957:55;7044:2;7031:16;7067:60;7083:43;7123:2;7083:43;:::i;7067:60::-;7161:15;;;7243:1;7239:10;;;;7231:19;;7227:28;;;7192:12;;;;7267:19;;;7264:39;;;7299:1;7296;7289:12;7264:39;7323:11;;;;7343:142;7359:6;7354:3;7351:15;7343:142;;;7425:17;;7413:30;;7376:12;;;;7463;;;;7343:142;;;7504:5;7494:15;;;;;;;6377:1138;;;;;:::o;7520:180::-;7579:6;7632:2;7620:9;7611:7;7607:23;7603:32;7600:52;;;7648:1;7645;7638:12;7600:52;-1:-1:-1;7671:23:1;;7520:180;-1:-1:-1;7520:180:1:o;7894:159::-;7961:20;;8021:6;8010:18;;8000:29;;7990:57;;8043:1;8040;8033:12;7990:57;7894:159;;;:::o;8058:328::-;8132:6;8140;8148;8201:2;8189:9;8180:7;8176:23;8172:32;8169:52;;;8217:1;8214;8207:12;8169:52;8240:28;8258:9;8240:28;:::i;:::-;8230:38;;8287:37;8320:2;8309:9;8305:18;8287:37;:::i;:::-;8277:47;;8343:37;8376:2;8365:9;8361:18;8343:37;:::i;:::-;8333:47;;8058:328;;;;;:::o;8391:853::-;8526:6;8534;8542;8550;8558;8611:3;8599:9;8590:7;8586:23;8582:33;8579:53;;;8628:1;8625;8618:12;8579:53;8667:9;8654:23;8686:31;8711:5;8686:31;:::i;:::-;8736:5;-1:-1:-1;8793:2:1;8778:18;;8765:32;8806:33;8765:32;8806:33;:::i;:::-;8858:7;-1:-1:-1;8917:2:1;8902:18;;8889:32;8930:33;8889:32;8930:33;:::i;:::-;8982:7;-1:-1:-1;9041:2:1;9026:18;;9013:32;9054:33;9013:32;9054:33;:::i;:::-;9106:7;-1:-1:-1;9165:3:1;9150:19;;9137:33;9179;9137;9179;:::i;:::-;9231:7;9221:17;;;8391:853;;;;;;;;:::o;9249:693::-;9363:6;9371;9379;9387;9395;9403;9411;9419;9472:3;9460:9;9451:7;9447:23;9443:33;9440:53;;;9489:1;9486;9479:12;9440:53;9512:28;9530:9;9512:28;:::i;:::-;9502:38;;9559:37;9592:2;9581:9;9577:18;9559:37;:::i;:::-;9549:47;;9615:37;9648:2;9637:9;9633:18;9615:37;:::i;:::-;9605:47;;9671:37;9704:2;9693:9;9689:18;9671:37;:::i;:::-;9661:47;;9727:38;9760:3;9749:9;9745:19;9727:38;:::i;:::-;9717:48;;9784:38;9817:3;9806:9;9802:19;9784:38;:::i;:::-;9774:48;;9841:38;9874:3;9863:9;9859:19;9841:38;:::i;:::-;9831:48;;9898:38;9931:3;9920:9;9916:19;9898:38;:::i;:::-;9888:48;;9249:693;;;;;;;;;;;:::o;9947:241::-;10003:6;10056:2;10044:9;10035:7;10031:23;10027:32;10024:52;;;10072:1;10069;10062:12;10024:52;10111:9;10098:23;10130:28;10152:5;10130:28;:::i;11668:385::-;11754:6;11762;11770;11778;11831:3;11819:9;11810:7;11806:23;11802:33;11799:53;;;11848:1;11845;11838:12;11799:53;-1:-1:-1;;11871:23:1;;;11941:2;11926:18;;11913:32;;-1:-1:-1;11992:2:1;11977:18;;11964:32;;12043:2;12028:18;12015:32;;-1:-1:-1;11668:385:1;-1:-1:-1;11668:385:1:o;12058:284::-;-1:-1:-1;;;;;12244:32:1;;;;12226:51;;12320:14;12313:22;12308:2;12293:18;;12286:50;12214:2;12199:18;;12058:284::o;12347:341::-;12549:2;12531:21;;;12588:2;12568:18;;;12561:30;-1:-1:-1;;;12622:2:1;12607:18;;12600:47;12679:2;12664:18;;12347:341::o;12966:461::-;13019:3;13057:5;13051:12;13084:6;13079:3;13072:19;13110:4;13139:2;13134:3;13130:12;13123:19;;13176:2;13169:5;13165:14;13197:1;13207:195;13221:6;13218:1;13215:13;13207:195;;;13286:13;;-1:-1:-1;;;;;13282:39:1;13270:52;;13342:12;;;;13377:15;;;;13318:1;13236:9;13207:195;;;-1:-1:-1;13418:3:1;;12966:461;-1:-1:-1;;;;;12966:461:1:o;13432:342::-;13633:2;13622:9;13615:21;13596:4;13653:56;13705:2;13694:9;13690:18;13682:6;13653:56;:::i;:::-;13645:64;;13759:6;13752:14;13745:22;13740:2;13729:9;13725:18;13718:50;13432:342;;;;;:::o;13779:127::-;13840:10;13835:3;13831:20;13828:1;13821:31;13871:4;13868:1;13861:15;13895:4;13892:1;13885:15;13911:422;14000:1;14043:5;14000:1;14057:270;14078:7;14068:8;14065:21;14057:270;;;14137:4;14133:1;14129:6;14125:17;14119:4;14116:27;14113:53;;;14146:18;;:::i;:::-;14196:7;14186:8;14182:22;14179:55;;;14216:16;;;;14179:55;14295:22;;;;14255:15;;;;14057:270;;;14061:3;13911:422;;;;;:::o;14338:806::-;14387:5;14417:8;14407:80;;-1:-1:-1;14458:1:1;14472:5;;14407:80;14506:4;14496:76;;-1:-1:-1;14543:1:1;14557:5;;14496:76;14588:4;14606:1;14601:59;;;;14674:1;14669:130;;;;14581:218;;14601:59;14631:1;14622:10;;14645:5;;;14669:130;14706:3;14696:8;14693:17;14690:43;;;14713:18;;:::i;:::-;-1:-1:-1;;14769:1:1;14755:16;;14784:5;;14581:218;;14883:2;14873:8;14870:16;14864:3;14858:4;14855:13;14851:36;14845:2;14835:8;14832:16;14827:2;14821:4;14818:12;14814:35;14811:77;14808:159;;;-1:-1:-1;14920:19:1;;;14952:5;;14808:159;14999:34;15024:8;15018:4;14999:34;:::i;:::-;15069:6;15065:1;15061:6;15057:19;15048:7;15045:32;15042:58;;;15080:18;;:::i;:::-;15118:20;;14338:806;-1:-1:-1;;;14338:806:1:o;15149:140::-;15207:5;15236:47;15277:4;15267:8;15263:19;15257:4;15236:47;:::i;15294:217::-;15334:1;15360;15350:132;;15404:10;15399:3;15395:20;15392:1;15385:31;15439:4;15436:1;15429:15;15467:4;15464:1;15457:15;15350:132;-1:-1:-1;15496:9:1;;15294:217::o;16570:168::-;16643:9;;;16674;;16691:15;;;16685:22;;16671:37;16661:71;;16712:18;;:::i;16743:127::-;16804:10;16799:3;16795:20;16792:1;16785:31;16835:4;16832:1;16825:15;16859:4;16856:1;16849:15;16875:127;16936:10;16931:3;16927:20;16924:1;16917:31;16967:4;16964:1;16957:15;16991:4;16988:1;16981:15;17007:128;17074:9;;;17095:11;;;17092:37;;;17109:18;;:::i;17140:135::-;17179:3;17200:17;;;17197:43;;17220:18;;:::i;:::-;-1:-1:-1;17267:1:1;17256:13;;17140:135::o;17280:348::-;17482:2;17464:21;;;17521:2;17501:18;;;17494:30;-1:-1:-1;;;17555:2:1;17540:18;;17533:54;17619:2;17604:18;;17280:348::o;17633:131::-;17693:5;17722:36;17749:8;17743:4;17722:36;:::i;18536:175::-;18573:3;18617:4;18610:5;18606:16;18646:4;18637:7;18634:17;18631:43;;18654:18;;:::i;:::-;18703:1;18690:15;;18536:175;-1:-1:-1;;18536:175:1:o;19903:340::-;20105:2;20087:21;;;20144:2;20124:18;;;20117:30;-1:-1:-1;;;20178:2:1;20163:18;;20156:46;20234:2;20219:18;;19903:340::o;21103:425::-;21305:2;21287:21;;;21344:2;21324:18;;;21317:30;21383:34;21378:2;21363:18;;21356:62;21454:31;21449:2;21434:18;;21427:59;21518:3;21503:19;;21103:425::o;23394:168::-;23461:6;23487:10;;;23499;;;23483:27;;23522:11;;;23519:37;;;23536:18;;:::i;:::-;23519:37;23394:168;;;;:::o;23975:719::-;24055:6;24108:2;24096:9;24087:7;24083:23;24079:32;24076:52;;;24124:1;24121;24114:12;24076:52;24151:16;;-1:-1:-1;;;;;24216:14:1;;;24213:34;;;24243:1;24240;24233:12;24213:34;24281:6;24270:9;24266:22;24256:32;;24326:7;24319:4;24315:2;24311:13;24307:27;24297:55;;24348:1;24345;24338:12;24297:55;24377:2;24371:9;24399:2;24395;24392:10;24389:36;;;24405:18;;:::i;:::-;24447:53;24490:2;24471:13;;-1:-1:-1;;24467:27:1;24496:2;24463:36;24447:53;:::i;:::-;24434:66;;24523:2;24516:5;24509:17;24563:7;24558:2;24553;24549;24545:11;24541:20;24538:33;24535:53;;;24584:1;24581;24574:12;24535:53;24597:67;24661:2;24656;24649:5;24645:14;24640:2;24636;24632:11;24597:67;:::i;:::-;-1:-1:-1;24683:5:1;23975:719;-1:-1:-1;;;;23975:719:1:o;24699:184::-;24769:6;24822:2;24810:9;24801:7;24797:23;24793:32;24790:52;;;24838:1;24835;24828:12;24790:52;-1:-1:-1;24861:16:1;;24699:184;-1:-1:-1;24699:184:1:o;25694:410::-;25896:2;25878:21;;;25935:2;25915:18;;;25908:30;25974:34;25969:2;25954:18;;25947:62;-1:-1:-1;;;26040:2:1;26025:18;;26018:44;26094:3;26079:19;;25694:410::o;26109:245::-;26176:6;26229:2;26217:9;26208:7;26204:23;26200:32;26197:52;;;26245:1;26242;26235:12;26197:52;26277:9;26271:16;26296:28;26318:5;26296:28;:::i;26359:251::-;26429:6;26482:2;26470:9;26461:7;26457:23;26453:32;26450:52;;;26498:1;26495;26488:12;26450:52;26530:9;26524:16;26549:31;26574:5;26549:31;:::i;26615:343::-;26817:2;26799:21;;;26856:2;26836:18;;;26829:30;-1:-1:-1;;;26890:2:1;26875:18;;26868:49;26949:2;26934:18;;26615:343::o;29359:125::-;29424:9;;;29445:10;;;29442:36;;;29458:18;;:::i;29900:332::-;30107:6;30096:9;30089:25;30150:2;30145;30134:9;30130:18;30123:30;30070:4;30170:56;30222:2;30211:9;30207:18;30199:6;30170:56;:::i;30237:881::-;30332:6;30363:2;30406;30394:9;30385:7;30381:23;30377:32;30374:52;;;30422:1;30419;30412:12;30374:52;30449:16;;-1:-1:-1;;;;;30477:30:1;;30474:50;;;30520:1;30517;30510:12;30474:50;30543:22;;30596:4;30588:13;;30584:27;-1:-1:-1;30574:55:1;;30625:1;30622;30615:12;30574:55;30654:2;30648:9;30677:60;30693:43;30733:2;30693:43;:::i;30677:60::-;30771:15;;;30853:1;30849:10;;;;30841:19;;30837:28;;;30802:12;;;;30877:19;;;30874:39;;;30909:1;30906;30899:12;30874:39;30933:11;;;;30953:135;30969:6;30964:3;30961:15;30953:135;;;31035:10;;31023:23;;30986:12;;;;31066;;;;30953:135;;31526:582;31825:6;31814:9;31807:25;31868:6;31863:2;31852:9;31848:18;31841:34;31911:3;31906:2;31895:9;31891:18;31884:31;31788:4;31932:57;31984:3;31973:9;31969:19;31961:6;31932:57;:::i;:::-;-1:-1:-1;;;;;32025:32:1;;;;32020:2;32005:18;;31998:60;-1:-1:-1;32089:3:1;32074:19;32067:35;31924:65;31526:582;-1:-1:-1;;;31526:582:1:o;32725:306::-;32813:6;32821;32829;32882:2;32870:9;32861:7;32857:23;32853:32;32850:52;;;32898:1;32895;32888:12;32850:52;32927:9;32921:16;32911:26;;32977:2;32966:9;32962:18;32956:25;32946:35;;33021:2;33010:9;33006:18;33000:25;32990:35;;32725:306;;;;;:::o;33289:171::-;33357:6;33396:10;;;33384;;;33380:27;;33419:12;;;33416:38;;;33434:18;;:::i

Swarm Source

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