ETH Price: $2,966.16 (-4.16%)
Gas: 1 Gwei

Token

Viral Crypto App (VCX)
 

Overview

Max Total Supply

1,000,022,123,729,434.3940000000027 VCX

Holders

406

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
190,053,541.522626836088656388 VCX

Value
$0.00
0x09619deecbcc8a75bd9cf5eb5fbb852146bf6562
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:
PlatformToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-13
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.7.6;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    function transferOwnership(address newOwner) external virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    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 IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() external view virtual override returns (string memory) {
        return _name;
    }

    function symbol() external view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() external view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount)
        external
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        external
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        external
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        external
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

interface VCDividendTracker {
    function excludeFromDividends(address account, bool reduceHolderCount)
        external;

    function updateClaimWait(uint256 newClaimWait) external;

    function updateMinimumToken(uint256 newMinimumToken) external;

    function minimumTokenBalanceForDividends() external view returns (uint256);

    function claimWait() external view returns (uint256);

    function totalDividendsDistributed() external view returns (uint256);

    function balanceOf(address _account) external view returns (uint256);

    function excludedFromDividends(address _account)
        external
        view
        returns (bool);

    function setBalance(address payable account, uint256 newBalance) external;

    function checkOwnership(address _owner) external view returns (bool);

    function withdrawableDividendOf(address _owner)
        external
        view
        returns (uint256);

    function getAccount(address _account)
        external
        view
        returns (
            address account,
            uint256 withdrawableDividends,
            uint256 totalDividends,
            uint256 lastClaimTime,
            uint256 nextClaimTime,
            uint256 secondsUntilAutoClaimAvailable
        );

    function processAccount(address payable account, bool automatic)
        external
        returns (bool);

    function getNumberOfTokenHolders() external view returns (uint256);
}

contract PlatformToken is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    VCDividendTracker public dividendTracker;

    address public uniswapV2Pair;
    address public minter;

    uint256 internal constant ONE = 10**18;
    address internal constant ZERO_ADDRESS =
        0x0000000000000000000000000000000000000000;
    address public WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

    // store automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    struct dailyTransferedVest {
        uint256 lastTransfer;
        uint256 amount;
    }

    mapping(address => bool) public automatedMarketMakerPairs;
    mapping(address => bool) public automatedMarketMakerRouters;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public isBlacklisted;
    mapping(address => bool) public vestedAddress;
    mapping(address => uint256) public initialVest;
    mapping(address => uint256) public transferedVest;
    mapping(address => uint256) private _lastTX;
    mapping(address => uint256) private _lastTransfer;
    mapping(address => uint256) private _lastDailyTransferedAmount;
    mapping(address => dailyTransferedVest) private _lastDailySoldVest;

    uint256 public nativeRewardsFeeForSelling = 5;
    uint256 public projectFeeForSelling = 5;
    uint256 public liquidityFeeForSelling = 2;
    uint256 public nativeRewardsFeeForBuying = 5;
    uint256 public projectFeeForBuying = 5;
    uint256 public liquidityFeeForBuying = 2;
    uint256 public nativeRewardsFeeForTransfering = 5;
    uint256 public projectFeeForTransfering = 5;
    uint256 public liquidityFeeForTransfering = 2;
    uint256 private maxTXAmount = 75000000 * (ONE);
    uint256 public swapTokensAtAmount = 2000000 * (ONE);
    uint256 public totalFeesForSelling =
        nativeRewardsFeeForSelling.add(projectFeeForSelling).add(
            liquidityFeeForSelling
        );
    uint256 public totalFeesForBuying =
        nativeRewardsFeeForBuying.add(projectFeeForBuying).add(
            liquidityFeeForBuying
        );
    uint256 public totalFeesForTransfering =
        nativeRewardsFeeForTransfering.add(projectFeeForTransfering).add(
            liquidityFeeForTransfering
        );
    uint256 public firstLiveBlock;
    uint256 public firstLiveBlockNumber;
    uint256 public maxHoldings = 150000000 * (ONE);
    uint256 public vestedSellLimit;
    uint256 public maximumDailyAmountToSell = 5 * maxTXAmount;
    uint256 public maxDailyVestToSell;

    bool public swapEnabled = true;
    bool public sendDividendsEnabled = true;
    bool public paused = true;
    bool public buySellOnly = true;
    bool public takeFees = true;
    bool public dailyCoolDown;
    bool public dailyVestSellingCoolDownEnabled;
    bool private swapping;
    bool public enableMaxDailySell;
    bool public maxTXEnabled;
    bool public maxHoldingsEnabled;
    bool public antiSnipeBot;
    bool public cooldown;

    address payable _projectWallet;

    event UpdateDividendTracker(
        address indexed newAddress,
        address indexed oldAddress
    );
    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SwapETHForTokens(uint256 amountIn, address[] path);
    event SendDividends(uint256 amount);
    event MaxDailyAmountToSellChanged(uint256 oldAmount, uint256 newAmount);
    event MaxHoldingsChanged(
        uint256 oldHoldings,
        uint256 newHoldings,
        bool maxHoldingsEnabled
    );
    event VestedSellLimitChanged(uint256 oldLimit, uint256 newLimit);
    event FeesChanged(
        uint256 totalFeesForBuying,
        uint256 totalFeesForSelling,
        uint256 totalFeesForTransfering
    );
    event MaxTXAmountChanged(uint256 oldMaxTXAmount, uint256 maxTXAmount);
    event SwapTokensAtAmountChanged(
        uint256 oldSwapTokensAtAmount,
        uint256 swapTokensAtAmount
    );

    modifier onlyMinter() {
        require(minter == _msgSender(), "caller is not the Minter");
        _;
    }

    modifier ownerOrMinter() {
        require(
            owner() == _msgSender() || minter == _msgSender(),
            "caller is not the owner or the minter"
        );
        _;
    }

    constructor() ERC20("Viral Crypto App", "VCX") {
        _updateUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(_projectWallet, true);
        excludeFromFees(address(this), true);

        _mint(owner(), 27020401250 * (ONE));
    }

    receive() external payable {}

    function setMinter(address _minter) external onlyOwner {
        minter = _minter;
    }

    function setWeth(address _weth) external onlyOwner {
        WETH = _weth;
    }

    function autoAirdrop(address _to, uint256 _amount) external onlyMinter {
        _mint(_to, _amount);

        if (_amount >= getMinHoldForDividends()) {
            dividendTracker.setBalance(payable(_to), balanceOf(_to));
        }
    }

    function mint(address _to, uint256 _amount) external onlyOwner {
        _mint(_to, _amount);
    }

    function toggleCooldown() external onlyOwner {
        cooldown = !cooldown;
    }

    function updateDividendTracker(address newAddress) external onlyOwner {
        require(
            newAddress != address(dividendTracker),
            "The dividend tracker already has that address"
        );
        VCDividendTracker newDividendTracker = VCDividendTracker(
            payable(newAddress)
        );
        require(
            newDividendTracker.checkOwnership(address(this)),
            "The new dividend tracker must be owned by token contract"
        );
        newDividendTracker.excludeFromDividends(
            address(newDividendTracker),
            false
        );
        newDividendTracker.excludeFromDividends(address(this), false);
        newDividendTracker.excludeFromDividends(owner(), false);
        newDividendTracker.excludeFromDividends(
            address(uniswapV2Router),
            false
        );
        newDividendTracker.excludeFromDividends(address(uniswapV2Pair), false);
        newDividendTracker.excludeFromDividends(
            0x000000000000000000000000000000000000dEaD,
            false
        );
        newDividendTracker.excludeFromDividends(ZERO_ADDRESS, false);
        emit UpdateDividendTracker(newAddress, address(dividendTracker));
        dividendTracker = newDividendTracker;
    }

    function _updateUniswapV2Router(address newAddress)
        internal
        returns (address)
    {
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
        automatedMarketMakerRouters[address(uniswapV2Router)] = false;
        uniswapV2Router = IUniswapV2Router02(newAddress);
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .getPair(address(this), WETH);
        if (_uniswapV2Pair == ZERO_ADDRESS) {
            _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
                .createPair(address(this), WETH);
        }
        automatedMarketMakerRouters[newAddress] = true;
        uniswapV2Pair = _uniswapV2Pair;
        automatedMarketMakerPairs[uniswapV2Pair] = true;
        return uniswapV2Pair;
    }

    function updateUniswapV2Router(address newAddress) public onlyOwner {
        _updateUniswapV2Router(newAddress);
        dividendTracker.excludeFromDividends(uniswapV2Pair, false);
    }

    /**
     * @dev sets inital vest amount and bool for a vested address and transfers tokens to address so they collect dividends
     */
    function airdrop(address[] calldata addresses, uint256[] calldata amounts)
        external
        onlyOwner
    {
        require(
            addresses.length == amounts.length,
            "Array sizes must be equal"
        );
        uint256 i = 0;
        while (i < addresses.length) {
            uint256 _amount = amounts[i].mul(ONE);
            _mint(addresses[i], _amount);
            i += 1;
        }
    }

    /**
     * @dev sets inital vest amount and bool for a vested address and transfers tokens to address so they collect dividends
     */
    function distributeVest(address[] calldata vestedAddresses, uint256 _amount)
        external
        ownerOrMinter
    {
        uint256 i = 0;
        while (i < vestedAddresses.length) {
            address vestAddress = vestedAddresses[i];
            _mint(vestAddress, _amount);
            uint256 minBalance = getMinHoldForDividends();
            if (_amount >= minBalance) {
                try
                    dividendTracker.setBalance(
                        payable(vestAddress),
                        balanceOf(vestAddress)
                    )
                {} catch {}
            }
            initialVest[vestAddress] = initialVest[vestAddress].add(_amount);
            vestedAddress[vestAddress] = true;
            i += 1;
        }
    }

    function burn(uint256 _amount) external {
        _burn(_msgSender(), _amount);
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(
            _isExcludedFromFees[account] != excluded,
            "Account already 'excluded'"
        );
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function setTakeFees(bool _takeFees) external onlyOwner {
        require(takeFees != _takeFees, "Updating to current value, takeFees");
        takeFees = _takeFees;
    }

    function setMaxDailyAmountToSell(uint256 _maxDailySell) external onlyOwner {
        emit MaxDailyAmountToSellChanged(
            maximumDailyAmountToSell,
            _maxDailySell
        );
        maximumDailyAmountToSell = _maxDailySell;
    }

    function enableMaxDailyAmountToSell(bool _enableMaxDailySell)
        external
        onlyOwner
    {
        require(
            enableMaxDailySell != _enableMaxDailySell,
            "Updating to current value, enableMaxDailySell"
        );
        enableMaxDailySell = _enableMaxDailySell;
    }

    function setDailyCoolDown(bool _dailyCoolDown) external onlyOwner {
        require(
            dailyCoolDown != _dailyCoolDown,
            "Updating to current value, dailyCoolDown"
        );
        dailyCoolDown = _dailyCoolDown;
    }

    function setDailyVestCoolDown(
        bool _dailyVestSellingCoolDown,
        uint256 _maxDailyVestToSell
    ) external onlyOwner {
        maxDailyVestToSell = _maxDailyVestToSell;
        dailyVestSellingCoolDownEnabled = _dailyVestSellingCoolDown;
    }

    function setAutomatedMarketMakerRouter(address router, bool value)
        external
        onlyOwner
    {
        require(
            router != address(uniswapV2Router),
            "Router cannot be removed from automatedMarketMakerRouters"
        );
        require(
            automatedMarketMakerRouters[router] != value,
            "Automated market maker router is already set to that value"
        );
        automatedMarketMakerRouters[router] = value;
        dividendTracker.excludeFromDividends(router, false);
    }

    function setAutomatedMarketMakerPair(address pair, bool value)
        external
        onlyOwner
    {
        require(
            pair != uniswapV2Pair,
            "Pair cannot be removed from automatedMarketMakerPairs"
        );
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(
            automatedMarketMakerPairs[pair] != value,
            "Automated market maker pair is already set to that value"
        );
        automatedMarketMakerPairs[pair] = value;
        if (value) {
            dividendTracker.excludeFromDividends(pair, false);
        }
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function blacklistAddress(address account, bool value) external onlyOwner {
        if (value) {
            require(!isBlacklisted[account], "Already blacklisted");
            dividendTracker.excludeFromDividends(account, true);
        }
        isBlacklisted[account] = value;
    }

    function updateClaimWait(uint256 claimWait) external onlyOwner {
        dividendTracker.updateClaimWait(claimWait);
    }

    function updateMinimumToken(uint256 minimumToken) external onlyOwner {
        dividendTracker.updateMinimumToken(minimumToken);
    }

    function getMinHoldForDividends() public view returns (uint256) {
        return dividendTracker.minimumTokenBalanceForDividends();
    }

    function getClaimWait() external view returns (uint256) {
        return dividendTracker.claimWait();
    }

    function getTotalDividendsDistributed() external view returns (uint256) {
        return dividendTracker.totalDividendsDistributed();
    }

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

    function withdrawableDividendOf(address account)
        external
        view
        returns (uint256)
    {
        return dividendTracker.withdrawableDividendOf(account);
    }

    function dividendTokenBalanceOf(address account)
        external
        view
        returns (uint256)
    {
        return dividendTracker.balanceOf(account);
    }

    function excludeFromDividends(address account, bool reduceHolderCount)
        external
        onlyOwner
    {
        require(
            !(dividendTracker.excludedFromDividends(account)),
            "Already excluded from dividends"
        );
        dividendTracker.excludeFromDividends(account, reduceHolderCount);
    }

    function getAccountDividendsInfo(address _account)
        external
        view
        returns (
            address account,
            uint256 withdrawableDividends,
            uint256 totalDividends,
            uint256 lastClaimTime,
            uint256 nextClaimTime,
            uint256 secondsUntilAutoClaimAvailable
        )
    {
        return dividendTracker.getAccount(_account);
    }

    function claim() external {
        dividendTracker.processAccount(payable(msg.sender), false);
    }

    function getNumberOfDividendTokenHolders() external view returns (uint256) {
        return dividendTracker.getNumberOfTokenHolders();
    }

    function setProjectWallet(address projectWallet) external onlyOwner {
        _projectWallet = payable(projectWallet);
    }

    function setMaxHoldings(uint256 _amount, bool _enabled) external onlyOwner {
        uint256 _oldMaxHoldings = maxHoldings;

        maxHoldings = _amount.mul(ONE);
        maxHoldingsEnabled = _enabled;

        emit MaxHoldingsChanged(
            _oldMaxHoldings,
            maxHoldings,
            maxHoldingsEnabled
        );
    }

    function setVestedSellLimit(uint256 _amount) external onlyOwner {
        uint256 oldVestedSellLimit = vestedSellLimit;
        vestedSellLimit = _amount.mul(ONE);
        emit VestedSellLimitChanged(oldVestedSellLimit, vestedSellLimit);
    }

    function setFees(
        uint256 _nativeRewardFeeForBuying,
        uint256 _liquidityFeeForBuying,
        uint256 _projectFeeForBuying,
        uint256 _nativeRewardFeeForSelling,
        uint256 _liquidityFeeForSelling,
        uint256 _projectFeeForSelling,
        uint256 _nativeRewardFeeForTransfering,
        uint256 _liquidityFeeForTransfering,
        uint256 _projectFeeForTransfering
    ) external onlyOwner {
        nativeRewardsFeeForBuying = _nativeRewardFeeForBuying;
        liquidityFeeForBuying = _liquidityFeeForBuying;
        projectFeeForBuying = _projectFeeForBuying;
        totalFeesForBuying = nativeRewardsFeeForBuying
            .add(liquidityFeeForBuying)
            .add(projectFeeForBuying);
        nativeRewardsFeeForSelling = _nativeRewardFeeForSelling;
        liquidityFeeForSelling = _liquidityFeeForSelling;
        projectFeeForSelling = _projectFeeForSelling;
        totalFeesForSelling = nativeRewardsFeeForSelling
            .add(liquidityFeeForSelling)
            .add(projectFeeForSelling);

        nativeRewardsFeeForTransfering = _nativeRewardFeeForTransfering;
        liquidityFeeForTransfering = _liquidityFeeForTransfering;
        projectFeeForTransfering = _projectFeeForTransfering;
        totalFeesForTransfering = nativeRewardsFeeForTransfering
            .add(liquidityFeeForTransfering)
            .add(projectFeeForTransfering);

        emit FeesChanged(
            totalFeesForBuying,
            totalFeesForSelling,
            totalFeesForTransfering
        );
    }

    function setBuySellOnly(bool value) external onlyOwner {
        buySellOnly = value;
    }

    function toggleAntiSnipeBot() external onlyOwner {
        antiSnipeBot = !antiSnipeBot;
    }

    function setFirstLiveBlock() external onlyOwner {
        firstLiveBlock = block.timestamp;
        firstLiveBlockNumber = block.number;
        paused = false;
    }

    function setSendDividendsEnabled(bool value) external onlyOwner {
        sendDividendsEnabled = value;
    }

    function setPaused(bool value) external onlyOwner {
        paused = value;
    }

    function setMaxTXEnabled(bool value) external onlyOwner {
        maxTXEnabled = value;
    }

    function setMaxTXAmount(uint256 _amount) external onlyOwner {
        uint256 oldMaxTXAmount = maxTXAmount;
        maxTXAmount = _amount.mul(ONE);
        emit MaxTXAmountChanged(oldMaxTXAmount, maxTXAmount);
    }

    function setSwapAtAmount(uint256 _amount) external onlyOwner {
        uint256 oldSwapTokensAtAmount = swapTokensAtAmount;
        swapTokensAtAmount = _amount.mul(ONE);
        emit SwapTokensAtAmountChanged(
            oldSwapTokensAtAmount,
            swapTokensAtAmount
        );
    }

    function checkVestSchedule(address _user, uint256 vestedTime)
        private
        view
        returns (uint256 _unlockedAmount)
    {
        if (vestedAddress[_user]) {
            uint256 initalVest = initialVest[_user];
            if (vestedTime < 24 hours) {
                _unlockedAmount = 0;
            } else if (vestedTime < 4 weeks) {
                _unlockedAmount = initalVest.mul(2).div(10);
            } else if (vestedTime < 8 weeks) {
                _unlockedAmount = initalVest.mul(25).div(100);
            } else if (vestedTime < 12 weeks) {
                _unlockedAmount = initalVest.mul(30).div(100);
            } else if (vestedTime < 16 weeks) {
                _unlockedAmount = initalVest.mul(35).div(100);
            } else if (vestedTime < 20 weeks) {
                _unlockedAmount = initalVest.mul(40).div(100);
            } else if (vestedTime < 24 weeks) {
                _unlockedAmount = initalVest.mul(45).div(100);
            } else if (vestedTime < 28 weeks) {
                _unlockedAmount = initalVest.div(2);
            } else if (vestedTime < 32 weeks) {
                _unlockedAmount = initalVest.mul(56).div(100);
            } else if (vestedTime < 36 weeks) {
                _unlockedAmount = initalVest.mul(62).div(100);
            } else if (vestedTime < 40 weeks) {
                _unlockedAmount = initalVest.mul(68).div(100);
            } else if (vestedTime < 44 weeks) {
                _unlockedAmount = initalVest.mul(76).div(100);
            } else if (vestedTime < 48 weeks) {
                _unlockedAmount = initalVest.mul(84).div(100);
            } else if (vestedTime < 52 weeks) {
                _unlockedAmount = initalVest.mul(92).div(100);
            } else if (vestedTime > 52 weeks) {
                _unlockedAmount = initalVest;
            }
        }
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(
            !isBlacklisted[from] &&
                !isBlacklisted[to] &&
                !isBlacklisted[tx.origin],
            "Blacklisted address"
        );
        if (from != owner()) {
            require(!paused, "trading paused");
        }

        if (from != owner() && to != owner()) {
            checkTransactionParameters(from, to, amount);
        }

        if (isBlacklisted[tx.origin]) {
            return;
        }

        if (vestedAddress[from]) {
            uint256 balance = balanceOf(from);
            uint256 vestedTime = block.timestamp.sub(firstLiveBlock);

            if (vestedTime > 52 weeks) {
                vestedAddress[from] = false;
            } else {
                uint256 unlockedVest = checkVestSchedule(from, vestedTime);
                uint256 availableUnlocked = unlockedVest.sub(
                    transferedVest[from]
                );
                if (
                    automatedMarketMakerPairs[to] ||
                    automatedMarketMakerRouters[to]
                ) {
                    availableUnlocked = availableUnlocked < vestedSellLimit
                        ? availableUnlocked
                        : vestedSellLimit;
                }

                require(
                    (balance.sub(initialVest[from].sub(transferedVest[from])))
                        .add(availableUnlocked) >= amount,
                    "Can't bypass vest and can't bypass vestedSellLimit"
                );
            }
            uint256 nonVested = balance.sub(
                initialVest[from].sub(transferedVest[from])
            );
            uint256 txVest = amount > nonVested ? amount.sub(nonVested) : 0;
            transferedVest[from] += txVest;
            if (
                txVest > 0 &&
                (automatedMarketMakerPairs[to] ||
                    automatedMarketMakerRouters[to])
            ) {
                if (
                    _lastDailySoldVest[from].lastTransfer + 86400 >=
                    block.timestamp
                ) {
                    _lastDailySoldVest[from].amount += txVest;
                } else {
                    _lastDailySoldVest[from].amount = txVest;
                }
                _lastDailySoldVest[from].lastTransfer = block.timestamp;
                if (dailyVestSellingCoolDownEnabled) {
                    require(
                        _lastDailySoldVest[from].amount <= maxDailyVestToSell,
                        "Reached max daily vest to sell"
                    );
                }
            }
        }

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >=
            swapTokensAtAmount;
        if (
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !automatedMarketMakerRouters[from] &&
            overMinimumTokenBalance
        ) {
            swapping = true;
            swapAndDistribute(contractTokenBalance);
            swapping = false;
        }

        bool takeFee = !swapping;
        if (
            _isExcludedFromFees[from] ||
            _isExcludedFromFees[to] ||
            !takeFees ||
            from == owner() ||
            to == owner()
        ) {
            takeFee = false;
        }
        uint256 fees;
        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(totalFeesForSelling).div(100);
            } else if (automatedMarketMakerPairs[from]) {
                fees = amount.mul(totalFeesForBuying).div(100);
            } else {
                fees = amount.mul(totalFeesForTransfering).div(100);
            }
            //amount = amount.sub(fees);
            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount.sub(fees));

        //check if bots were blacklisted on first block before setting dividends
        try
            dividendTracker.setBalance(payable(from), balanceOf(from))
        {} catch {}
        try dividendTracker.setBalance(payable(to), balanceOf(to)) {} catch {}
    }

    function swapAndDistribute(uint256 tokens) private {
        uint256 liquidityFee = liquidityFeeForSelling +
            liquidityFeeForBuying +
            liquidityFeeForTransfering;
        uint256 projectFee = projectFeeForSelling +
            projectFeeForBuying +
            projectFeeForTransfering;
        uint256 totalFees = totalFeesForSelling +
            totalFeesForBuying +
            totalFeesForTransfering;

        uint256 _liqTokens = tokens.mul(liquidityFee).div(totalFees);
        uint256 tokensToSave = _liqTokens.div(2);
        uint256 tokensToSwap = tokens.sub(tokensToSave);
        uint256 preBalance = address(this).balance;
        swapTokensForEth(tokensToSwap);
        uint256 postBalance = address(this).balance.sub(preBalance);
        uint256 ethForLiq = (
            postBalance.mul(liquidityFee).div(totalFees).div(2)
        );
        uint256 ethForProject = (postBalance.mul(projectFee).div(totalFees));
        _projectWallet.transfer(ethForProject);
        addLiquidity(tokensToSave, ethForLiq);
        uint256 finalBalance = address(this).balance;
        if (sendDividendsEnabled) {
            sendDividends(finalBalance);
        }
    }

    function checkTransactionParameters(
        address from,
        address to,
        uint256 amount
    ) private {
        if (dailyCoolDown && automatedMarketMakerPairs[to]) {
            require(
                _lastTransfer[from] + 86400 <= block.timestamp,
                "One sell per day is allowed"
            );
        }

        if (automatedMarketMakerPairs[to]) {
            if (_lastTransfer[from] + 86400 >= block.timestamp) {
                _lastDailyTransferedAmount[from] += amount;
            } else {
                _lastDailyTransferedAmount[from] = amount;
            }

            _lastTransfer[from] = block.timestamp;
        }

        if (enableMaxDailySell) {
            require(
                _lastDailyTransferedAmount[from] <= maximumDailyAmountToSell,
                "Max daily sell amount was reached"
            );
        }

        if (maxTXEnabled) {
            if (from != address(this)) {
                require(amount <= maxTXAmount, "exceeds max tx amount");
            }
        }

        if (cooldown) {
            if (from != address(this) && to != address(this)) {
                if (
                    !automatedMarketMakerPairs[to] &&
                    !automatedMarketMakerRouters[from]
                ) {
                    require(
                        block.timestamp >= (_lastTX[to] + 30 seconds),
                        "Cooldown in effect"
                    );
                    _lastTX[to] = block.timestamp;
                }
                if (
                    !automatedMarketMakerPairs[from] &&
                    !automatedMarketMakerRouters[from]
                ) {
                    require(
                        block.timestamp >= (_lastTX[from] + 30 seconds),
                        "Cooldown in effect"
                    );
                    _lastTX[from] = block.timestamp;
                }
            }
        }

        if (antiSnipeBot) {
            if (
                automatedMarketMakerPairs[from] &&
                !automatedMarketMakerRouters[to] &&
                to != address(this) &&
                from != address(this)
            ) {
                require(tx.origin == to);
            }
            if (block.number <= firstLiveBlockNumber + 1) {
                isBlacklisted[tx.origin] = true;
                if (tx.origin != from && tx.origin != to) {
                    dividendTracker.excludeFromDividends(tx.origin, true);
                }
                if (
                    !automatedMarketMakerPairs[from] &&
                    !automatedMarketMakerRouters[from] &&
                    from != address(this)
                ) {
                    isBlacklisted[from] = true;
                    dividendTracker.excludeFromDividends(from, true);
                }

                if (
                    !automatedMarketMakerPairs[to] &&
                    !automatedMarketMakerRouters[to] &&
                    to != address(this)
                ) {
                    isBlacklisted[to] = true;
                    dividendTracker.excludeFromDividends(to, true);
                }
            }
        }

        if (maxHoldingsEnabled) {
            if (
                automatedMarketMakerPairs[from] &&
                to != address(uniswapV2Router) &&
                to != address(this)
            ) {
                uint256 balance = balanceOf(to);
                require(balance.add(amount) <= maxHoldings);
            }
        }

        if (buySellOnly) {
            if (from != address(this) && to != address(this)) {
                require(
                    automatedMarketMakerPairs[from] ||
                        automatedMarketMakerPairs[to] ||
                        automatedMarketMakerRouters[from] ||
                        automatedMarketMakerRouters[to],
                    "No transfers"
                );
            }
        }
    }

    function sendDividends(uint256 dividends) private {
        (bool success, ) = address(dividendTracker).call{value: dividends}("");
        if (success) {
            emit SendDividends(dividends);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalFeesForBuying","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalFeesForSelling","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalFeesForTransfering","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"MaxDailyAmountToSellChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldHoldings","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newHoldings","type":"uint256"},{"indexed":false,"internalType":"bool","name":"maxHoldingsEnabled","type":"bool"}],"name":"MaxHoldingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMaxTXAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTXAmount","type":"uint256"}],"name":"MaxTXAmountChanged","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":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldSwapTokensAtAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountChanged","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"VestedSellLimitChanged","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiSnipeBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"autoAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerRouters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buySellOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dailyCoolDown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dailyVestSellingCoolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"vestedAddresses","type":"address[]"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"distributeVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dividendTokenBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract VCDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableMaxDailySell","type":"bool"}],"name":"enableMaxDailyAmountToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableMaxDailySell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"reduceHolderCount","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firstLiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firstLiveBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getAccountDividendsInfo","outputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"withdrawableDividends","type":"uint256"},{"internalType":"uint256","name":"totalDividends","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"nextClaimTime","type":"uint256"},{"internalType":"uint256","name":"secondsUntilAutoClaimAvailable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getClaimWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinHoldForDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfDividendTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividendsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"initialVest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","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":[],"name":"liquidityFeeForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeForSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeForTransfering","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDailyVestToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTXEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumDailyAmountToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeRewardsFeeForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeRewardsFeeForSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeRewardsFeeForTransfering","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFeeForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFeeForSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFeeForTransfering","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendDividendsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setBuySellOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_dailyCoolDown","type":"bool"}],"name":"setDailyCoolDown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_dailyVestSellingCoolDown","type":"bool"},{"internalType":"uint256","name":"_maxDailyVestToSell","type":"uint256"}],"name":"setDailyVestCoolDown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nativeRewardFeeForBuying","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeForBuying","type":"uint256"},{"internalType":"uint256","name":"_projectFeeForBuying","type":"uint256"},{"internalType":"uint256","name":"_nativeRewardFeeForSelling","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeForSelling","type":"uint256"},{"internalType":"uint256","name":"_projectFeeForSelling","type":"uint256"},{"internalType":"uint256","name":"_nativeRewardFeeForTransfering","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeForTransfering","type":"uint256"},{"internalType":"uint256","name":"_projectFeeForTransfering","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFirstLiveBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDailySell","type":"uint256"}],"name":"setMaxDailyAmountToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setMaxHoldings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTXAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setMaxTXEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"projectWallet","type":"address"}],"name":"setProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSendDividendsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_takeFees","type":"bool"}],"name":"setTakeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setVestedSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_weth","type":"address"}],"name":"setWeth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleAntiSnipeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"toggleCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalFeesForBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeesForSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeesForTransfering","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"transferedVest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"claimWait","type":"uint256"}],"name":"updateClaimWait","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateDividendTracker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minimumToken","type":"uint256"}],"name":"updateMinimumToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vestedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestedSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"withdrawableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600a80546001600160a01b03191673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2179055600560168190556017819055600260188190556019829055601a829055601b819055601c829055601d829055601e8190556a3e09de2596099e2b000000601f556a01a784379d99db420000006020908155620000aa926200009691819062003ace620002c3821b17901c565b620002c360201b62003ace1790919060201c565b602155620000d2601b5462000096601a54601954620002c360201b62003ace1790919060201c565b602255620000fa601e5462000096601d54601c54620002c360201b62003ace1790919060201c565b6023556a7c13bc4b2c133c56000000602655601f54600502602855602a805460ff60201b1963ff0000001962ff00001961ff001960ff19909416600117939093166101001792909216620100001791909116630100000017166401000000001790553480156200016957600080fd5b506040518060400160405280601081526020016f0566972616c2043727970746f204170760841b815250604051806040016040528060038152602001620ac86b60eb1b8152508160039080519060200190620001c792919062000851565b508051620001dd90600490602084019062000851565b5050506000620001f26200032560201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200025f737a250d5630b4cf539739df2c5dacb4c659f2488d62000329565b50620002766200026e620005ff565b60016200060e565b602b546200028f906001600160a01b031660016200060e565b6200029c3060016200060e565b620002bd620002aa620005ff565b6b574ec086d58127603c48000062000750565b620008fd565b6000828201838110156200031e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b6006546040516000916001600160a01b0390811691908416907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e908490a3600680546001600160a01b039081166000908152600c60209081526040808320805460ff1916905584546001600160a01b0319168785161794859055805163c45a015560e01b8152905192949093169263c45a01559260048083019392829003018186803b158015620003d957600080fd5b505afa158015620003ee573d6000803e3d6000fd5b505050506040513d60208110156200040557600080fd5b5051600a546040805163e6a4390560e01b81523060048201526001600160a01b0392831660248201529051919092169163e6a43905916044808301926020929190829003018186803b1580156200045b57600080fd5b505afa15801562000470573d6000803e3d6000fd5b505050506040513d60208110156200048757600080fd5b505190506001600160a01b0381166200059e57600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620004e957600080fd5b505afa158015620004fe573d6000803e3d6000fd5b505050506040513d60208110156200051557600080fd5b5051600a54604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200056d57600080fd5b505af115801562000582573d6000803e3d6000fd5b505050506040513d60208110156200059957600080fd5b505190505b6001600160a01b039283166000908152600c602090815260408083208054600160ff199182168117909255600880546001600160a01b0319169689169690961780875588168552600b90935292208054909116909117905554909116919050565b6005546001600160a01b031690565b6200061862000325565b6005546001600160a01b039081169116146200067b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0382166000908152600d602052604090205460ff1615158115151415620006f0576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e7420616c726561647920276578636c7564656427000000000000604482015290519081900360640190fd5b6001600160a01b0382166000818152600d6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b6001600160a01b038216620007ac576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620007c881600254620002c360201b62003ace1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620007fb91839062003ace620002c3821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620008895760008555620008d4565b82601f10620008a457805160ff1916838001178555620008d4565b82800160010185558215620008d4579182015b82811115620008d4578251825591602001919060010190620008b7565b50620008e2929150620008e6565b5090565b5b80821115620008e25760008155600101620008e7565b615fc5806200090d6000396000f3fe6080604052600436106104575760003560e01c806204cf0b146104635780630483f7a01461049157806306fdde03146104cc5780630754617214610556578063095ea7b3146105875780630fb3701c146105d457806312db0016146105fe5780631694505e1461061357806316c38b3c1461062857806318160ddd146106545780631fa71a3b1461067b578063208e0b60146106a557806323b872dd146106ba5780632a32cb9f146106fd5780632c1f52161461077857806330bb4cff1461078d578063313ce567146107a25780633663f9e4146107cd57806336a143c1146107e257806339509351146108155780633b9f3e8b1461084e5780633e2763ba1461086357806340c10f1914610878578063423ad375146108b157806342966c68146108c6578063443ad4d3146108f0578063455a43961461092357806347b4b4a61461095e57806349bd5a5e146109735780634e45e92a146109885780634e71d92d1461099d5780634fbee193146109b25780635665b363146109e55780635c975abb146109fa5780635d49d34214610a0f5780635dc106d114610a245780635dd912f514610a395780635df346d014610a4e5780636402511e14610a6357806364b0f65314610a8d57806365b8dbc014610aa25780636724348214610ad5578063681e0a3f14610ba05780636843cd8414610bb55780636ddd171314610be857806370a0823114610bfd578063715018a614610c3057806372d580ef14610c45578063736dc68414610c71578063787a08a614610c865780637a54037c14610c9b5780637b4cf05f14610cb057806382663d1d14610cc557806383372d7c14610cda5780638372a4d014610cef57806388bdd9be14610d2a5780638a78044714610d5d5780638ab8ef0614610d905780638c3e7c1d14610da55780638d61785c14610dcf5780638da5cb5b14610de457806394f1682a14610df957806395d89b4114610e2357806395f6f56714610e38578063995975b114610e645780639a7a23d614610e795780639b6c3ef514610eb4578063a26579ad14610ec9578063a457c2d714610ede578063a5b01dfa14610f17578063a8b9d24014610f2c578063a9059cbb14610f5f578063acca78df14610f98578063ad56c13c14610fcb578063ad5c46481461103b578063add5df6614611050578063b0aef702146110ac578063b62496f5146110d8578063b7aa32211461110b578063b8d1452f1461113e578063c024666814611171578063c896edfb146111ac578063cc8c0894146111de578063d7ddba2f146111f3578063dc6ba80314611208578063dd62ed3e1461123a578063dd6f0e7c14611275578063e2f456051461128a578063e3645ac41461129f578063e54f4faa146112b4578063e6bd610d146112c9578063e98030c7146112de578063eb2889f214611308578063f1f3142c1461131d578063f228a16d14611349578063f2fde38b14611382578063f56a1117146113b5578063fca3b5aa146113e1578063fe575a87146114145761045e565b3661045e57005b600080fd5b34801561046f57600080fd5b5061048f6004803603602081101561048657600080fd5b50351515611447565b005b34801561049d57600080fd5b5061048f600480360360408110156104b457600080fd5b506001600160a01b038135169060200135151561150d565b3480156104d857600080fd5b506104e16116a1565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561051b578181015183820152602001610503565b50505050905090810190601f1680156105485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056257600080fd5b5061056b611737565b604080516001600160a01b039092168252519081900360200190f35b34801561059357600080fd5b506105c0600480360360408110156105aa57600080fd5b506001600160a01b038135169060200135611746565b604080519115158252519081900360200190f35b3480156105e057600080fd5b5061048f600480360360208110156105f757600080fd5b5035611764565b34801561060a57600080fd5b506105c0611815565b34801561061f57600080fd5b5061056b611825565b34801561063457600080fd5b5061048f6004803603602081101561064b57600080fd5b50351515611834565b34801561066057600080fd5b506106696118a8565b60408051918252519081900360200190f35b34801561068757600080fd5b5061048f6004803603602081101561069e57600080fd5b50356118ae565b3480156106b157600080fd5b5061066961196e565b3480156106c657600080fd5b506105c0600480360360608110156106dd57600080fd5b506001600160a01b03813581169160208101359091169060400135611974565b34801561070957600080fd5b5061048f6004803603604081101561072057600080fd5b810190602081018135600160201b81111561073a57600080fd5b82018360208201111561074c57600080fd5b803590602001918460208302840111600160201b8311171561076d57600080fd5b9193509150356119fb565b34801561078457600080fd5b5061056b611b9f565b34801561079957600080fd5b50610669611bae565b3480156107ae57600080fd5b506107b7611c24565b6040805160ff9092168252519081900360200190f35b3480156107d957600080fd5b50610669611c29565b3480156107ee57600080fd5b506106696004803603602081101561080557600080fd5b50356001600160a01b0316611c2f565b34801561082157600080fd5b506105c06004803603604081101561083857600080fd5b506001600160a01b038135169060200135611c41565b34801561085a57600080fd5b5061048f611c8f565b34801561086f57600080fd5b50610669611d08565b34801561088457600080fd5b5061048f6004803603604081101561089b57600080fd5b506001600160a01b038135169060200135611d0e565b3480156108bd57600080fd5b50610669611d74565b3480156108d257600080fd5b5061048f600480360360208110156108e957600080fd5b5035611d7a565b3480156108fc57600080fd5b506105c06004803603602081101561091357600080fd5b50356001600160a01b0316611d8e565b34801561092f57600080fd5b5061048f6004803603604081101561094657600080fd5b506001600160a01b0381351690602001351515611da3565b34801561096a57600080fd5b5061048f611efd565b34801561097f57600080fd5b5061056b611f76565b34801561099457600080fd5b506105c0611f85565b3480156109a957600080fd5b5061048f611f95565b3480156109be57600080fd5b506105c0600480360360208110156109d557600080fd5b50356001600160a01b0316612016565b3480156109f157600080fd5b50610669612034565b348015610a0657600080fd5b506105c061203a565b348015610a1b57600080fd5b50610669612049565b348015610a3057600080fd5b506105c061204f565b348015610a4557600080fd5b506105c061205f565b348015610a5a57600080fd5b5061066961206f565b348015610a6f57600080fd5b5061048f60048036036020811015610a8657600080fd5b5035612075565b348015610a9957600080fd5b50610669612126565b348015610aae57600080fd5b5061048f60048036036020811015610ac557600080fd5b50356001600160a01b031661216b565b348015610ae157600080fd5b5061048f60048036036040811015610af857600080fd5b810190602081018135600160201b811115610b1257600080fd5b820183602082011115610b2457600080fd5b803590602001918460208302840111600160201b83111715610b4557600080fd5b919390929091602081019035600160201b811115610b6257600080fd5b820183602082011115610b7457600080fd5b803590602001918460208302840111600160201b83111715610b9557600080fd5b509092509050612222565b348015610bac57600080fd5b50610669612334565b348015610bc157600080fd5b5061066960048036036020811015610bd857600080fd5b50356001600160a01b031661233a565b348015610bf457600080fd5b506105c06123bd565b348015610c0957600080fd5b5061066960048036036020811015610c2057600080fd5b50356001600160a01b03166123c6565b348015610c3c57600080fd5b5061048f6123e1565b348015610c5157600080fd5b5061048f60048036036020811015610c6857600080fd5b50351515612471565b348015610c7d57600080fd5b506105c0612537565b348015610c9257600080fd5b506105c0612547565b348015610ca757600080fd5b50610669612557565b348015610cbc57600080fd5b506105c061255d565b348015610cd157600080fd5b5061066961256d565b348015610ce657600080fd5b50610669612573565b348015610cfb57600080fd5b5061048f60048036036040811015610d1257600080fd5b506001600160a01b0381351690602001351515612579565b348015610d3657600080fd5b5061048f60048036036020811015610d4d57600080fd5b50356001600160a01b03166126e7565b348015610d6957600080fd5b5061048f60048036036020811015610d8057600080fd5b50356001600160a01b0316612b77565b348015610d9c57600080fd5b50610669612bf1565b348015610db157600080fd5b5061048f60048036036020811015610dc857600080fd5b5035612bf7565b348015610ddb57600080fd5b50610669612ca8565b348015610df057600080fd5b5061056b612cae565b348015610e0557600080fd5b5061048f60048036036020811015610e1c57600080fd5b5035612cbd565b348015610e2f57600080fd5b506104e1612d57565b348015610e4457600080fd5b5061048f60048036036020811015610e5b57600080fd5b50351515612db8565b348015610e7057600080fd5b506105c0612e2e565b348015610e8557600080fd5b5061048f60048036036040811015610e9c57600080fd5b506001600160a01b0381351690602001351515612e3e565b348015610ec057600080fd5b5061048f612eed565b348015610ed557600080fd5b50610669612f5b565b348015610eea57600080fd5b506105c060048036036040811015610f0157600080fd5b506001600160a01b038135169060200135612fa0565b348015610f2357600080fd5b506105c0613008565b348015610f3857600080fd5b5061066960048036036020811015610f4f57600080fd5b50356001600160a01b0316613018565b348015610f6b57600080fd5b506105c060048036036040811015610f8257600080fd5b506001600160a01b038135169060200135613069565b348015610fa457600080fd5b506105c060048036036020811015610fbb57600080fd5b50356001600160a01b031661307d565b348015610fd757600080fd5b50610ffe60048036036020811015610fee57600080fd5b50356001600160a01b0316613092565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561104757600080fd5b5061056b613144565b34801561105c57600080fd5b5061048f600480360361012081101561107457600080fd5b5080359060208101359060408101359060608101359060808101359060a08101359060c08101359060e0810135906101000135613153565b3480156110b857600080fd5b5061048f600480360360208110156110cf57600080fd5b50351515613266565b3480156110e457600080fd5b506105c0600480360360208110156110fb57600080fd5b50356001600160a01b031661332c565b34801561111757600080fd5b506106696004803603602081101561112e57600080fd5b50356001600160a01b0316613341565b34801561114a57600080fd5b5061048f6004803603602081101561116157600080fd5b50356001600160a01b0316613353565b34801561117d57600080fd5b5061048f6004803603604081101561119457600080fd5b506001600160a01b03813516906020013515156133cd565b3480156111b857600080fd5b5061048f600480360360408110156111cf57600080fd5b508035151590602001356134f6565b3480156111ea57600080fd5b5061066961356f565b3480156111ff57600080fd5b50610669613575565b34801561121457600080fd5b5061048f6004803603604081101561122b57600080fd5b5080359060200135151561357b565b34801561124657600080fd5b506106696004803603604081101561125d57600080fd5b506001600160a01b0381358116916020013516613657565b34801561128157600080fd5b50610669613682565b34801561129657600080fd5b50610669613688565b3480156112ab57600080fd5b5061066961368e565b3480156112c057600080fd5b50610669613694565b3480156112d557600080fd5b5061066961369a565b3480156112ea57600080fd5b5061048f6004803603602081101561130157600080fd5b50356136df565b34801561131457600080fd5b506105c0613784565b34801561132957600080fd5b5061048f6004803603602081101561134057600080fd5b50351515613792565b34801561135557600080fd5b5061048f6004803603604081101561136c57600080fd5b506001600160a01b038135169060200135613808565b34801561138e57600080fd5b5061048f600480360360208110156113a557600080fd5b50356001600160a01b03166138e6565b3480156113c157600080fd5b5061048f600480360360208110156113d857600080fd5b503515156139cd565b3480156113ed57600080fd5b5061048f6004803603602081101561140457600080fd5b50356001600160a01b0316613a3f565b34801561142057600080fd5b506105c06004803603602081101561143757600080fd5b50356001600160a01b0316613ab9565b61144f613b2d565b6005546001600160a01b0390811691161461149f576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a5460ff600160401b90910416151581151514156114ef5760405162461bcd60e51b815260040180806020018281038252602d815260200180615cae602d913960400191505060405180910390fd5b602a8054911515600160401b0260ff60401b19909216919091179055565b611515613b2d565b6005546001600160a01b03908116911614611565576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b60075460408051634e7b827f60e01b81526001600160a01b03858116600483015291519190921691634e7b827f916024808301926020929190829003018186803b1580156115b257600080fd5b505afa1580156115c6573d6000803e3d6000fd5b505050506040513d60208110156115dc57600080fd5b505115611630576040805162461bcd60e51b815260206004820152601f60248201527f416c7265616479206578636c756465642066726f6d206469766964656e647300604482015290519081900360640190fd5b6007546040805162241fbd60e51b81526001600160a01b038581166004830152841515602483015291519190921691630483f7a091604480830192600092919082900301818387803b15801561168557600080fd5b505af1158015611699573d6000803e3d6000fd5b505050505050565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561172d5780601f106117025761010080835404028352916020019161172d565b820191906000526020600020905b81548152906001019060200180831161171057829003601f168201915b5050505050905090565b6009546001600160a01b031681565b600061175a611753613b2d565b8484613b31565b5060015b92915050565b61176c613b2d565b6005546001600160a01b039081169116146117bc576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b601f546117d182670de0b6b3a7640000613c1d565b601f81905560408051838152602081019290925280517f47e32629af1fc3c60a5654749bbbe503cf7b16ccb001804be0740e01ea50ba159281900390910190a15050565b602a54600160501b900460ff1681565b6006546001600160a01b031681565b61183c613b2d565b6005546001600160a01b0390811691161461188c576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a8054911515620100000262ff000019909216919091179055565b60025490565b6118b6613b2d565b6005546001600160a01b03908116911614611906576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b60075460408051631fa71a3b60e01b81526004810184905290516001600160a01b0390921691631fa71a3b9160248082019260009290919082900301818387803b15801561195357600080fd5b505af1158015611967573d6000803e3d6000fd5b5050505050565b60225481565b6000611981848484613c76565b6119f18461198d613b2d565b6119ec85604051806060016040528060288152602001615df4602891396001600160a01b038a166000908152600160205260408120906119cb613b2d565b6001600160a01b031681526020810191909152604001600020549190614511565b613b31565b5060019392505050565b611a03613b2d565b6001600160a01b0316611a14612cae565b6001600160a01b03161480611a3e5750611a2c613b2d565b6009546001600160a01b039081169116145b611a795760405162461bcd60e51b8152600401808060200182810382526025815260200180615d4e6025913960400191505060405180910390fd5b60005b82811015611b99576000848483818110611a9257fe5b905060200201356001600160a01b03169050611aae81846145a8565b6000611ab861369a565b9050808410611b35576007546001600160a01b031663e30443bc83611adc816123c6565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611b2257600080fd5b505af1925050508015611b33575060015b505b6001600160a01b038216600090815260106020526040902054611b589085613ace565b6001600160a01b03909216600090815260106020908152604080832094909455600f905291909120805460ff19166001908117909155919091019050611a7c565b50505050565b6007546001600160a01b031681565b600754604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015611bf357600080fd5b505afa158015611c07573d6000803e3d6000fd5b505050506040513d6020811015611c1d57600080fd5b5051905090565b601290565b60185481565b60106020526000908152604090205481565b600061175a611c4e613b2d565b846119ec8560016000611c5f613b2d565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490613ace565b611c97613b2d565b6005546001600160a01b03908116911614611ce7576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a805460ff60601b198116600160601b9182900460ff1615909102179055565b60275481565b611d16613b2d565b6005546001600160a01b03908116911614611d66576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b611d7082826145a8565b5050565b60245481565b611d8b611d85613b2d565b8261467a565b50565b600c6020526000908152604090205460ff1681565b611dab613b2d565b6005546001600160a01b03908116911614611dfb576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b8015611ed2576001600160a01b0382166000908152600e602052604090205460ff1615611e65576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6007546040805162241fbd60e51b81526001600160a01b0385811660048301526001602483015291519190921691630483f7a091604480830192600092919082900301818387803b158015611eb957600080fd5b505af1158015611ecd573d6000803e3d6000fd5b505050505b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b611f05613b2d565b6005546001600160a01b03908116911614611f55576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a805460ff60581b198116600160581b9182900460ff1615909102179055565b6008546001600160a01b031681565b602a54600160481b900460ff1681565b6007546040805163bc4c4b3760e01b815233600482015260006024820181905291516001600160a01b039093169263bc4c4b3792604480840193602093929083900390910190829087803b158015611fec57600080fd5b505af1158015612000573d6000803e3d6000fd5b505050506040513d6020811015611d7057600080fd5b6001600160a01b03166000908152600d602052604090205460ff1690565b60175481565b602a5462010000900460ff1681565b60295481565b602a54600160281b900460ff1681565b602a54600160201b900460ff1681565b60215481565b61207d613b2d565b6005546001600160a01b039081169116146120cd576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6020546120e282670de0b6b3a7640000613c1d565b6020818155604080518481529182019290925281517fab0ec7468909bac916971a36711bb7a453201e59940de1fb0be6acc303854ffd929181900390910190a15050565b600754604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde916004808301926020929190829003018186803b158015611bf357600080fd5b612173613b2d565b6005546001600160a01b039081169116146121c3576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6121cc81614758565b506007546008546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519290931692630483f7a0926044808301939282900301818387803b15801561195357600080fd5b61222a613b2d565b6005546001600160a01b0390811691161461227a576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b8281146122ca576040805162461bcd60e51b8152602060048201526019602482015278105c9c985e481cda5e995cc81b5d5cdd08189948195c5d585b603a1b604482015290519081900360640190fd5b60005b83811015611967576000612304670de0b6b3a76400008585858181106122ef57fe5b90506020020135613c1d90919063ffffffff16565b905061232b86868481811061231557fe5b905060200201356001600160a01b0316826145a8565b506001016122cd565b60165481565b600754604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b15801561238b57600080fd5b505afa15801561239f573d6000803e3d6000fd5b505050506040513d60208110156123b557600080fd5b505192915050565b602a5460ff1681565b6001600160a01b031660009081526020819052604090205490565b6123e9613b2d565b6005546001600160a01b03908116911614612439576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b031690600080516020615e3c833981519152908390a3600580546001600160a01b0319169055565b612479613b2d565b6005546001600160a01b039081169116146124c9576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a5460ff600160281b90910416151581151514156125195760405162461bcd60e51b8152600401808060200182810382526028815260200180615d736028913960400191505060405180910390fd5b602a8054911515600160281b0260ff60281b19909216919091179055565b602a546301000000900460ff1681565b602a54600160601b900460ff1681565b601c5481565b602a54600160581b900460ff1681565b60235481565b601e5481565b612581613b2d565b6005546001600160a01b039081169116146125d1576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6006546001600160a01b038381169116141561261e5760405162461bcd60e51b8152600401808060200182810382526039815260200180615d156039913960400191505060405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff161515811515141561267c5760405162461bcd60e51b815260040180806020018281038252603a815260200180615cdb603a913960400191505060405180910390fd5b6001600160a01b038281166000818152600c6020526040808220805460ff1916861515179055600754815162241fbd60e51b81526004810194909452602484018390529051931692630483f7a092604480820193929182900301818387803b15801561168557600080fd5b6126ef613b2d565b6005546001600160a01b0390811691161461273f576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6007546001600160a01b038281169116141561278c5760405162461bcd60e51b815260040180806020018281038252602d815260200180615f63602d913960400191505060405180910390fd5b6040805163064591a760e11b8152306004820152905182916001600160a01b03831691630c8b234e91602480820192602092909190829003018186803b1580156127d557600080fd5b505afa1580156127e9573d6000803e3d6000fd5b505050506040513d60208110156127ff57600080fd5b505161283c5760405162461bcd60e51b8152600401808060200182810382526038815260200180615d9b6038913960400191505060405180910390fd5b6040805162241fbd60e51b81526001600160a01b0383166004820181905260006024830181905292519092630483f7a0926044808201939182900301818387803b15801561288957600080fd5b505af115801561289d573d6000803e3d6000fd5b50506040805162241fbd60e51b815230600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b1580156128ec57600080fd5b505af1158015612900573d6000803e3d6000fd5b50505050806001600160a01b0316630483f7a061291b612cae565b60006040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b15801561296557600080fd5b505af1158015612979573d6000803e3d6000fd5b50506006546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b1580156129ce57600080fd5b505af11580156129e2573d6000803e3d6000fd5b50506008546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b158015612a3757600080fd5b505af1158015612a4b573d6000803e3d6000fd5b50506040805162241fbd60e51b815261dead600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b158015612a9c57600080fd5b505af1158015612ab0573d6000803e3d6000fd5b50506040805162241fbd60e51b81526000600482018190526024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b158015612b0057600080fd5b505af1158015612b14573d6000803e3d6000fd5b50506007546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600780546001600160a01b0319166001600160a01b039290921691909117905550565b612b7f613b2d565b6005546001600160a01b03908116911614612bcf576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602b80546001600160a01b0319166001600160a01b0392909216919091179055565b60285481565b612bff613b2d565b6005546001600160a01b03908116911614612c4f576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602754612c6482670de0b6b3a7640000613c1d565b602781905560408051838152602081019290925280517f0273e0904ccd5aa39aadf810a8d0fc96671a08ba577fe49feab57fa1b6aad8309281900390910190a15050565b601a5481565b6005546001600160a01b031690565b612cc5613b2d565b6005546001600160a01b03908116911614612d15576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602854604080519182526020820183905280517f8c77526a6c0a7aa7cec23fef2dbb5958248deca84a91f836bd9e04a2aea4e6db9281900390910190a1602855565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561172d5780601f106117025761010080835404028352916020019161172d565b612dc0613b2d565b6005546001600160a01b03908116911614612e10576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a8054911515600160481b0260ff60481b19909216919091179055565b602a54600160301b900460ff1681565b612e46613b2d565b6005546001600160a01b03908116911614612e96576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6008546001600160a01b0383811691161415612ee35760405162461bcd60e51b8152600401808060200182810382526035815260200180615e9f6035913960400191505060405180910390fd5b611d708282614a21565b612ef5613b2d565b6005546001600160a01b03908116911614612f45576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b4260245543602555602a805462ff000019169055565b60075460408051631bc9e27b60e21b815290516000926001600160a01b031691636f2789ec916004808301926020929190829003018186803b158015611bf357600080fd5b600061175a612fad613b2d565b846119ec85604051806060016040528060258152602001615f3e6025913960016000612fd7613b2d565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190614511565b602a54600160401b900460ff1681565b600754604080516302a2e74960e61b81526001600160a01b0384811660048301529151600093929092169163a8b9d24091602480820192602092909190829003018186803b15801561238b57600080fd5b600061175a613076613b2d565b8484613c76565b600f6020526000908152604090205460ff1681565b6007546040805163fbcbc0f160e01b81526001600160a01b038481166004830152915160009384938493849384938493169163fbcbc0f19160248083019260c0929190829003018186803b1580156130e957600080fd5b505afa1580156130fd573d6000803e3d6000fd5b505050506040513d60c081101561311357600080fd5b508051602082015160408301516060840151608085015160a090950151939c929b5090995097509195509350915050565b600a546001600160a01b031681565b61315b613b2d565b6005546001600160a01b039081169116146131ab576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6019899055601b889055601a8790556131ce876131c88b8b613ace565b90613ace565b6022556016869055601885905560178490556131ee846131c88888613ace565b602155601c839055601e829055601d81905561320e816131c88585613ace565b60238190556022546021546040805192835260208301919091528181019290925290517fe06a46af1c04656f68e4f75cbbb23baa176651c7f99930a378ef9f1616dc2b8c9181900360600190a1505050505050505050565b61326e613b2d565b6005546001600160a01b039081169116146132be576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a5460ff600160201b909104161515811515141561330e5760405162461bcd60e51b8152600401808060200182810382526023815260200180615e5c6023913960400191505060405180910390fd5b602a8054911515600160201b0260ff60201b19909216919091179055565b600b6020526000908152604090205460ff1681565b60116020526000908152604090205481565b61335b613b2d565b6005546001600160a01b039081169116146133ab576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6133d5613b2d565b6005546001600160a01b03908116911614613425576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600d602052604090205460ff1615158115151415613496576040805162461bcd60e51b815260206004820152601a6024820152794163636f756e7420616c726561647920276578636c756465642760301b604482015290519081900360640190fd5b6001600160a01b0382166000818152600d6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b6134fe613b2d565b6005546001600160a01b0390811691161461354e576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602955602a8054911515600160301b0260ff60301b19909216919091179055565b601d5481565b60195481565b613583613b2d565b6005546001600160a01b039081169116146135d3576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6026546135e883670de0b6b3a7640000613c1d565b6026819055602a8054841515600160501b90810260ff60501b199092169190911791829055604080518581526020810194909452910460ff16151582820152517fd6d1ec2dffd2df16cb6d0859837b49920203bb429cc368ce9eab6df4d60e94399181900360600190a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b601b5481565b60205481565b60255481565b60265481565b60075460408051632f842d8560e21b815290516000926001600160a01b03169163be10b614916004808301926020929190829003018186803b158015611bf357600080fd5b6136e7613b2d565b6005546001600160a01b03908116911614613737576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6007546040805163e98030c760e01b81526004810184905290516001600160a01b039092169163e98030c79160248082019260009290919082900301818387803b15801561195357600080fd5b602a54610100900460ff1681565b61379a613b2d565b6005546001600160a01b039081169116146137ea576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a805491151563010000000263ff00000019909216919091179055565b613810613b2d565b6009546001600160a01b0390811691161461386d576040805162461bcd60e51b815260206004820152601860248201527731b0b63632b91034b9903737ba103a34329026b4b73a32b960411b604482015290519081900360640190fd5b61387782826145a8565b61387f61369a565b8110611d70576007546001600160a01b031663e30443bc836138a0816123c6565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561168557600080fd5b6138ee613b2d565b6005546001600160a01b0390811691161461393e576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6001600160a01b0381166139835760405162461bcd60e51b8152600401808060200182810382526026815260200180615c086026913960400191505060405180910390fd5b6005546040516001600160a01b03808416921690600080516020615e3c83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6139d5613b2d565b6005546001600160a01b03908116911614613a25576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a80549115156101000261ff0019909216919091179055565b613a47613b2d565b6005546001600160a01b03908116911614613a97576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600e6020526000908152604090205460ff1681565b600082820183811015613b26576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316613b765760405162461bcd60e51b8152600401808060200182810382526024815260200180615f1a6024913960400191505060405180910390fd5b6001600160a01b038216613bbb5760405162461bcd60e51b8152600401808060200182810382526022815260200180615c2e6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082613c2c5750600061175e565b82820282848281613c3957fe5b0414613b265760405162461bcd60e51b8152600401808060200182810382526021815260200180615dd36021913960400191505060405180910390fd5b6001600160a01b038316613cbb5760405162461bcd60e51b8152600401808060200182810382526025815260200180615ef56025913960400191505060405180910390fd5b6001600160a01b038216613d005760405162461bcd60e51b8152600401808060200182810382526023815260200180615b706023913960400191505060405180910390fd5b6001600160a01b0383166000908152600e602052604090205460ff16158015613d4257506001600160a01b0382166000908152600e602052604090205460ff16155b8015613d5e5750326000908152600e602052604090205460ff16155b613da5576040805162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015290519081900360640190fd5b613dad612cae565b6001600160a01b0316836001600160a01b031614613e1457602a5462010000900460ff1615613e14576040805162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99c81c185d5cd95960921b604482015290519081900360640190fd5b613e1c612cae565b6001600160a01b0316836001600160a01b031614158015613e565750613e40612cae565b6001600160a01b0316826001600160a01b031614155b15613e6657613e66838383614b53565b326000908152600e602052604090205460ff1615613e835761450c565b6001600160a01b0383166000908152600f602052604090205460ff16156141df576000613eaf846123c6565b90506000613ec8602454426153de90919063ffffffff16565b90506301dfe200811115613efb576001600160a01b0385166000908152600f60205260409020805460ff1916905561400d565b6000613f078683615420565b6001600160a01b03871660009081526011602052604081205491925090613f2f9083906153de565b6001600160a01b0387166000908152600b602052604090205490915060ff1680613f7157506001600160a01b0386166000908152600c602052604090205460ff165b15613f8c576027548110613f8757602754613f89565b805b90505b6001600160a01b0387166000908152601160209081526040808320546010909252909120548691613fcd9184916131c891613fc6916153de565b88906153de565b101561400a5760405162461bcd60e51b8152600401808060200182810382526032815260200180615bb56032913960400191505060405180910390fd5b50505b6001600160a01b03851660009081526011602090815260408083205460109092528220546140469161403f91906153de565b84906153de565b90506000818511614058576000614062565b61406285836153de565b6001600160a01b0388166000908152601160205260409020805482019055905080158015906140cb57506001600160a01b0386166000908152600b602052604090205460ff16806140cb57506001600160a01b0386166000908152600c602052604090205460ff165b156141da576001600160a01b03871660009081526015602052604090205442620151809091011061411c576001600160a01b038716600090815260156020526040902060010180548201905561413b565b6001600160a01b03871660009081526015602052604090206001018190555b6001600160a01b0387166000908152601560205260409020429055602a54600160301b900460ff16156141da576029546001600160a01b03881660009081526015602052604090206001015411156141da576040805162461bcd60e51b815260206004820152601e60248201527f52656163686564206d6178206461696c79207665737420746f2073656c6c0000604482015290519081900360640190fd5b505050505b806141f5576141f0838360006155ed565b61450c565b6000614200306123c6565b602054602a549192508210159060ff1680156142265750602a54600160381b900460ff16155b801561424b57506001600160a01b0385166000908152600b602052604090205460ff16155b801561427057506001600160a01b0385166000908152600c602052604090205460ff16155b80156142795750805b156142a857602a805460ff60381b1916600160381b17905561429a8261572b565b602a805460ff60381b191690555b602a546001600160a01b0386166000908152600d602052604090205460ff600160381b9092048216159116806142f657506001600160a01b0385166000908152600d602052604090205460ff165b8061430b5750602a54600160201b900460ff16155b8061432e5750614319612cae565b6001600160a01b0316866001600160a01b0316145b80614351575061433c612cae565b6001600160a01b0316856001600160a01b0316145b1561435a575060005b6000811561440d576001600160a01b0386166000908152600b602052604090205460ff16156143aa576143a3606461439d60215488613c1d90919063ffffffff16565b9061583c565b9050614402565b6001600160a01b0387166000908152600b602052604090205460ff16156143e5576143a3606461439d60225488613c1d90919063ffffffff16565b6143ff606461439d60235488613c1d90919063ffffffff16565b90505b61440d8730836155ed565b614421878761441c88856153de565b6155ed565b6007546001600160a01b031663e30443bc8861443c816123c6565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561448257600080fd5b505af1925050508015614493575060015b506007546001600160a01b031663e30443bc876144af816123c6565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156144f557600080fd5b505af1925050508015614506575060015b50505050505b505050565b600081848411156145a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561456557818101518382015260200161454d565b50505050905090810190601f1680156145925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216614603576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546146109082613ace565b6002556001600160a01b0382166000908152602081905260409020546146369082613ace565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020615e7f8339815191529281900390910190a35050565b6001600160a01b0382166146bf5760405162461bcd60e51b8152600401808060200182810382526021815260200180615ed46021913960400191505060405180910390fd5b6146fc81604051806060016040528060228152602001615b93602291396001600160a01b0385166000908152602081905260409020549190614511565b6001600160a01b03831660009081526020819052604090205560025461472290826153de565b6002556040805182815290516000916001600160a01b03851691600080516020615e7f8339815191529181900360200190a35050565b6006546040516000916001600160a01b0390811691908416907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e908490a3600680546001600160a01b039081166000908152600c60209081526040808320805460ff1916905584546001600160a01b0319168785161794859055805163c45a015560e01b8152905192949093169263c45a01559260048083019392829003018186803b15801561480757600080fd5b505afa15801561481b573d6000803e3d6000fd5b505050506040513d602081101561483157600080fd5b5051600a546040805163e6a4390560e01b81523060048201526001600160a01b0392831660248201529051919092169163e6a43905916044808301926020929190829003018186803b15801561488657600080fd5b505afa15801561489a573d6000803e3d6000fd5b505050506040513d60208110156148b057600080fd5b505190506001600160a01b0381166149c057600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561491057600080fd5b505afa158015614924573d6000803e3d6000fd5b505050506040513d602081101561493a57600080fd5b5051600a54604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b15801561499157600080fd5b505af11580156149a5573d6000803e3d6000fd5b505050506040513d60208110156149bb57600080fd5b505190505b6001600160a01b039283166000908152600c602090815260408083208054600160ff199182168117909255600880546001600160a01b0319169689169690961780875588168552600b90935292208054909116909117905554909116919050565b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415614a7f5760405162461bcd60e51b8152600401808060200182810382526038815260200180615c506038913960400191505060405180910390fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155614b17576007546040805162241fbd60e51b81526001600160a01b0385811660048301526000602483018190529251931692630483f7a09260448084019391929182900301818387803b158015614afe57600080fd5b505af1158015614b12573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b602a54600160281b900460ff168015614b8457506001600160a01b0382166000908152600b602052604090205460ff165b15614bfb576001600160a01b03831660009081526013602052604090205442620151809091011115614bfb576040805162461bcd60e51b815260206004820152601b60248201527a13db99481cd95b1b081c195c8819185e481a5cc8185b1b1bddd959602a1b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615614c9d576001600160a01b038316600090815260136020526040902054426201518090910110614c65576001600160a01b0383166000908152601460205260409020805482019055614c81565b6001600160a01b03831660009081526014602052604090208190555b6001600160a01b03831660009081526013602052604090204290555b602a54600160401b900460ff1615614d08576028546001600160a01b0384166000908152601460205260409020541115614d085760405162461bcd60e51b8152600401808060200182810382526021815260200180615be76021913960400191505060405180910390fd5b602a54600160481b900460ff1615614d79576001600160a01b0383163014614d7957601f54811115614d79576040805162461bcd60e51b8152602060048201526015602482015274195e18d959591cc81b585e081d1e08185b5bdd5b9d605a1b604482015290519081900360640190fd5b602a54600160601b900460ff1615614f42576001600160a01b0383163014801590614dad57506001600160a01b0382163014155b15614f42576001600160a01b0382166000908152600b602052604090205460ff16158015614df457506001600160a01b0383166000908152600c602052604090205460ff16155b15614e7a576001600160a01b038216600090815260126020526040902054601e01421015614e5e576040805162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b604482015290519081900360640190fd5b6001600160a01b03821660009081526012602052604090204290555b6001600160a01b0383166000908152600b602052604090205460ff16158015614ebc57506001600160a01b0383166000908152600c602052604090205460ff16155b15614f42576001600160a01b038316600090815260126020526040902054601e01421015614f26576040805162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b604482015290519081900360640190fd5b6001600160a01b03831660009081526012602052604090204290555b602a54600160581b900460ff1615615256576001600160a01b0383166000908152600b602052604090205460ff168015614f9557506001600160a01b0382166000908152600c602052604090205460ff16155b8015614faa57506001600160a01b0382163014155b8015614fbf57506001600160a01b0383163014155b15614fd957326001600160a01b03831614614fd957600080fd5b602554600101431161525657326000818152600e60205260409020805460ff191660011790556001600160a01b038416148015906150205750326001600160a01b03831614155b15615090576007546040805162241fbd60e51b81523260048201526001602482015290516001600160a01b0390921691630483f7a09160448082019260009290919082900301818387803b15801561507757600080fd5b505af115801561508b573d6000803e3d6000fd5b505050505b6001600160a01b0383166000908152600b602052604090205460ff161580156150d257506001600160a01b0383166000908152600c602052604090205460ff16155b80156150e757506001600160a01b0383163014155b15615173576001600160a01b038084166000818152600e6020526040808220805460ff19166001908117909155600754825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b15801561515a57600080fd5b505af115801561516e573d6000803e3d6000fd5b505050505b6001600160a01b0382166000908152600b602052604090205460ff161580156151b557506001600160a01b0382166000908152600c602052604090205460ff16155b80156151ca57506001600160a01b0382163014155b15615256576001600160a01b038083166000818152600e6020526040808220805460ff19166001908117909155600754825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b15801561523d57600080fd5b505af1158015615251573d6000803e3d6000fd5b505050505b602a54600160501b900460ff16156152e0576001600160a01b0383166000908152600b602052604090205460ff16801561529e57506006546001600160a01b03838116911614155b80156152b357506001600160a01b0382163014155b156152e05760006152c3836123c6565b6026549091506152d38284613ace565b11156152de57600080fd5b505b602a546301000000900460ff161561450c576001600160a01b038316301480159061531457506001600160a01b0382163014155b1561450c576001600160a01b0383166000908152600b602052604090205460ff168061535857506001600160a01b0382166000908152600b602052604090205460ff165b8061537b57506001600160a01b0383166000908152600c602052604090205460ff165b8061539e57506001600160a01b0382166000908152600c602052604090205460ff165b61450c576040805162461bcd60e51b815260206004820152600c60248201526b4e6f207472616e736665727360a01b604482015290519081900360640190fd5b6000613b2683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614511565b6001600160a01b0382166000908152600f602052604081205460ff161561175e576001600160a01b0383166000908152601060205260409020546201518083101561546e57600091506155e6565b6224ea0083101561549057615489600a61439d836002613c1d565b91506155e6565b6249d4008310156154ab57615489606461439d836019613c1d565b626ebe008310156154c657615489606461439d83601e613c1d565b6293a8008310156154e157615489606461439d836023613c1d565b62b892008310156154fc57615489606461439d836028613c1d565b62dd7c0083101561551757615489606461439d83602d613c1d565b630102660083101561552e5761548981600261583c565b630127500083101561554a57615489606461439d836038613c1d565b63014c3a0083101561556657615489606461439d83603e613c1d565b630171240083101561558257615489606461439d836044613c1d565b6301960e0083101561559e57615489606461439d83604c613c1d565b6301baf8008310156155ba57615489606461439d836054613c1d565b6301dfe2008310156155d657615489606461439d83605c613c1d565b6301dfe2008311156155e6578091505b5092915050565b6001600160a01b0383166156325760405162461bcd60e51b8152600401808060200182810382526025815260200180615ef56025913960400191505060405180910390fd5b6001600160a01b0382166156775760405162461bcd60e51b8152600401808060200182810382526023815260200180615b706023913960400191505060405180910390fd5b6156b481604051806060016040528060268152602001615c88602691396001600160a01b0386166000908152602081905260409020549190614511565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546156e39082613ace565b6001600160a01b03808416600081815260208181526040918290209490945580518581529051919392871692600080516020615e7f83398151915292918290030190a3505050565b6000601e54601b54601854010190506000601d54601a546017540101905060006023546022546021540101905060006157718261439d8688613c1d90919063ffffffff16565b9050600061578082600261583c565b9050600061578e87836153de565b90504761579a8261587b565b60006157a647836153de565b905060006157bb600261439d8981868e613c1d565b905060006157cd8861439d858c613c1d565b602b546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015615808573d6000803e3d6000fd5b5061581386836159aa565b602a544790610100900460ff161561582e5761582e81615a77565b505050505050505050505050565b6000613b2683836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250615b0a565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106158aa57fe5b6001600160a01b039283166020918202929092010152600a548251911690829060019081106158d557fe5b6001600160a01b0392831660209182029290920101526006546158fb9130911684613b31565b60065460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015615981578181015183820152602001615969565b505050509050019650505050505050600060405180830381600087803b15801561168557600080fd5b6006546159c29030906001600160a01b031684613b31565b6006546001600160a01b031663f305d7198230856000806159e1612cae565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b158015615a4c57600080fd5b505af1158015615a60573d6000803e3d6000fd5b50505050506040513d6060811015611b9957600080fd5b6007546040516000916001600160a01b03169083908381818185875af1925050503d8060008114615ac4576040519150601f19603f3d011682016040523d82523d6000602084013e615ac9565b606091505b505090508015611d70576040805183815290517fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19181900360200190a15050565b60008183615b595760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561456557818101518382015260200161454d565b506000838581615b6557fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636543616e277420627970617373207665737420616e642063616e2774206279706173732076657374656453656c6c4c696d69744d6178206461696c792073656c6c20616d6f756e742077617320726561636865644f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734175746f6d61746564206d61726b6574206d616b6572207061697220697320616c72656164792073657420746f20746861742076616c756545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655570646174696e6720746f2063757272656e742076616c75652c20656e61626c654d61784461696c7953656c6c4175746f6d61746564206d61726b6574206d616b657220726f7574657220697320616c72656164792073657420746f20746861742076616c7565526f757465722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572526f757465727363616c6c6572206973206e6f7420746865206f776e6572206f7220746865206d696e7465725570646174696e6720746f2063757272656e742076616c75652c206461696c79436f6f6c446f776e546865206e6577206469766964656e6420747261636b6572206d757374206265206f776e656420627920746f6b656e20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05570646174696e6720746f2063757272656e742076616c75652c2074616b6546656573ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef506169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572506169727345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f546865206469766964656e6420747261636b657220616c72656164792068617320746861742061646472657373a2646970667358221220e9d7159d537a141bf63fdce5913a68d7eb5db96346e24d35db06af6ea10275d464736f6c63430007060033

Deployed Bytecode

0x6080604052600436106104575760003560e01c806204cf0b146104635780630483f7a01461049157806306fdde03146104cc5780630754617214610556578063095ea7b3146105875780630fb3701c146105d457806312db0016146105fe5780631694505e1461061357806316c38b3c1461062857806318160ddd146106545780631fa71a3b1461067b578063208e0b60146106a557806323b872dd146106ba5780632a32cb9f146106fd5780632c1f52161461077857806330bb4cff1461078d578063313ce567146107a25780633663f9e4146107cd57806336a143c1146107e257806339509351146108155780633b9f3e8b1461084e5780633e2763ba1461086357806340c10f1914610878578063423ad375146108b157806342966c68146108c6578063443ad4d3146108f0578063455a43961461092357806347b4b4a61461095e57806349bd5a5e146109735780634e45e92a146109885780634e71d92d1461099d5780634fbee193146109b25780635665b363146109e55780635c975abb146109fa5780635d49d34214610a0f5780635dc106d114610a245780635dd912f514610a395780635df346d014610a4e5780636402511e14610a6357806364b0f65314610a8d57806365b8dbc014610aa25780636724348214610ad5578063681e0a3f14610ba05780636843cd8414610bb55780636ddd171314610be857806370a0823114610bfd578063715018a614610c3057806372d580ef14610c45578063736dc68414610c71578063787a08a614610c865780637a54037c14610c9b5780637b4cf05f14610cb057806382663d1d14610cc557806383372d7c14610cda5780638372a4d014610cef57806388bdd9be14610d2a5780638a78044714610d5d5780638ab8ef0614610d905780638c3e7c1d14610da55780638d61785c14610dcf5780638da5cb5b14610de457806394f1682a14610df957806395d89b4114610e2357806395f6f56714610e38578063995975b114610e645780639a7a23d614610e795780639b6c3ef514610eb4578063a26579ad14610ec9578063a457c2d714610ede578063a5b01dfa14610f17578063a8b9d24014610f2c578063a9059cbb14610f5f578063acca78df14610f98578063ad56c13c14610fcb578063ad5c46481461103b578063add5df6614611050578063b0aef702146110ac578063b62496f5146110d8578063b7aa32211461110b578063b8d1452f1461113e578063c024666814611171578063c896edfb146111ac578063cc8c0894146111de578063d7ddba2f146111f3578063dc6ba80314611208578063dd62ed3e1461123a578063dd6f0e7c14611275578063e2f456051461128a578063e3645ac41461129f578063e54f4faa146112b4578063e6bd610d146112c9578063e98030c7146112de578063eb2889f214611308578063f1f3142c1461131d578063f228a16d14611349578063f2fde38b14611382578063f56a1117146113b5578063fca3b5aa146113e1578063fe575a87146114145761045e565b3661045e57005b600080fd5b34801561046f57600080fd5b5061048f6004803603602081101561048657600080fd5b50351515611447565b005b34801561049d57600080fd5b5061048f600480360360408110156104b457600080fd5b506001600160a01b038135169060200135151561150d565b3480156104d857600080fd5b506104e16116a1565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561051b578181015183820152602001610503565b50505050905090810190601f1680156105485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056257600080fd5b5061056b611737565b604080516001600160a01b039092168252519081900360200190f35b34801561059357600080fd5b506105c0600480360360408110156105aa57600080fd5b506001600160a01b038135169060200135611746565b604080519115158252519081900360200190f35b3480156105e057600080fd5b5061048f600480360360208110156105f757600080fd5b5035611764565b34801561060a57600080fd5b506105c0611815565b34801561061f57600080fd5b5061056b611825565b34801561063457600080fd5b5061048f6004803603602081101561064b57600080fd5b50351515611834565b34801561066057600080fd5b506106696118a8565b60408051918252519081900360200190f35b34801561068757600080fd5b5061048f6004803603602081101561069e57600080fd5b50356118ae565b3480156106b157600080fd5b5061066961196e565b3480156106c657600080fd5b506105c0600480360360608110156106dd57600080fd5b506001600160a01b03813581169160208101359091169060400135611974565b34801561070957600080fd5b5061048f6004803603604081101561072057600080fd5b810190602081018135600160201b81111561073a57600080fd5b82018360208201111561074c57600080fd5b803590602001918460208302840111600160201b8311171561076d57600080fd5b9193509150356119fb565b34801561078457600080fd5b5061056b611b9f565b34801561079957600080fd5b50610669611bae565b3480156107ae57600080fd5b506107b7611c24565b6040805160ff9092168252519081900360200190f35b3480156107d957600080fd5b50610669611c29565b3480156107ee57600080fd5b506106696004803603602081101561080557600080fd5b50356001600160a01b0316611c2f565b34801561082157600080fd5b506105c06004803603604081101561083857600080fd5b506001600160a01b038135169060200135611c41565b34801561085a57600080fd5b5061048f611c8f565b34801561086f57600080fd5b50610669611d08565b34801561088457600080fd5b5061048f6004803603604081101561089b57600080fd5b506001600160a01b038135169060200135611d0e565b3480156108bd57600080fd5b50610669611d74565b3480156108d257600080fd5b5061048f600480360360208110156108e957600080fd5b5035611d7a565b3480156108fc57600080fd5b506105c06004803603602081101561091357600080fd5b50356001600160a01b0316611d8e565b34801561092f57600080fd5b5061048f6004803603604081101561094657600080fd5b506001600160a01b0381351690602001351515611da3565b34801561096a57600080fd5b5061048f611efd565b34801561097f57600080fd5b5061056b611f76565b34801561099457600080fd5b506105c0611f85565b3480156109a957600080fd5b5061048f611f95565b3480156109be57600080fd5b506105c0600480360360208110156109d557600080fd5b50356001600160a01b0316612016565b3480156109f157600080fd5b50610669612034565b348015610a0657600080fd5b506105c061203a565b348015610a1b57600080fd5b50610669612049565b348015610a3057600080fd5b506105c061204f565b348015610a4557600080fd5b506105c061205f565b348015610a5a57600080fd5b5061066961206f565b348015610a6f57600080fd5b5061048f60048036036020811015610a8657600080fd5b5035612075565b348015610a9957600080fd5b50610669612126565b348015610aae57600080fd5b5061048f60048036036020811015610ac557600080fd5b50356001600160a01b031661216b565b348015610ae157600080fd5b5061048f60048036036040811015610af857600080fd5b810190602081018135600160201b811115610b1257600080fd5b820183602082011115610b2457600080fd5b803590602001918460208302840111600160201b83111715610b4557600080fd5b919390929091602081019035600160201b811115610b6257600080fd5b820183602082011115610b7457600080fd5b803590602001918460208302840111600160201b83111715610b9557600080fd5b509092509050612222565b348015610bac57600080fd5b50610669612334565b348015610bc157600080fd5b5061066960048036036020811015610bd857600080fd5b50356001600160a01b031661233a565b348015610bf457600080fd5b506105c06123bd565b348015610c0957600080fd5b5061066960048036036020811015610c2057600080fd5b50356001600160a01b03166123c6565b348015610c3c57600080fd5b5061048f6123e1565b348015610c5157600080fd5b5061048f60048036036020811015610c6857600080fd5b50351515612471565b348015610c7d57600080fd5b506105c0612537565b348015610c9257600080fd5b506105c0612547565b348015610ca757600080fd5b50610669612557565b348015610cbc57600080fd5b506105c061255d565b348015610cd157600080fd5b5061066961256d565b348015610ce657600080fd5b50610669612573565b348015610cfb57600080fd5b5061048f60048036036040811015610d1257600080fd5b506001600160a01b0381351690602001351515612579565b348015610d3657600080fd5b5061048f60048036036020811015610d4d57600080fd5b50356001600160a01b03166126e7565b348015610d6957600080fd5b5061048f60048036036020811015610d8057600080fd5b50356001600160a01b0316612b77565b348015610d9c57600080fd5b50610669612bf1565b348015610db157600080fd5b5061048f60048036036020811015610dc857600080fd5b5035612bf7565b348015610ddb57600080fd5b50610669612ca8565b348015610df057600080fd5b5061056b612cae565b348015610e0557600080fd5b5061048f60048036036020811015610e1c57600080fd5b5035612cbd565b348015610e2f57600080fd5b506104e1612d57565b348015610e4457600080fd5b5061048f60048036036020811015610e5b57600080fd5b50351515612db8565b348015610e7057600080fd5b506105c0612e2e565b348015610e8557600080fd5b5061048f60048036036040811015610e9c57600080fd5b506001600160a01b0381351690602001351515612e3e565b348015610ec057600080fd5b5061048f612eed565b348015610ed557600080fd5b50610669612f5b565b348015610eea57600080fd5b506105c060048036036040811015610f0157600080fd5b506001600160a01b038135169060200135612fa0565b348015610f2357600080fd5b506105c0613008565b348015610f3857600080fd5b5061066960048036036020811015610f4f57600080fd5b50356001600160a01b0316613018565b348015610f6b57600080fd5b506105c060048036036040811015610f8257600080fd5b506001600160a01b038135169060200135613069565b348015610fa457600080fd5b506105c060048036036020811015610fbb57600080fd5b50356001600160a01b031661307d565b348015610fd757600080fd5b50610ffe60048036036020811015610fee57600080fd5b50356001600160a01b0316613092565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561104757600080fd5b5061056b613144565b34801561105c57600080fd5b5061048f600480360361012081101561107457600080fd5b5080359060208101359060408101359060608101359060808101359060a08101359060c08101359060e0810135906101000135613153565b3480156110b857600080fd5b5061048f600480360360208110156110cf57600080fd5b50351515613266565b3480156110e457600080fd5b506105c0600480360360208110156110fb57600080fd5b50356001600160a01b031661332c565b34801561111757600080fd5b506106696004803603602081101561112e57600080fd5b50356001600160a01b0316613341565b34801561114a57600080fd5b5061048f6004803603602081101561116157600080fd5b50356001600160a01b0316613353565b34801561117d57600080fd5b5061048f6004803603604081101561119457600080fd5b506001600160a01b03813516906020013515156133cd565b3480156111b857600080fd5b5061048f600480360360408110156111cf57600080fd5b508035151590602001356134f6565b3480156111ea57600080fd5b5061066961356f565b3480156111ff57600080fd5b50610669613575565b34801561121457600080fd5b5061048f6004803603604081101561122b57600080fd5b5080359060200135151561357b565b34801561124657600080fd5b506106696004803603604081101561125d57600080fd5b506001600160a01b0381358116916020013516613657565b34801561128157600080fd5b50610669613682565b34801561129657600080fd5b50610669613688565b3480156112ab57600080fd5b5061066961368e565b3480156112c057600080fd5b50610669613694565b3480156112d557600080fd5b5061066961369a565b3480156112ea57600080fd5b5061048f6004803603602081101561130157600080fd5b50356136df565b34801561131457600080fd5b506105c0613784565b34801561132957600080fd5b5061048f6004803603602081101561134057600080fd5b50351515613792565b34801561135557600080fd5b5061048f6004803603604081101561136c57600080fd5b506001600160a01b038135169060200135613808565b34801561138e57600080fd5b5061048f600480360360208110156113a557600080fd5b50356001600160a01b03166138e6565b3480156113c157600080fd5b5061048f600480360360208110156113d857600080fd5b503515156139cd565b3480156113ed57600080fd5b5061048f6004803603602081101561140457600080fd5b50356001600160a01b0316613a3f565b34801561142057600080fd5b506105c06004803603602081101561143757600080fd5b50356001600160a01b0316613ab9565b61144f613b2d565b6005546001600160a01b0390811691161461149f576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a5460ff600160401b90910416151581151514156114ef5760405162461bcd60e51b815260040180806020018281038252602d815260200180615cae602d913960400191505060405180910390fd5b602a8054911515600160401b0260ff60401b19909216919091179055565b611515613b2d565b6005546001600160a01b03908116911614611565576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b60075460408051634e7b827f60e01b81526001600160a01b03858116600483015291519190921691634e7b827f916024808301926020929190829003018186803b1580156115b257600080fd5b505afa1580156115c6573d6000803e3d6000fd5b505050506040513d60208110156115dc57600080fd5b505115611630576040805162461bcd60e51b815260206004820152601f60248201527f416c7265616479206578636c756465642066726f6d206469766964656e647300604482015290519081900360640190fd5b6007546040805162241fbd60e51b81526001600160a01b038581166004830152841515602483015291519190921691630483f7a091604480830192600092919082900301818387803b15801561168557600080fd5b505af1158015611699573d6000803e3d6000fd5b505050505050565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561172d5780601f106117025761010080835404028352916020019161172d565b820191906000526020600020905b81548152906001019060200180831161171057829003601f168201915b5050505050905090565b6009546001600160a01b031681565b600061175a611753613b2d565b8484613b31565b5060015b92915050565b61176c613b2d565b6005546001600160a01b039081169116146117bc576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b601f546117d182670de0b6b3a7640000613c1d565b601f81905560408051838152602081019290925280517f47e32629af1fc3c60a5654749bbbe503cf7b16ccb001804be0740e01ea50ba159281900390910190a15050565b602a54600160501b900460ff1681565b6006546001600160a01b031681565b61183c613b2d565b6005546001600160a01b0390811691161461188c576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a8054911515620100000262ff000019909216919091179055565b60025490565b6118b6613b2d565b6005546001600160a01b03908116911614611906576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b60075460408051631fa71a3b60e01b81526004810184905290516001600160a01b0390921691631fa71a3b9160248082019260009290919082900301818387803b15801561195357600080fd5b505af1158015611967573d6000803e3d6000fd5b5050505050565b60225481565b6000611981848484613c76565b6119f18461198d613b2d565b6119ec85604051806060016040528060288152602001615df4602891396001600160a01b038a166000908152600160205260408120906119cb613b2d565b6001600160a01b031681526020810191909152604001600020549190614511565b613b31565b5060019392505050565b611a03613b2d565b6001600160a01b0316611a14612cae565b6001600160a01b03161480611a3e5750611a2c613b2d565b6009546001600160a01b039081169116145b611a795760405162461bcd60e51b8152600401808060200182810382526025815260200180615d4e6025913960400191505060405180910390fd5b60005b82811015611b99576000848483818110611a9257fe5b905060200201356001600160a01b03169050611aae81846145a8565b6000611ab861369a565b9050808410611b35576007546001600160a01b031663e30443bc83611adc816123c6565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611b2257600080fd5b505af1925050508015611b33575060015b505b6001600160a01b038216600090815260106020526040902054611b589085613ace565b6001600160a01b03909216600090815260106020908152604080832094909455600f905291909120805460ff19166001908117909155919091019050611a7c565b50505050565b6007546001600160a01b031681565b600754604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015611bf357600080fd5b505afa158015611c07573d6000803e3d6000fd5b505050506040513d6020811015611c1d57600080fd5b5051905090565b601290565b60185481565b60106020526000908152604090205481565b600061175a611c4e613b2d565b846119ec8560016000611c5f613b2d565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490613ace565b611c97613b2d565b6005546001600160a01b03908116911614611ce7576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a805460ff60601b198116600160601b9182900460ff1615909102179055565b60275481565b611d16613b2d565b6005546001600160a01b03908116911614611d66576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b611d7082826145a8565b5050565b60245481565b611d8b611d85613b2d565b8261467a565b50565b600c6020526000908152604090205460ff1681565b611dab613b2d565b6005546001600160a01b03908116911614611dfb576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b8015611ed2576001600160a01b0382166000908152600e602052604090205460ff1615611e65576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6007546040805162241fbd60e51b81526001600160a01b0385811660048301526001602483015291519190921691630483f7a091604480830192600092919082900301818387803b158015611eb957600080fd5b505af1158015611ecd573d6000803e3d6000fd5b505050505b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b611f05613b2d565b6005546001600160a01b03908116911614611f55576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a805460ff60581b198116600160581b9182900460ff1615909102179055565b6008546001600160a01b031681565b602a54600160481b900460ff1681565b6007546040805163bc4c4b3760e01b815233600482015260006024820181905291516001600160a01b039093169263bc4c4b3792604480840193602093929083900390910190829087803b158015611fec57600080fd5b505af1158015612000573d6000803e3d6000fd5b505050506040513d6020811015611d7057600080fd5b6001600160a01b03166000908152600d602052604090205460ff1690565b60175481565b602a5462010000900460ff1681565b60295481565b602a54600160281b900460ff1681565b602a54600160201b900460ff1681565b60215481565b61207d613b2d565b6005546001600160a01b039081169116146120cd576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6020546120e282670de0b6b3a7640000613c1d565b6020818155604080518481529182019290925281517fab0ec7468909bac916971a36711bb7a453201e59940de1fb0be6acc303854ffd929181900390910190a15050565b600754604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde916004808301926020929190829003018186803b158015611bf357600080fd5b612173613b2d565b6005546001600160a01b039081169116146121c3576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6121cc81614758565b506007546008546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519290931692630483f7a0926044808301939282900301818387803b15801561195357600080fd5b61222a613b2d565b6005546001600160a01b0390811691161461227a576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b8281146122ca576040805162461bcd60e51b8152602060048201526019602482015278105c9c985e481cda5e995cc81b5d5cdd08189948195c5d585b603a1b604482015290519081900360640190fd5b60005b83811015611967576000612304670de0b6b3a76400008585858181106122ef57fe5b90506020020135613c1d90919063ffffffff16565b905061232b86868481811061231557fe5b905060200201356001600160a01b0316826145a8565b506001016122cd565b60165481565b600754604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b15801561238b57600080fd5b505afa15801561239f573d6000803e3d6000fd5b505050506040513d60208110156123b557600080fd5b505192915050565b602a5460ff1681565b6001600160a01b031660009081526020819052604090205490565b6123e9613b2d565b6005546001600160a01b03908116911614612439576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b031690600080516020615e3c833981519152908390a3600580546001600160a01b0319169055565b612479613b2d565b6005546001600160a01b039081169116146124c9576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a5460ff600160281b90910416151581151514156125195760405162461bcd60e51b8152600401808060200182810382526028815260200180615d736028913960400191505060405180910390fd5b602a8054911515600160281b0260ff60281b19909216919091179055565b602a546301000000900460ff1681565b602a54600160601b900460ff1681565b601c5481565b602a54600160581b900460ff1681565b60235481565b601e5481565b612581613b2d565b6005546001600160a01b039081169116146125d1576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6006546001600160a01b038381169116141561261e5760405162461bcd60e51b8152600401808060200182810382526039815260200180615d156039913960400191505060405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff161515811515141561267c5760405162461bcd60e51b815260040180806020018281038252603a815260200180615cdb603a913960400191505060405180910390fd5b6001600160a01b038281166000818152600c6020526040808220805460ff1916861515179055600754815162241fbd60e51b81526004810194909452602484018390529051931692630483f7a092604480820193929182900301818387803b15801561168557600080fd5b6126ef613b2d565b6005546001600160a01b0390811691161461273f576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6007546001600160a01b038281169116141561278c5760405162461bcd60e51b815260040180806020018281038252602d815260200180615f63602d913960400191505060405180910390fd5b6040805163064591a760e11b8152306004820152905182916001600160a01b03831691630c8b234e91602480820192602092909190829003018186803b1580156127d557600080fd5b505afa1580156127e9573d6000803e3d6000fd5b505050506040513d60208110156127ff57600080fd5b505161283c5760405162461bcd60e51b8152600401808060200182810382526038815260200180615d9b6038913960400191505060405180910390fd5b6040805162241fbd60e51b81526001600160a01b0383166004820181905260006024830181905292519092630483f7a0926044808201939182900301818387803b15801561288957600080fd5b505af115801561289d573d6000803e3d6000fd5b50506040805162241fbd60e51b815230600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b1580156128ec57600080fd5b505af1158015612900573d6000803e3d6000fd5b50505050806001600160a01b0316630483f7a061291b612cae565b60006040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b15801561296557600080fd5b505af1158015612979573d6000803e3d6000fd5b50506006546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b1580156129ce57600080fd5b505af11580156129e2573d6000803e3d6000fd5b50506008546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b158015612a3757600080fd5b505af1158015612a4b573d6000803e3d6000fd5b50506040805162241fbd60e51b815261dead600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b158015612a9c57600080fd5b505af1158015612ab0573d6000803e3d6000fd5b50506040805162241fbd60e51b81526000600482018190526024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b158015612b0057600080fd5b505af1158015612b14573d6000803e3d6000fd5b50506007546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600780546001600160a01b0319166001600160a01b039290921691909117905550565b612b7f613b2d565b6005546001600160a01b03908116911614612bcf576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602b80546001600160a01b0319166001600160a01b0392909216919091179055565b60285481565b612bff613b2d565b6005546001600160a01b03908116911614612c4f576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602754612c6482670de0b6b3a7640000613c1d565b602781905560408051838152602081019290925280517f0273e0904ccd5aa39aadf810a8d0fc96671a08ba577fe49feab57fa1b6aad8309281900390910190a15050565b601a5481565b6005546001600160a01b031690565b612cc5613b2d565b6005546001600160a01b03908116911614612d15576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602854604080519182526020820183905280517f8c77526a6c0a7aa7cec23fef2dbb5958248deca84a91f836bd9e04a2aea4e6db9281900390910190a1602855565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561172d5780601f106117025761010080835404028352916020019161172d565b612dc0613b2d565b6005546001600160a01b03908116911614612e10576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a8054911515600160481b0260ff60481b19909216919091179055565b602a54600160301b900460ff1681565b612e46613b2d565b6005546001600160a01b03908116911614612e96576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6008546001600160a01b0383811691161415612ee35760405162461bcd60e51b8152600401808060200182810382526035815260200180615e9f6035913960400191505060405180910390fd5b611d708282614a21565b612ef5613b2d565b6005546001600160a01b03908116911614612f45576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b4260245543602555602a805462ff000019169055565b60075460408051631bc9e27b60e21b815290516000926001600160a01b031691636f2789ec916004808301926020929190829003018186803b158015611bf357600080fd5b600061175a612fad613b2d565b846119ec85604051806060016040528060258152602001615f3e6025913960016000612fd7613b2d565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190614511565b602a54600160401b900460ff1681565b600754604080516302a2e74960e61b81526001600160a01b0384811660048301529151600093929092169163a8b9d24091602480820192602092909190829003018186803b15801561238b57600080fd5b600061175a613076613b2d565b8484613c76565b600f6020526000908152604090205460ff1681565b6007546040805163fbcbc0f160e01b81526001600160a01b038481166004830152915160009384938493849384938493169163fbcbc0f19160248083019260c0929190829003018186803b1580156130e957600080fd5b505afa1580156130fd573d6000803e3d6000fd5b505050506040513d60c081101561311357600080fd5b508051602082015160408301516060840151608085015160a090950151939c929b5090995097509195509350915050565b600a546001600160a01b031681565b61315b613b2d565b6005546001600160a01b039081169116146131ab576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6019899055601b889055601a8790556131ce876131c88b8b613ace565b90613ace565b6022556016869055601885905560178490556131ee846131c88888613ace565b602155601c839055601e829055601d81905561320e816131c88585613ace565b60238190556022546021546040805192835260208301919091528181019290925290517fe06a46af1c04656f68e4f75cbbb23baa176651c7f99930a378ef9f1616dc2b8c9181900360600190a1505050505050505050565b61326e613b2d565b6005546001600160a01b039081169116146132be576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a5460ff600160201b909104161515811515141561330e5760405162461bcd60e51b8152600401808060200182810382526023815260200180615e5c6023913960400191505060405180910390fd5b602a8054911515600160201b0260ff60201b19909216919091179055565b600b6020526000908152604090205460ff1681565b60116020526000908152604090205481565b61335b613b2d565b6005546001600160a01b039081169116146133ab576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6133d5613b2d565b6005546001600160a01b03908116911614613425576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600d602052604090205460ff1615158115151415613496576040805162461bcd60e51b815260206004820152601a6024820152794163636f756e7420616c726561647920276578636c756465642760301b604482015290519081900360640190fd5b6001600160a01b0382166000818152600d6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b6134fe613b2d565b6005546001600160a01b0390811691161461354e576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602955602a8054911515600160301b0260ff60301b19909216919091179055565b601d5481565b60195481565b613583613b2d565b6005546001600160a01b039081169116146135d3576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6026546135e883670de0b6b3a7640000613c1d565b6026819055602a8054841515600160501b90810260ff60501b199092169190911791829055604080518581526020810194909452910460ff16151582820152517fd6d1ec2dffd2df16cb6d0859837b49920203bb429cc368ce9eab6df4d60e94399181900360600190a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b601b5481565b60205481565b60255481565b60265481565b60075460408051632f842d8560e21b815290516000926001600160a01b03169163be10b614916004808301926020929190829003018186803b158015611bf357600080fd5b6136e7613b2d565b6005546001600160a01b03908116911614613737576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6007546040805163e98030c760e01b81526004810184905290516001600160a01b039092169163e98030c79160248082019260009290919082900301818387803b15801561195357600080fd5b602a54610100900460ff1681565b61379a613b2d565b6005546001600160a01b039081169116146137ea576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a805491151563010000000263ff00000019909216919091179055565b613810613b2d565b6009546001600160a01b0390811691161461386d576040805162461bcd60e51b815260206004820152601860248201527731b0b63632b91034b9903737ba103a34329026b4b73a32b960411b604482015290519081900360640190fd5b61387782826145a8565b61387f61369a565b8110611d70576007546001600160a01b031663e30443bc836138a0816123c6565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561168557600080fd5b6138ee613b2d565b6005546001600160a01b0390811691161461393e576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b6001600160a01b0381166139835760405162461bcd60e51b8152600401808060200182810382526026815260200180615c086026913960400191505060405180910390fd5b6005546040516001600160a01b03808416921690600080516020615e3c83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6139d5613b2d565b6005546001600160a01b03908116911614613a25576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b602a80549115156101000261ff0019909216919091179055565b613a47613b2d565b6005546001600160a01b03908116911614613a97576040805162461bcd60e51b81526020600482018190526024820152600080516020615e1c833981519152604482015290519081900360640190fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600e6020526000908152604090205460ff1681565b600082820183811015613b26576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b038316613b765760405162461bcd60e51b8152600401808060200182810382526024815260200180615f1a6024913960400191505060405180910390fd5b6001600160a01b038216613bbb5760405162461bcd60e51b8152600401808060200182810382526022815260200180615c2e6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082613c2c5750600061175e565b82820282848281613c3957fe5b0414613b265760405162461bcd60e51b8152600401808060200182810382526021815260200180615dd36021913960400191505060405180910390fd5b6001600160a01b038316613cbb5760405162461bcd60e51b8152600401808060200182810382526025815260200180615ef56025913960400191505060405180910390fd5b6001600160a01b038216613d005760405162461bcd60e51b8152600401808060200182810382526023815260200180615b706023913960400191505060405180910390fd5b6001600160a01b0383166000908152600e602052604090205460ff16158015613d4257506001600160a01b0382166000908152600e602052604090205460ff16155b8015613d5e5750326000908152600e602052604090205460ff16155b613da5576040805162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015290519081900360640190fd5b613dad612cae565b6001600160a01b0316836001600160a01b031614613e1457602a5462010000900460ff1615613e14576040805162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99c81c185d5cd95960921b604482015290519081900360640190fd5b613e1c612cae565b6001600160a01b0316836001600160a01b031614158015613e565750613e40612cae565b6001600160a01b0316826001600160a01b031614155b15613e6657613e66838383614b53565b326000908152600e602052604090205460ff1615613e835761450c565b6001600160a01b0383166000908152600f602052604090205460ff16156141df576000613eaf846123c6565b90506000613ec8602454426153de90919063ffffffff16565b90506301dfe200811115613efb576001600160a01b0385166000908152600f60205260409020805460ff1916905561400d565b6000613f078683615420565b6001600160a01b03871660009081526011602052604081205491925090613f2f9083906153de565b6001600160a01b0387166000908152600b602052604090205490915060ff1680613f7157506001600160a01b0386166000908152600c602052604090205460ff165b15613f8c576027548110613f8757602754613f89565b805b90505b6001600160a01b0387166000908152601160209081526040808320546010909252909120548691613fcd9184916131c891613fc6916153de565b88906153de565b101561400a5760405162461bcd60e51b8152600401808060200182810382526032815260200180615bb56032913960400191505060405180910390fd5b50505b6001600160a01b03851660009081526011602090815260408083205460109092528220546140469161403f91906153de565b84906153de565b90506000818511614058576000614062565b61406285836153de565b6001600160a01b0388166000908152601160205260409020805482019055905080158015906140cb57506001600160a01b0386166000908152600b602052604090205460ff16806140cb57506001600160a01b0386166000908152600c602052604090205460ff165b156141da576001600160a01b03871660009081526015602052604090205442620151809091011061411c576001600160a01b038716600090815260156020526040902060010180548201905561413b565b6001600160a01b03871660009081526015602052604090206001018190555b6001600160a01b0387166000908152601560205260409020429055602a54600160301b900460ff16156141da576029546001600160a01b03881660009081526015602052604090206001015411156141da576040805162461bcd60e51b815260206004820152601e60248201527f52656163686564206d6178206461696c79207665737420746f2073656c6c0000604482015290519081900360640190fd5b505050505b806141f5576141f0838360006155ed565b61450c565b6000614200306123c6565b602054602a549192508210159060ff1680156142265750602a54600160381b900460ff16155b801561424b57506001600160a01b0385166000908152600b602052604090205460ff16155b801561427057506001600160a01b0385166000908152600c602052604090205460ff16155b80156142795750805b156142a857602a805460ff60381b1916600160381b17905561429a8261572b565b602a805460ff60381b191690555b602a546001600160a01b0386166000908152600d602052604090205460ff600160381b9092048216159116806142f657506001600160a01b0385166000908152600d602052604090205460ff165b8061430b5750602a54600160201b900460ff16155b8061432e5750614319612cae565b6001600160a01b0316866001600160a01b0316145b80614351575061433c612cae565b6001600160a01b0316856001600160a01b0316145b1561435a575060005b6000811561440d576001600160a01b0386166000908152600b602052604090205460ff16156143aa576143a3606461439d60215488613c1d90919063ffffffff16565b9061583c565b9050614402565b6001600160a01b0387166000908152600b602052604090205460ff16156143e5576143a3606461439d60225488613c1d90919063ffffffff16565b6143ff606461439d60235488613c1d90919063ffffffff16565b90505b61440d8730836155ed565b614421878761441c88856153de565b6155ed565b6007546001600160a01b031663e30443bc8861443c816123c6565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561448257600080fd5b505af1925050508015614493575060015b506007546001600160a01b031663e30443bc876144af816123c6565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156144f557600080fd5b505af1925050508015614506575060015b50505050505b505050565b600081848411156145a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561456557818101518382015260200161454d565b50505050905090810190601f1680156145925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038216614603576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546146109082613ace565b6002556001600160a01b0382166000908152602081905260409020546146369082613ace565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020615e7f8339815191529281900390910190a35050565b6001600160a01b0382166146bf5760405162461bcd60e51b8152600401808060200182810382526021815260200180615ed46021913960400191505060405180910390fd5b6146fc81604051806060016040528060228152602001615b93602291396001600160a01b0385166000908152602081905260409020549190614511565b6001600160a01b03831660009081526020819052604090205560025461472290826153de565b6002556040805182815290516000916001600160a01b03851691600080516020615e7f8339815191529181900360200190a35050565b6006546040516000916001600160a01b0390811691908416907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e908490a3600680546001600160a01b039081166000908152600c60209081526040808320805460ff1916905584546001600160a01b0319168785161794859055805163c45a015560e01b8152905192949093169263c45a01559260048083019392829003018186803b15801561480757600080fd5b505afa15801561481b573d6000803e3d6000fd5b505050506040513d602081101561483157600080fd5b5051600a546040805163e6a4390560e01b81523060048201526001600160a01b0392831660248201529051919092169163e6a43905916044808301926020929190829003018186803b15801561488657600080fd5b505afa15801561489a573d6000803e3d6000fd5b505050506040513d60208110156148b057600080fd5b505190506001600160a01b0381166149c057600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561491057600080fd5b505afa158015614924573d6000803e3d6000fd5b505050506040513d602081101561493a57600080fd5b5051600a54604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b15801561499157600080fd5b505af11580156149a5573d6000803e3d6000fd5b505050506040513d60208110156149bb57600080fd5b505190505b6001600160a01b039283166000908152600c602090815260408083208054600160ff199182168117909255600880546001600160a01b0319169689169690961780875588168552600b90935292208054909116909117905554909116919050565b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415614a7f5760405162461bcd60e51b8152600401808060200182810382526038815260200180615c506038913960400191505060405180910390fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155614b17576007546040805162241fbd60e51b81526001600160a01b0385811660048301526000602483018190529251931692630483f7a09260448084019391929182900301818387803b158015614afe57600080fd5b505af1158015614b12573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b602a54600160281b900460ff168015614b8457506001600160a01b0382166000908152600b602052604090205460ff165b15614bfb576001600160a01b03831660009081526013602052604090205442620151809091011115614bfb576040805162461bcd60e51b815260206004820152601b60248201527a13db99481cd95b1b081c195c8819185e481a5cc8185b1b1bddd959602a1b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615614c9d576001600160a01b038316600090815260136020526040902054426201518090910110614c65576001600160a01b0383166000908152601460205260409020805482019055614c81565b6001600160a01b03831660009081526014602052604090208190555b6001600160a01b03831660009081526013602052604090204290555b602a54600160401b900460ff1615614d08576028546001600160a01b0384166000908152601460205260409020541115614d085760405162461bcd60e51b8152600401808060200182810382526021815260200180615be76021913960400191505060405180910390fd5b602a54600160481b900460ff1615614d79576001600160a01b0383163014614d7957601f54811115614d79576040805162461bcd60e51b8152602060048201526015602482015274195e18d959591cc81b585e081d1e08185b5bdd5b9d605a1b604482015290519081900360640190fd5b602a54600160601b900460ff1615614f42576001600160a01b0383163014801590614dad57506001600160a01b0382163014155b15614f42576001600160a01b0382166000908152600b602052604090205460ff16158015614df457506001600160a01b0383166000908152600c602052604090205460ff16155b15614e7a576001600160a01b038216600090815260126020526040902054601e01421015614e5e576040805162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b604482015290519081900360640190fd5b6001600160a01b03821660009081526012602052604090204290555b6001600160a01b0383166000908152600b602052604090205460ff16158015614ebc57506001600160a01b0383166000908152600c602052604090205460ff16155b15614f42576001600160a01b038316600090815260126020526040902054601e01421015614f26576040805162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b604482015290519081900360640190fd5b6001600160a01b03831660009081526012602052604090204290555b602a54600160581b900460ff1615615256576001600160a01b0383166000908152600b602052604090205460ff168015614f9557506001600160a01b0382166000908152600c602052604090205460ff16155b8015614faa57506001600160a01b0382163014155b8015614fbf57506001600160a01b0383163014155b15614fd957326001600160a01b03831614614fd957600080fd5b602554600101431161525657326000818152600e60205260409020805460ff191660011790556001600160a01b038416148015906150205750326001600160a01b03831614155b15615090576007546040805162241fbd60e51b81523260048201526001602482015290516001600160a01b0390921691630483f7a09160448082019260009290919082900301818387803b15801561507757600080fd5b505af115801561508b573d6000803e3d6000fd5b505050505b6001600160a01b0383166000908152600b602052604090205460ff161580156150d257506001600160a01b0383166000908152600c602052604090205460ff16155b80156150e757506001600160a01b0383163014155b15615173576001600160a01b038084166000818152600e6020526040808220805460ff19166001908117909155600754825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b15801561515a57600080fd5b505af115801561516e573d6000803e3d6000fd5b505050505b6001600160a01b0382166000908152600b602052604090205460ff161580156151b557506001600160a01b0382166000908152600c602052604090205460ff16155b80156151ca57506001600160a01b0382163014155b15615256576001600160a01b038083166000818152600e6020526040808220805460ff19166001908117909155600754825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b15801561523d57600080fd5b505af1158015615251573d6000803e3d6000fd5b505050505b602a54600160501b900460ff16156152e0576001600160a01b0383166000908152600b602052604090205460ff16801561529e57506006546001600160a01b03838116911614155b80156152b357506001600160a01b0382163014155b156152e05760006152c3836123c6565b6026549091506152d38284613ace565b11156152de57600080fd5b505b602a546301000000900460ff161561450c576001600160a01b038316301480159061531457506001600160a01b0382163014155b1561450c576001600160a01b0383166000908152600b602052604090205460ff168061535857506001600160a01b0382166000908152600b602052604090205460ff165b8061537b57506001600160a01b0383166000908152600c602052604090205460ff165b8061539e57506001600160a01b0382166000908152600c602052604090205460ff165b61450c576040805162461bcd60e51b815260206004820152600c60248201526b4e6f207472616e736665727360a01b604482015290519081900360640190fd5b6000613b2683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614511565b6001600160a01b0382166000908152600f602052604081205460ff161561175e576001600160a01b0383166000908152601060205260409020546201518083101561546e57600091506155e6565b6224ea0083101561549057615489600a61439d836002613c1d565b91506155e6565b6249d4008310156154ab57615489606461439d836019613c1d565b626ebe008310156154c657615489606461439d83601e613c1d565b6293a8008310156154e157615489606461439d836023613c1d565b62b892008310156154fc57615489606461439d836028613c1d565b62dd7c0083101561551757615489606461439d83602d613c1d565b630102660083101561552e5761548981600261583c565b630127500083101561554a57615489606461439d836038613c1d565b63014c3a0083101561556657615489606461439d83603e613c1d565b630171240083101561558257615489606461439d836044613c1d565b6301960e0083101561559e57615489606461439d83604c613c1d565b6301baf8008310156155ba57615489606461439d836054613c1d565b6301dfe2008310156155d657615489606461439d83605c613c1d565b6301dfe2008311156155e6578091505b5092915050565b6001600160a01b0383166156325760405162461bcd60e51b8152600401808060200182810382526025815260200180615ef56025913960400191505060405180910390fd5b6001600160a01b0382166156775760405162461bcd60e51b8152600401808060200182810382526023815260200180615b706023913960400191505060405180910390fd5b6156b481604051806060016040528060268152602001615c88602691396001600160a01b0386166000908152602081905260409020549190614511565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546156e39082613ace565b6001600160a01b03808416600081815260208181526040918290209490945580518581529051919392871692600080516020615e7f83398151915292918290030190a3505050565b6000601e54601b54601854010190506000601d54601a546017540101905060006023546022546021540101905060006157718261439d8688613c1d90919063ffffffff16565b9050600061578082600261583c565b9050600061578e87836153de565b90504761579a8261587b565b60006157a647836153de565b905060006157bb600261439d8981868e613c1d565b905060006157cd8861439d858c613c1d565b602b546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015615808573d6000803e3d6000fd5b5061581386836159aa565b602a544790610100900460ff161561582e5761582e81615a77565b505050505050505050505050565b6000613b2683836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250615b0a565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106158aa57fe5b6001600160a01b039283166020918202929092010152600a548251911690829060019081106158d557fe5b6001600160a01b0392831660209182029290920101526006546158fb9130911684613b31565b60065460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015615981578181015183820152602001615969565b505050509050019650505050505050600060405180830381600087803b15801561168557600080fd5b6006546159c29030906001600160a01b031684613b31565b6006546001600160a01b031663f305d7198230856000806159e1612cae565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b158015615a4c57600080fd5b505af1158015615a60573d6000803e3d6000fd5b50505050506040513d6060811015611b9957600080fd5b6007546040516000916001600160a01b03169083908381818185875af1925050503d8060008114615ac4576040519150601f19603f3d011682016040523d82523d6000602084013e615ac9565b606091505b505090508015611d70576040805183815290517fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19181900360200190a15050565b60008183615b595760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561456557818101518382015260200161454d565b506000838581615b6557fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636543616e277420627970617373207665737420616e642063616e2774206279706173732076657374656453656c6c4c696d69744d6178206461696c792073656c6c20616d6f756e742077617320726561636865644f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734175746f6d61746564206d61726b6574206d616b6572207061697220697320616c72656164792073657420746f20746861742076616c756545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655570646174696e6720746f2063757272656e742076616c75652c20656e61626c654d61784461696c7953656c6c4175746f6d61746564206d61726b6574206d616b657220726f7574657220697320616c72656164792073657420746f20746861742076616c7565526f757465722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572526f757465727363616c6c6572206973206e6f7420746865206f776e6572206f7220746865206d696e7465725570646174696e6720746f2063757272656e742076616c75652c206461696c79436f6f6c446f776e546865206e6577206469766964656e6420747261636b6572206d757374206265206f776e656420627920746f6b656e20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05570646174696e6720746f2063757272656e742076616c75652c2074616b6546656573ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef506169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572506169727345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f546865206469766964656e6420747261636b657220616c72656164792068617320746861742061646472657373a2646970667358221220e9d7159d537a141bf63fdce5913a68d7eb5db96346e24d35db06af6ea10275d464736f6c63430007060033

Deployed Bytecode Sourcemap

10593:31750:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21179:310;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21179:310:0;;;;:::i;:::-;;24836:337;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24836:337:0;;;;;;;;;;:::i;4979:102::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10808:21;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;10808:21:0;;;;;;;;;;;;;;6044:212;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6044:212:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;28897:219;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28897:219:0;;:::i;13617:30::-;;;;;;;;;;;;;:::i;10676:41::-;;;;;;;;;;;;;:::i;28703:83::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28703:83:0;;;;:::i;5306:108::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;23768:136;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23768:136:0;;:::i;12653:146::-;;;;;;;;;;;;;:::i;6264:456::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6264:456:0;;;;;;;;;;;;;;;;;:::i;19522:791::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19522:791:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;19522:791:0;;;;;;;;;;;;-1:-1:-1;19522:791:0;-1:-1:-1;19522:791:0;;:::i;10724:40::-;;;;;;;;;;;;;:::i;24176:141::-;;;;;;;;;;;;;:::i;5203:95::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12036:41;;;;;;;;;;;;;:::i;11579:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11579:46:0;-1:-1:-1;;;;;11579:46:0;;:::i;6728:302::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6728:302:0;;;;;;;;:::i;16384:84::-;;;;;;;;;;;;;:::i;13110:30::-;;;;;;;;;;;;;:::i;16275:101::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16275:101:0;;;;;;;;:::i;12979:29::-;;;;;;;;;;;;;:::i;20321:87::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20321:87:0;;:::i;11350:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11350:59:0;-1:-1:-1;;;;;11350:59:0;;:::i;23336:292::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23336:292:0;;;;;;;;;;:::i;28302:96::-;;;;;;;;;;;;;:::i;10773:28::-;;;;;;;;;;;;;:::i;13586:24::-;;;;;;;;;;;;;:::i;25604:103::-;;;;;;;;;;;;;:::i;24325:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24325:128:0;-1:-1:-1;;;;;24325:128:0;;:::i;11990:39::-;;;;;;;;;;;;;:::i;13336:25::-;;;;;;;;;;;;;:::i;13211:33::-;;;;;;;;;;;;;:::i;13439:25::-;;;;;;;;;;;;;:::i;13405:27::-;;;;;;;;;;;;;:::i;12496:150::-;;;;;;;;;;;;;:::i;29124:299::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29124:299:0;;:::i;25715:142::-;;;;;;;;;;;;;:::i;18594:190::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18594:190:0;-1:-1:-1;;;;;18594:190:0;;:::i;18935:436::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18935:436:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18935:436:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18935:436:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18935:436:0;;;;;;;;;;-1:-1:-1;18935:436:0;;-1:-1:-1;18935:436:0;-1:-1:-1;18935:436:0;:::i;11938:45::-;;;;;;;;;;;;;:::i;24655:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24655:173:0;-1:-1:-1;;;;;24655:173:0;;:::i;13253:30::-;;;;;;;;;;;;;:::i;5422:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5422:177:0;-1:-1:-1;;;;;5422:177:0;;:::i;756:150::-;;;;;;;;;;;;;:::i;21497:247::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21497:247:0;;;;:::i;13368:30::-;;;;;;;;;;;;;:::i;13685:20::-;;;;;;;;;;;;;:::i;12227:49::-;;;;;;;;;;;;;:::i;13654:24::-;;;;;;;;;;;;;:::i;12806:166::-;;;;;;;;;;;;;:::i;12333:45::-;;;;;;;;;;;;;:::i;22024:548::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22024:548:0;;;;;;;;;;:::i;16476:1292::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16476:1292:0;-1:-1:-1;;;;;16476:1292:0;;:::i;25865:126::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25865:126:0;-1:-1:-1;;;;;25865:126:0;;:::i;13147:57::-;;;;;;;;;;;;;:::i;26357:247::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26357:247:0;;:::i;12135:38::-;;;;;;;;;;;;;:::i;542:79::-;;;;;;;;;;;;;:::i;20916:255::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20916:255:0;;:::i;5089:106::-;;;;;;;;;;;;;:::i;28794:95::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28794:95:0;;;;:::i;13471:43::-;;;;;;;;;;;;;:::i;22580:300::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22580:300:0;;;;;;;;;;:::i;28406:170::-;;;;;;;;;;;;;:::i;24059:109::-;;;;;;;;;;;;;:::i;7038:402::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7038:402:0;;;;;;;;:::i;13549:30::-;;;;;;;;;;;;;:::i;24461:186::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24461:186:0;-1:-1:-1;;;;;24461:186:0;;:::i;5607:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5607:218:0;;;;;;;;:::i;11527:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11527:45:0;-1:-1:-1;;;;;11527:45:0;;:::i;25181:415::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25181:415:0;-1:-1:-1;;;;;25181:415:0;;:::i;:::-;;;;-1:-1:-1;;;;;25181:415:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10982:64;;;;;;;;;;;;;:::i;26612:1581::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26612:1581:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20733:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20733:175:0;;;;:::i;11286:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11286:57:0;-1:-1:-1;;;;;11286:57:0;;:::i;11632:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11632:49:0;-1:-1:-1;;;;;11632:49:0;;:::i;15932:82::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15932:82:0;-1:-1:-1;;;;;15932:82:0;;:::i;20416:309::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20416:309:0;;;;;;;;;;:::i;21752:264::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21752:264:0;;;;;;;;;:::i;12283:43::-;;;;;;;;;;;;;:::i;12084:44::-;;;;;;;;;;;;;:::i;25999:350::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25999:350:0;;;;;;;;;:::i;5833:203::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5833:203:0;;;;;;;;;;:::i;12180:40::-;;;;;;;;;;;;;:::i;12438:51::-;;;;;;;;;;;;;:::i;13015:35::-;;;;;;;;;;;;;:::i;13057:46::-;;;;;;;;;;;;;:::i;23912:139::-;;;;;;;;;;;;;:::i;23636:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23636:124:0;;:::i;13290:39::-;;;;;;;;;;;;;:::i;28201:93::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28201:93:0;;;;:::i;16022:245::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16022:245:0;;;;;;;;:::i;914:283::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;914:283:0;-1:-1:-1;;;;;914:283:0;;:::i;28584:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28584:111:0;;;;:::i;15834:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15834:90:0;-1:-1:-1;;;;;15834:90:0;;:::i;11475:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11475:45:0;-1:-1:-1;;;;;11475:45:0;;:::i;21179:310::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;21316:18:::1;::::0;::::1;-1:-1:-1::0;;;21316:18:0;;::::1;;:41;;::::0;::::1;;;;21294:136;;;;-1:-1:-1::0;;;21294:136:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21441:18;:40:::0;;;::::1;;-1:-1:-1::0;;;21441:40:0::1;-1:-1:-1::0;;;;21441:40:0;;::::1;::::0;;;::::1;::::0;;21179:310::o;24836:337::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;24984:15:::1;::::0;:46:::1;::::0;;-1:-1:-1;;;24984:46:0;;-1:-1:-1;;;;;24984:46:0;;::::1;;::::0;::::1;::::0;;;:15;;;::::1;::::0;:37:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;:15;:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;24984:46:0;24982:49:::1;24960:130;;;::::0;;-1:-1:-1;;;24960:130:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;25101:15;::::0;:64:::1;::::0;;-1:-1:-1;;;25101:64:0;;-1:-1:-1;;;;;25101:64:0;;::::1;;::::0;::::1;::::0;;::::1;;::::0;;;;;;:15;;;::::1;::::0;:36:::1;::::0;:64;;;;;:15:::1;::::0;:64;;;;;;;:15;;:64;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24836:337:::0;;:::o;4979:102::-;5068:5;5061:12;;;;;;;;-1:-1:-1;;5061:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5035:13;;5061:12;;5068:5;;5061:12;;5068:5;5061:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4979:102;:::o;10808:21::-;;;-1:-1:-1;;;;;10808:21:0;;:::o;6044:212::-;6165:4;6187:39;6196:12;:10;:12::i;:::-;6210:7;6219:6;6187:8;:39::i;:::-;-1:-1:-1;6244:4:0;6044:212;;;;;:::o;28897:219::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28993:11:::1;::::0;29029:16:::1;:7:::0;10870:6:::1;29029:11;:16::i;:::-;29015:11;:30:::0;;;29061:47:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;739:1;28897:219:::0;:::o;13617:30::-;;;-1:-1:-1;;;13617:30:0;;;;;:::o;10676:41::-;;;-1:-1:-1;;;;;10676:41:0;;:::o;28703:83::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28764:6:::1;:14:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;28764:14:0;;::::1;::::0;;;::::1;::::0;;28703:83::o;5306:108::-;5394:12;;5306:108;:::o;23768:136::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;23848:15:::1;::::0;:48:::1;::::0;;-1:-1:-1;;;23848:48:0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;23848:15:0;;::::1;::::0;:34:::1;::::0;:48;;;;;:15:::1;::::0;:48;;;;;;;;:15;;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23768:136:::0;:::o;12653:146::-;;;;:::o;6264:456::-;6406:4;6423:36;6433:6;6441:9;6452:6;6423:9;:36::i;:::-;6470:220;6493:6;6514:12;:10;:12::i;:::-;6541:138;6597:6;6541:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6541:19:0;;;;;;:11;:19;;;;;;6561:12;:10;:12::i;:::-;-1:-1:-1;;;;;6541:33:0;;;;;;;;;;;;-1:-1:-1;6541:33:0;;;:138;:37;:138::i;:::-;6470:8;:220::i;:::-;-1:-1:-1;6708:4:0;6264:456;;;;;:::o;19522:791::-;15272:12;:10;:12::i;:::-;-1:-1:-1;;;;;15261:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;15261:23:0;;:49;;;;15298:12;:10;:12::i;:::-;15288:6;;-1:-1:-1;;;;;15288:6:0;;;:22;;;15261:49;15239:136;;;;-1:-1:-1;;;15239:136:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19656:9:::1;19680:626;19687:26:::0;;::::1;19680:626;;;19730:19;19752:15;;19768:1;19752:18;;;;;;;;;;;;;-1:-1:-1::0;;;;;19752:18:0::1;19730:40;;19785:27;19791:11;19804:7;19785:5;:27::i;:::-;19827:18;19848:24;:22;:24::i;:::-;19827:45;;19902:10;19891:7;:21;19887:260;;19958:15;::::0;-1:-1:-1;;;;;19958:15:0::1;:26;20019:11:::0;20058:22:::1;20019:11:::0;20058:9:::1;:22::i;:::-;19958:145;;;;;;;;;;;;;-1:-1:-1::0;;;;;19958:145:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19933:199:::0;::::1;-1:-1:-1::0;;;;;20188:24:0;::::1;;::::0;;;:11:::1;:24;::::0;;;;;:37:::1;::::0;20217:7;20188:28:::1;:37::i;:::-;-1:-1:-1::0;;;;;20161:24:0;;::::1;;::::0;;;:11:::1;:24;::::0;;;;;;;:64;;;;20240:13:::1;:26:::0;;;;;;:33;;-1:-1:-1;;20240:33:0::1;20269:4;20240:33:::0;;::::1;::::0;;;20288:6;;;::::1;::::0;-1:-1:-1;19680:626:0::1;;;15386:1;19522:791:::0;;;:::o;10724:40::-;;;-1:-1:-1;;;;;10724:40:0;;:::o;24176:141::-;24266:15;;:43;;;-1:-1:-1;;;24266:43:0;;;;24239:7;;-1:-1:-1;;;;;24266:15:0;;:41;;:43;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24266:43:0;;-1:-1:-1;24176:141:0;:::o;5203:95::-;5288:2;5203:95;:::o;12036:41::-;;;;:::o;11579:46::-;;;;;;;;;;;;;:::o;6728:302::-;6845:4;6867:133;6890:12;:10;:12::i;:::-;6917:7;6939:50;6978:10;6939:11;:25;6951:12;:10;:12::i;:::-;-1:-1:-1;;;;;6939:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;6939:25:0;;;:34;;;;;;;;;;;:38;:50::i;16384:84::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;16452:8:::1;::::0;;-1:-1:-1;;;;16440:20:0;::::1;-1:-1:-1::0;;;16452:8:0;;;::::1;;;16451:9;16440:20:::0;;::::1;;::::0;;16384:84::o;13110:30::-;;;;:::o;16275:101::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;16349:19:::1;16355:3;16360:7;16349:5;:19::i;:::-;16275:101:::0;;:::o;12979:29::-;;;;:::o;20321:87::-;20372:28;20378:12;:10;:12::i;:::-;20392:7;20372:5;:28::i;:::-;20321:87;:::o;11350:59::-;;;;;;;;;;;;;;;:::o;23336:292::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;23425:5:::1;23421:159;;;-1:-1:-1::0;;;;;23456:22:0;::::1;;::::0;;;:13:::1;:22;::::0;;;;;::::1;;23455:23;23447:55;;;::::0;;-1:-1:-1;;;23447:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23447:55:0;;;;;;;;;;;;;::::1;;23517:15;::::0;:51:::1;::::0;;-1:-1:-1;;;23517:51:0;;-1:-1:-1;;;;;23517:51:0;;::::1;;::::0;::::1;::::0;:15;:51;;;;;;:15;;;::::1;::::0;:36:::1;::::0;:51;;;;;:15:::1;::::0;:51;;;;;;;:15;;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23421:159;-1:-1:-1::0;;;;;23590:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;23590:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23336:292::o;28302:96::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28378:12:::1;::::0;;-1:-1:-1;;;;28362:28:0;::::1;-1:-1:-1::0;;;28378:12:0;;;::::1;;;28377:13;28362:28:::0;;::::1;;::::0;;28302:96::o;10773:28::-;;;-1:-1:-1;;;;;10773:28:0;;:::o;13586:24::-;;;-1:-1:-1;;;13586:24:0;;;;;:::o;25604:103::-;25641:15;;:58;;;-1:-1:-1;;;25641:58:0;;25680:10;25641:58;;;;:15;:58;;;;;;;;-1:-1:-1;;;;;25641:15:0;;;;:30;;:58;;;;;;;;;;;;;;;;;;:15;:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24325:128;-1:-1:-1;;;;;24417:28:0;24393:4;24417:28;;;:19;:28;;;;;;;;;24325:128::o;11990:39::-;;;;:::o;13336:25::-;;;;;;;;;:::o;13211:33::-;;;;:::o;13439:25::-;;;-1:-1:-1;;;13439:25:0;;;;;:::o;13405:27::-;;;-1:-1:-1;;;13405:27:0;;;;;:::o;12496:150::-;;;;:::o;29124:299::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;29228:18:::1;::::0;29278:16:::1;:7:::0;10870:6:::1;29278:11;:16::i;:::-;29257:18;:37:::0;;;29310:105:::1;::::0;;;;;;;::::1;::::0;;;;;;::::1;::::0;;;;;;;;;::::1;739:1;29124:299:::0;:::o;25715:142::-;25808:15;;:41;;;-1:-1:-1;;;25808:41:0;;;;25781:7;;-1:-1:-1;;;;;25808:15:0;;:39;;:41;;;;;;;;;;;;;;:15;:41;;;;;;;;;;18594:190;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;18673:34:::1;18696:10;18673:22;:34::i;:::-;-1:-1:-1::0;18718:15:0::1;::::0;18755:13:::1;::::0;18718:58:::1;::::0;;-1:-1:-1;;;18718:58:0;;-1:-1:-1;;;;;18755:13:0;;::::1;18718:58;::::0;::::1;::::0;:15:::1;:58:::0;;;;;;;;:15;;;::::1;::::0;:36:::1;::::0;:58;;;;;:15;:58;;;;;:15;;:58;::::1;;::::0;::::1;;;;::::0;::::1;18935:436:::0;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;19085:34;;::::1;19063:109;;;::::0;;-1:-1:-1;;;19063:109:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;19063:109:0;;;;;;;;;;;;;::::1;;19183:9;19207:157;19214:20:::0;;::::1;19207:157;;;19251:15;19269:19;10870:6;19269:7;;19277:1;19269:10;;;;;;;;;;;;;:14;;:19;;;;:::i;:::-;19251:37;;19303:28;19309:9;;19319:1;19309:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;19309:12:0::1;19323:7;19303:5;:28::i;:::-;-1:-1:-1::0;19351:1:0::1;19346:6;19207:157;;11938:45:::0;;;;:::o;24655:173::-;24786:15;;:34;;;-1:-1:-1;;;24786:34:0;;-1:-1:-1;;;;;24786:34:0;;;;;;;;;24754:7;;24786:15;;;;;:25;;:34;;;;;;;;;;;;;;;:15;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24786:34:0;;24655:173;-1:-1:-1;;24655:173:0:o;13253:30::-;;;;;;:::o;5422:177::-;-1:-1:-1;;;;;5573:18:0;5541:7;5573:18;;;;;;;;;;;;5422:177::o;756:150::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;849:6:::1;::::0;828:40:::1;::::0;865:1:::1;::::0;-1:-1:-1;;;;;849:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;828:40:0;865:1;;828:40:::1;879:6;:19:::0;;-1:-1:-1;;;;;;879:19:0::1;::::0;;756:150::o;21497:247::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;21596:13:::1;::::0;::::1;-1:-1:-1::0;;;21596:13:0;;::::1;;:31;;::::0;::::1;;;;21574:121;;;;-1:-1:-1::0;;;21574:121:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21706:13;:30:::0;;;::::1;;-1:-1:-1::0;;;21706:30:0::1;-1:-1:-1::0;;;;21706:30:0;;::::1;::::0;;;::::1;::::0;;21497:247::o;13368:30::-;;;;;;;;;:::o;13685:20::-;;;-1:-1:-1;;;13685:20:0;;;;;:::o;12227:49::-;;;;:::o;13654:24::-;;;-1:-1:-1;;;13654:24:0;;;;;:::o;12806:166::-;;;;:::o;12333:45::-;;;;:::o;22024:548::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;22184:15:::1;::::0;-1:-1:-1;;;;;22166:34:0;;::::1;22184:15:::0;::::1;22166:34;;22144:141;;;;-1:-1:-1::0;;;22144:141:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;22318:35:0;::::1;;::::0;;;:27:::1;:35;::::0;;;;;::::1;;:44;;::::0;::::1;;;;22296:152;;;;-1:-1:-1::0;;;22296:152:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;22459:35:0;;::::1;;::::0;;;:27:::1;:35;::::0;;;;;:43;;-1:-1:-1;;22459:43:0::1;::::0;::::1;;;::::0;;22513:15:::1;::::0;:51;;-1:-1:-1;;;22513:51:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;:15;::::1;::::0;:36:::1;::::0;:51;;;;;22459:35;22513:51;;;;;;22459:35;22513:15;:51;::::1;;::::0;::::1;;;;::::0;::::1;16476:1292:::0;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;16601:15:::1;::::0;-1:-1:-1;;;;;16579:38:0;;::::1;16601:15:::0;::::1;16579:38;;16557:133;;;;-1:-1:-1::0;;;16557:133:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16835:48;::::0;;-1:-1:-1;;;16835:48:0;;16877:4:::1;16835:48;::::0;::::1;::::0;;;16780:10;;-1:-1:-1;;;;;16835:33:0;::::1;::::0;::::1;::::0;:48;;;;;::::1;::::0;;;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16835:48:0;16813:154:::1;;;;-1:-1:-1::0;;;16813:154:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16978:112;::::0;;-1:-1:-1;;;16978:112:0;;-1:-1:-1;;;;;16978:39:0;::::1;:112;::::0;::::1;::::0;;;17074:5:::1;16978:112:::0;;;;;;;;:39;;::::1;::::0;:112;;;;;;;;;;;17074:5;16978:39;:112;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17101:61:0::1;::::0;;-1:-1:-1;;;17101:61:0;;17149:4:::1;17101:61;::::0;::::1;::::0;17156:5:::1;17101:61:::0;;;;;;;;-1:-1:-1;;;;;17101:39:0;::::1;::::0;-1:-1:-1;17101:39:0::1;::::0;-1:-1:-1;17101:61:0;;;;;17156:5;17101:61;;;;;17156:5;17101:39;:61;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17173:18;-1:-1:-1::0;;;;;17173:39:0::1;;17213:7;:5;:7::i;:::-;17222:5;17173:55;;;;;;;;;;;;;-1:-1:-1::0;;;;;17173:55:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17301:15:0::1;::::0;17239:109:::1;::::0;;-1:-1:-1;;;17239:109:0;;-1:-1:-1;;;;;17301:15:0;;::::1;17239:109;::::0;::::1;::::0;17301:15:::1;17239:109:::0;;;;;;;;:39;;::::1;::::0;-1:-1:-1;17239:39:0::1;::::0;-1:-1:-1;17239:109:0;;;;;;;;;;;17301:15;17239:39;:109;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17407:13:0::1;::::0;17359:70:::1;::::0;;-1:-1:-1;;;17359:70:0;;-1:-1:-1;;;;;17407:13:0;;::::1;17359:70;::::0;::::1;::::0;17407:13:::1;17359:70:::0;;;;;;;;:39;;::::1;::::0;-1:-1:-1;17359:39:0::1;::::0;-1:-1:-1;17359:70:0;;;;;;;;;;;17407:13;17359:39;:70;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17440:127:0::1;::::0;;-1:-1:-1;;;17440:127:0;;17494:42:::1;17440:127;::::0;::::1;::::0;17551:5:::1;17440:127:::0;;;;;;;;-1:-1:-1;;;;;17440:39:0;::::1;::::0;-1:-1:-1;17440:39:0::1;::::0;-1:-1:-1;17440:127:0;;;;;17551:5;17440:127;;;;;17551:5;17440:39;:127;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17578:60:0::1;::::0;;-1:-1:-1;;;17578:60:0;;10933:42:::1;17578:60;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;17578:39:0;::::1;::::0;-1:-1:-1;17578:39:0::1;::::0;-1:-1:-1;17578:60:0;;;;;10933:42;17578:60;;;;;10933:42;17578:39;:60;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17696:15:0::1;::::0;17654:59:::1;::::0;-1:-1:-1;;;;;17696:15:0;;::::1;::::0;-1:-1:-1;17654:59:0;;::::1;::::0;-1:-1:-1;17654:59:0::1;::::0;17696:15:::1;::::0;17654:59:::1;17724:15;:36:::0;;-1:-1:-1;;;;;;17724:36:0::1;-1:-1:-1::0;;;;;17724:36:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;16476:1292:0:o;25865:126::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;25944:14:::1;:39:::0;;-1:-1:-1;;;;;;25944:39:0::1;-1:-1:-1::0;;;;;25944:39:0;;;::::1;::::0;;;::::1;::::0;;25865:126::o;13147:57::-;;;;:::o;26357:247::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;26461:15:::1;::::0;26505:16:::1;:7:::0;10870:6:::1;26505:11;:16::i;:::-;26487:15;:34:::0;;;26537:59:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;739:1;26357:247:::0;:::o;12135:38::-;;;;:::o;542:79::-;607:6;;-1:-1:-1;;;;;607:6:0;542:79;:::o;20916:255::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;21049:24:::1;::::0;21007:105:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;::::1;21123:24;:40:::0;20916:255::o;5089:106::-;5180:7;5173:14;;;;;;;;-1:-1:-1;;5173:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5147:13;;5173:14;;5180:7;;5173:14;;5180:7;5173:14;;;;;;;;;;;;;;;;;;;;;;;;28794:95;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28861:12:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;28861:20:0::1;-1:-1:-1::0;;;;28861:20:0;;::::1;::::0;;;::::1;::::0;;28794:95::o;13471:43::-;;;-1:-1:-1;;;13471:43:0;;;;;:::o;22580:300::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;22726:13:::1;::::0;-1:-1:-1;;;;;22718:21:0;;::::1;22726:13:::0;::::1;22718:21;;22696:124;;;;-1:-1:-1::0;;;22696:124:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22831:41;22860:4;22866:5;22831:28;:41::i;28406:170::-:0;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28482:15:::1;28465:14;:32:::0;28531:12:::1;28508:20;:35:::0;28554:6:::1;:14:::0;;-1:-1:-1;;28554:14:0::1;::::0;;28406:170::o;24059:109::-;24133:15;;:27;;;-1:-1:-1;;;24133:27:0;;;;24106:7;;-1:-1:-1;;;;;24133:15:0;;:25;;:27;;;;;;;;;;;;;;:15;:27;;;;;;;;;;7038:402;7160:4;7182:228;7205:12;:10;:12::i;:::-;7232:7;7254:145;7311:15;7254:145;;;;;;;;;;;;;;;;;:11;:25;7266:12;:10;:12::i;:::-;-1:-1:-1;;;;;7254:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;7254:25:0;;;:34;;;;;;;;;;;:145;:38;:145::i;13549:30::-;;;-1:-1:-1;;;13549:30:0;;;;;:::o;24461:186::-;24592:15;;:47;;;-1:-1:-1;;;24592:47:0;;-1:-1:-1;;;;;24592:47:0;;;;;;;;;24560:7;;24592:15;;;;;:38;;:47;;;;;;;;;;;;;;;:15;:47;;;;;;;;;;5607:218;5731:4;5753:42;5763:12;:10;:12::i;:::-;5777:9;5788:6;5753:9;:42::i;11527:45::-;;;;;;;;;;;;;;;:::o;25181:415::-;25552:15;;:36;;;-1:-1:-1;;;25552:36:0;;-1:-1:-1;;;;;25552:36:0;;;;;;;;;25296:15;;;;;;;;;;;;25552;;:26;;:36;;;;;;;;;;;;;;:15;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25552:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25552:36:0;;-1:-1:-1;25552:36:0;-1:-1:-1;25552:36:0;;-1:-1:-1;25552:36:0;-1:-1:-1;25181:415:0;-1:-1:-1;;25181:415:0:o;10982:64::-;;;-1:-1:-1;;;;;10982:64:0;;:::o;26612:1581::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;27056:25:::1;:53:::0;;;27120:21:::1;:46:::0;;;27177:19:::1;:42:::0;;;27251:105:::1;27199:20:::0;27251:66:::1;27084:25:::0;27144:22;27251:43:::1;:66::i;:::-;:84:::0;::::1;:105::i;:::-;27230:18;:126:::0;27367:26:::1;:55:::0;;;27433:22:::1;:48:::0;;;27492:20:::1;:44:::0;;;27569:108:::1;27515:21:::0;27569:68:::1;27396:26:::0;27458:23;27569:44:::1;:68::i;:108::-;27547:19;:130:::0;27690:30:::1;:63:::0;;;27764:26:::1;:56:::0;;;27831:24:::1;:52:::0;;;27920:120:::1;27858:25:::0;27920:76:::1;27723:30:::0;27793:27;27920:48:::1;:76::i;:120::-;27894:23;:146:::0;;;28084:18:::1;::::0;28117:19:::1;::::0;28058:127:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;26612:1581:::0;;;;;;;;;:::o;20733:175::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;20808:8:::1;::::0;::::1;-1:-1:-1::0;;;20808:8:0;;::::1;;:21;;::::0;::::1;;;;20800:69;;;;-1:-1:-1::0;;;20800:69:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20880:8;:20:::0;;;::::1;;-1:-1:-1::0;;;20880:20:0::1;-1:-1:-1::0;;;;20880:20:0;;::::1;::::0;;;::::1;::::0;;20733:175::o;11286:57::-;;;;;;;;;;;;;;;:::o;11632:49::-;;;;;;;;;;;;;:::o;15932:82::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;15994:4:::1;:12:::0;;-1:-1:-1;;;;;;15994:12:0::1;-1:-1:-1::0;;;;;15994:12:0;;;::::1;::::0;;;::::1;::::0;;15932:82::o;20416:309::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;20523:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;:40;;::::0;::::1;;;;20501:116;;;::::0;;-1:-1:-1;;;20501:116:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;20501:116:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;20628:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;20628:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20683:34;;;;;;;::::1;::::0;;;;;;;;::::1;20416:309:::0;;:::o;21752:264::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;21898:18:::1;:40:::0;21949:31:::1;:59:::0;;;::::1;;-1:-1:-1::0;;;21949:59:0::1;-1:-1:-1::0;;;;21949:59:0;;::::1;::::0;;;::::1;::::0;;21752:264::o;12283:43::-;;;;:::o;12084:44::-;;;;:::o;25999:350::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;26111:11:::1;::::0;26149:16:::1;:7:::0;10870:6:::1;26149:11;:16::i;:::-;26135:11;:30:::0;;;26176:18:::1;:29:::0;;;::::1;;-1:-1:-1::0;;;26176:29:0;;::::1;-1:-1:-1::0;;;;26176:29:0;;::::1;::::0;;;::::1;::::0;;;;26223:118:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;26312:18;::::1;26176:29;26312:18;26223:118;;::::0;;;;;::::1;::::0;;;;;;;::::1;739:1;25999:350:::0;;:::o;5833:203::-;-1:-1:-1;;;;;6001:18:0;;;5969:7;6001:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5833:203::o;12180:40::-;;;;:::o;12438:51::-;;;;:::o;13015:35::-;;;;:::o;13057:46::-;;;;:::o;23912:139::-;23994:15;;:49;;;-1:-1:-1;;;23994:49:0;;;;23967:7;;-1:-1:-1;;;;;23994:15:0;;:47;;:49;;;;;;;;;;;;;;:15;:49;;;;;;;;;;23636:124;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;23710:15:::1;::::0;:42:::1;::::0;;-1:-1:-1;;;23710:42:0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;23710:15:0;;::::1;::::0;:31:::1;::::0;:42;;;;;:15:::1;::::0;:42;;;;;;;;:15;;:42;::::1;;::::0;::::1;;;;::::0;::::1;13290:39:::0;;;;;;;;;:::o;28201:93::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28267:11:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;28267:19:0;;::::1;::::0;;;::::1;::::0;;28201:93::o;16022:245::-;15134:12;:10;:12::i;:::-;15124:6;;-1:-1:-1;;;;;15124:6:0;;;:22;;;15116:59;;;;;-1:-1:-1;;;15116:59:0;;;;;;;;;;;;-1:-1:-1;;;15116:59:0;;;;;;;;;;;;;;;16104:19:::1;16110:3;16115:7;16104:5;:19::i;:::-;16151:24;:22;:24::i;:::-;16140:7;:35;16136:124;;16192:15;::::0;-1:-1:-1;;;;;16192:15:0::1;:26;16227:3:::0;16233:14:::1;16227:3:::0;16233:9:::1;:14::i;:::-;16192:56;;;;;;;;;;;;;-1:-1:-1::0;;;;;16192:56:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;914:283:::0;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;1019:22:0;::::1;997:110;;;;-1:-1:-1::0;;;997:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:6;::::0;1123:38:::1;::::0;-1:-1:-1;;;;;1123:38:0;;::::1;::::0;1144:6:::1;::::0;-1:-1:-1;;;;;;;;;;;1123:38:0;1144:6:::1;::::0;1123:38:::1;1172:6;:17:::0;;-1:-1:-1;;;;;;1172:17:0::1;-1:-1:-1::0;;;;;1172:17:0;;;::::1;::::0;;;::::1;::::0;;914:283::o;28584:111::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;28659:20:::1;:28:::0;;;::::1;;;;-1:-1:-1::0;;28659:28:0;;::::1;::::0;;;::::1;::::0;;28584:111::o;15834:90::-;679:12;:10;:12::i;:::-;669:6;;-1:-1:-1;;;;;669:6:0;;;:22;;;661:67;;;;;-1:-1:-1;;;661:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;661:67:0;;;;;;;;;;;;;;;15900:6:::1;:16:::0;;-1:-1:-1;;;;;;15900:16:0::1;-1:-1:-1::0;;;;;15900:16:0;;;::::1;::::0;;;::::1;::::0;;15834:90::o;11475:45::-;;;;;;;;;;;;;;;:::o;1228:179::-;1286:7;1318:5;;;1342:6;;;;1334:46;;;;;-1:-1:-1;;;1334:46:0;;;;;;;;;;;;-1:-1:-1;;;1334:46:0;;;;;;;;;;;;;;;1398:1;1228:179;-1:-1:-1;;;1228:179:0:o;95:98::-;175:10;95:98;:::o;8725:378::-;-1:-1:-1;;;;;8861:19:0;;8853:68;;;;-1:-1:-1;;;8853:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8940:21:0;;8932:68;;;;-1:-1:-1;;;8932:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9011:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9063:32;;;;;;;;;;;;;;;;;8725:378;;;:::o;1791:246::-;1849:7;1873:6;1869:47;;-1:-1:-1;1903:1:0;1896:8;;1869:47;1938:5;;;1942:1;1938;:5;:1;1962:5;;;;;:10;1954:56;;;;-1:-1:-1;;;1954:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31336:4653;-1:-1:-1;;;;;31468:18:0;;31460:68;;;;-1:-1:-1;;;31460:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31547:16:0;;31539:64;;;;-1:-1:-1;;;31539:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31637:19:0;;;;;;:13;:19;;;;;;;;31636:20;:59;;;;-1:-1:-1;;;;;;31678:17:0;;;;;;:13;:17;;;;;;;;31677:18;31636:59;:105;;;;-1:-1:-1;31731:9:0;31717:24;;;;:13;:24;;;;;;;;31716:25;31636:105;31614:174;;;;;-1:-1:-1;;;31614:174:0;;;;;;;;;;;;-1:-1:-1;;;31614:174:0;;;;;;;;;;;;;;;31811:7;:5;:7::i;:::-;-1:-1:-1;;;;;31803:15:0;:4;-1:-1:-1;;;;;31803:15:0;;31799:82;;31844:6;;;;;;;31843:7;31835:34;;;;;-1:-1:-1;;;31835:34:0;;;;;;;;;;;;-1:-1:-1;;;31835:34:0;;;;;;;;;;;;;;;31905:7;:5;:7::i;:::-;-1:-1:-1;;;;;31897:15:0;:4;-1:-1:-1;;;;;31897:15:0;;;:32;;;;;31922:7;:5;:7::i;:::-;-1:-1:-1;;;;;31916:13:0;:2;-1:-1:-1;;;;;31916:13:0;;;31897:32;31893:109;;;31946:44;31973:4;31979:2;31983:6;31946:26;:44::i;:::-;32032:9;32018:24;;;;:13;:24;;;;;;;;32014:63;;;32059:7;;32014:63;-1:-1:-1;;;;;32093:19:0;;;;;;:13;:19;;;;;;;;32089:2177;;;32129:15;32147;32157:4;32147:9;:15::i;:::-;32129:33;;32177:18;32198:35;32218:14;;32198:15;:19;;:35;;;;:::i;:::-;32177:56;;32267:8;32254:10;:21;32250:910;;;-1:-1:-1;;;;;32296:19:0;;32318:5;32296:19;;;:13;:19;;;;;:27;;-1:-1:-1;;32296:27:0;;;32250:910;;;32364:20;32387:35;32405:4;32411:10;32387:17;:35::i;:::-;-1:-1:-1;;;;;32508:20:0;;32441:25;32508:20;;;:14;:20;;;;;;32364:58;;-1:-1:-1;32441:25:0;32469:78;;32364:58;;32469:16;:78::i;:::-;-1:-1:-1;;;;;32592:29:0;;;;;;:25;:29;;;;;;32441:106;;-1:-1:-1;32592:29:0;;;:85;;-1:-1:-1;;;;;;32646:31:0;;;;;;:27;:31;;;;;;;;32592:85;32566:317;;;32760:15;;32740:17;:35;:123;;32848:15;;32740:123;;;32803:17;32740:123;32720:143;;32566:317;-1:-1:-1;;;;;32968:20:0;;;;;;:14;:20;;;;;;;;;32946:11;:17;;;;;;;33044:6;;32933:107;;33022:17;;32934:56;;32946:43;;:21;:43::i;:::-;32934:7;;:11;:56::i;32933:107::-;:117;;32903:241;;;;-1:-1:-1;;;32903:241:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32250:910;;;-1:-1:-1;;;;;33246:20:0;;33174:17;33246:20;;;:14;:20;;;;;;;;;33224:11;:17;;;;;;33194:88;;33224:43;;:17;:21;:43::i;:::-;33194:7;;:11;:88::i;:::-;33174:108;;33297:14;33323:9;33314:6;:18;:46;;33359:1;33314:46;;;33335:21;:6;33346:9;33335:10;:21::i;:::-;-1:-1:-1;;;;;33375:20:0;;;;;;:14;:20;;;;;:30;;;;;;33297:63;-1:-1:-1;33442:10:0;;;;;:118;;-1:-1:-1;;;;;;33474:29:0;;;;;;:25;:29;;;;;;;;;:85;;-1:-1:-1;;;;;;33528:31:0;;;;;;:27;:31;;;;;;;;33474:85;33420:835;;;-1:-1:-1;;;;;33621:24:0;;;;;;:18;:24;;;;;:37;33691:15;33661:5;33621:45;;;:85;33595:304;;-1:-1:-1;;;;;33749:24:0;;;;;;:18;:24;;;;;:31;;:41;;;;;;33595:304;;;-1:-1:-1;;;;;33839:24:0;;;;;;:18;:24;;;;;:31;;:40;;;33595:304;-1:-1:-1;;;;;33917:24:0;;;;;;:18;:24;;;;;33957:15;33917:55;;33995:31;;-1:-1:-1;;;33995:31:0;;;;33991:249;;;34120:18;;-1:-1:-1;;;;;34085:24:0;;;;;;:18;:24;;;;;:31;;;:53;;34051:169;;;;;-1:-1:-1;;;34051:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;32089:2177;;;;;34282:11;34278:93;;34310:28;34326:4;34332:2;34336:1;34310:15;:28::i;:::-;34353:7;;34278:93;34383:28;34414:24;34432:4;34414:9;:24::i;:::-;34517:18;;34564:11;;34383:55;;-1:-1:-1;34480:55:0;;;;34564:11;;:37;;;;-1:-1:-1;34593:8:0;;-1:-1:-1;;;34593:8:0;;;;34592:9;34564:37;:86;;;;-1:-1:-1;;;;;;34619:31:0;;;;;;:25;:31;;;;;;;;34618:32;34564:86;:137;;;;-1:-1:-1;;;;;;34668:33:0;;;;;;:27;:33;;;;;;;;34667:34;34564:137;:177;;;;;34718:23;34564:177;34546:334;;;34768:8;:15;;-1:-1:-1;;;;34768:15:0;-1:-1:-1;;;34768:15:0;;;34798:39;34816:20;34798:17;:39::i;:::-;34852:8;:16;;-1:-1:-1;;;;34852:16:0;;;34546:334;34908:8;;-1:-1:-1;;;;;34945:25:0;;34892:12;34945:25;;;:19;:25;;;;;;34908:8;-1:-1:-1;;;34908:8:0;;;;;34907:9;;34945:25;;:65;;-1:-1:-1;;;;;;34987:23:0;;;;;;:19;:23;;;;;;;;34945:65;:91;;;-1:-1:-1;35028:8:0;;-1:-1:-1;;;35028:8:0;;;;35027:9;34945:91;:123;;;;35061:7;:5;:7::i;:::-;-1:-1:-1;;;;;35053:15:0;:4;-1:-1:-1;;;;;35053:15:0;;34945:123;:153;;;;35091:7;:5;:7::i;:::-;-1:-1:-1;;;;;35085:13:0;:2;-1:-1:-1;;;;;35085:13:0;;34945:153;34927:225;;;-1:-1:-1;35135:5:0;34927:225;35162:12;35189:7;35185:471;;;-1:-1:-1;;;;;35217:29:0;;;;;;:25;:29;;;;;;;;35213:333;;;35274:40;35310:3;35274:31;35285:19;;35274:6;:10;;:31;;;;:::i;:::-;:35;;:40::i;:::-;35267:47;;35213:333;;;-1:-1:-1;;;;;35340:31:0;;;;;;:25;:31;;;;;;;;35336:210;;;35399:39;35434:3;35399:30;35410:18;;35399:6;:10;;:30;;;;:::i;35336:210::-;35486:44;35526:3;35486:35;35497:23;;35486:6;:10;;:35;;;;:::i;:44::-;35479:51;;35336:210;35602:42;35618:4;35632;35639;35602:15;:42::i;:::-;35668:43;35684:4;35690:2;35694:16;:6;35705:4;35694:10;:16::i;:::-;35668:15;:43::i;:::-;35823:15;;-1:-1:-1;;;;;35823:15:0;:26;35858:4;35865:15;35858:4;35865:9;:15::i;:::-;35823:58;;;;;;;;;;;;;-1:-1:-1;;;;;35823:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35806:96;35916:15;;-1:-1:-1;;;;;35916:15:0;:26;35951:2;35956:13;35951:2;35956:9;:13::i;:::-;35916:54;;;;;;;;;;;;;-1:-1:-1;;;;;35916:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35912:70;31336:4653;;;;;;;;:::o;1559:224::-;1679:7;1715:12;1707:6;;;;1699:29;;;;-1:-1:-1;;;1699:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1751:5:0;;;1559:224::o;8004:314::-;-1:-1:-1;;;;;8088:21:0;;8080:65;;;;;-1:-1:-1;;;8080:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8171:12;;:24;;8188:6;8171:16;:24::i;:::-;8156:12;:39;-1:-1:-1;;;;;8227:18:0;;:9;:18;;;;;;;;;;;:30;;8250:6;8227:22;:30::i;:::-;-1:-1:-1;;;;;8206:18:0;;:9;:18;;;;;;;;;;;:51;;;;8273:37;;;;;;;8206:18;;:9;;-1:-1:-1;;;;;;;;;;;8273:37:0;;;;;;;;;8004:314;;:::o;8326:391::-;-1:-1:-1;;;;;8410:21:0;;8402:67;;;;-1:-1:-1;;;8402:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8501:105;8538:6;8501:105;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8501:18:0;;:9;:18;;;;;;;;;;;;:105;:22;:105::i;:::-;-1:-1:-1;;;;;8480:18:0;;:9;:18;;;;;;;;;;:126;8632:12;;:24;;8649:6;8632:16;:24::i;:::-;8617:12;:39;8672:37;;;;;;;;8698:1;;-1:-1:-1;;;;;8672:37:0;;;-1:-1:-1;;;;;;;;;;;8672:37:0;;;;;;;;8326:391;;:::o;17776:810::-;17936:15;;17894:59;;17864:7;;-1:-1:-1;;;;;17936:15:0;;;;17894:59;;;;;;17864:7;;17894:59;18000:15;;;-1:-1:-1;;;;;18000:15:0;;;18020:5;17964:53;;;:27;:53;;;;;;;;:61;;-1:-1:-1;;17964:61:0;;;18036:48;;-1:-1:-1;;;;;;18036:48:0;;;;;;;;;18138:25;;-1:-1:-1;;;18138:25:0;;;;18020:5;;18138:15;;;;:23;;:25;;;;;17964:53;18138:25;;;;;:15;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18138:25:0;18202:4;;18120:87;;;-1:-1:-1;;;18120:87:0;;18195:4;18120:87;;;;-1:-1:-1;;;;;18202:4:0;;;18120:87;;;;;;:66;;;;;;;:87;;;;;18138:25;;18120:87;;;;;;;:66;:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18120:87:0;;-1:-1:-1;;;;;;18222:30:0;;18218:174;;18304:15;;;;;;;;;-1:-1:-1;;;;;18304:15:0;-1:-1:-1;;;;;18304:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18304:25:0;18375:4;;18286:94;;;-1:-1:-1;;;18286:94:0;;18368:4;18286:94;;;;-1:-1:-1;;;;;18375:4:0;;;18286:94;;;;;;:73;;;;;;;:94;;;;;18304:25;;18286:94;;;;;;;18375:4;18286:73;:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18286:94:0;;-1:-1:-1;18218:174:0;-1:-1:-1;;;;;18402:39:0;;;;;;;:27;:39;;;;;;;;:46;;18444:4;-1:-1:-1;;18402:46:0;;;;;;;;18459:13;:30;;-1:-1:-1;;;;;;18459:30:0;;;;;;;;;;;18526:13;;18500:40;;:25;:40;;;;;:47;;;;;;;;;;18565:13;;;;;17776:810;-1:-1:-1;17776:810:0:o;22888:440::-;-1:-1:-1;;;;;22993:31:0;;;;;;:25;:31;;;;;;;;:40;;;;;;;22971:146;;;;-1:-1:-1;;;22971:146:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23128:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;23128:39:0;;;;;;;;;;;;23178:87;;23204:15;;:49;;;-1:-1:-1;;;23204:49:0;;-1:-1:-1;;;;;23204:49:0;;;;;;;:15;:49;;;;;;;;:15;;;:36;;:49;;;;;:15;;:49;;;;;;:15;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23178:87;23280:40;;;;;;-1:-1:-1;;;;;23280:40:0;;;;;;;;22888:440;;:::o;37224:4061::-;37359:13;;-1:-1:-1;;;37359:13:0;;;;:46;;;;-1:-1:-1;;;;;;37376:29:0;;;;;;:25;:29;;;;;;;;37359:46;37355:214;;;-1:-1:-1;;;;;37448:19:0;;;;;;:13;:19;;;;;;37479:15;37470:5;37448:27;;;:46;;37422:135;;;;;-1:-1:-1;;;37422:135:0;;;;;;;;;;;;-1:-1:-1;;;37422:135:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;37585:29:0;;;;;;:25;:29;;;;;;;;37581:326;;;-1:-1:-1;;;;;37635:19:0;;;;;;:13;:19;;;;;;37666:15;37657:5;37635:27;;;:46;37631:211;;-1:-1:-1;;;;;37702:32:0;;;;;;:26;:32;;;;;:42;;;;;;37631:211;;;-1:-1:-1;;;;;37785:32:0;;;;;;:26;:32;;;;;:41;;;37631:211;-1:-1:-1;;;;;37858:19:0;;;;;;:13;:19;;;;;37880:15;37858:37;;37581:326;37923:18;;-1:-1:-1;;;37923:18:0;;;;37919:206;;;38020:24;;-1:-1:-1;;;;;37984:32:0;;;;;;:26;:32;;;;;;:60;;37958:155;;;;-1:-1:-1;;;37958:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38141:12;;-1:-1:-1;;;38141:12:0;;;;38137:161;;;-1:-1:-1;;;;;38174:21:0;;38190:4;38174:21;38170:117;;38234:11;;38224:6;:21;;38216:55;;;;;-1:-1:-1;;;38216:55:0;;;;;;;;;;;;-1:-1:-1;;;38216:55:0;;;;;;;;;;;;;;;38314:8;;-1:-1:-1;;;38314:8:0;;;;38310:906;;;-1:-1:-1;;;;;38343:21:0;;38359:4;38343:21;;;;:44;;-1:-1:-1;;;;;;38368:19:0;;38382:4;38368:19;;38343:44;38339:866;;;-1:-1:-1;;;;;38435:29:0;;;;;;:25;:29;;;;;;;;38434:30;:89;;;;-1:-1:-1;;;;;;38490:33:0;;;;;;:27;:33;;;;;;;;38489:34;38434:89;38408:379;;;-1:-1:-1;;;;;38620:11:0;;;;;;:7;:11;;;;;;38634:10;38620:24;38600:15;:45;;38566:149;;;;;-1:-1:-1;;;38566:149:0;;;;;;;;;;;;-1:-1:-1;;;38566:149:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;38738:11:0;;;;;;:7;:11;;;;;38752:15;38738:29;;38408:379;-1:-1:-1;;;;;38832:31:0;;;;;;:25;:31;;;;;;;;38831:32;:91;;;;-1:-1:-1;;;;;;38889:33:0;;;;;;:27;:33;;;;;;;;38888:34;38831:91;38805:385;;;-1:-1:-1;;;;;39019:13:0;;;;;;:7;:13;;;;;;39035:10;39019:26;38999:15;:47;;38965:151;;;;;-1:-1:-1;;;38965:151:0;;;;;;;;;;;;-1:-1:-1;;;38965:151:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;39139:13:0;;;;;;:7;:13;;;;;39155:15;39139:31;;38805:385;39232:12;;-1:-1:-1;;;39232:12:0;;;;39228:1263;;;-1:-1:-1;;;;;39283:31:0;;;;;;:25;:31;;;;;;;;:84;;;;-1:-1:-1;;;;;;39336:31:0;;;;;;:27;:31;;;;;;;;39335:32;39283:84;:124;;;;-1:-1:-1;;;;;;39388:19:0;;39402:4;39388:19;;39283:124;:166;;;;-1:-1:-1;;;;;;39428:21:0;;39444:4;39428:21;;39283:166;39261:263;;;39492:9;-1:-1:-1;;;;;39492:15:0;;;39484:24;;;;;;39558:20;;39581:1;39558:24;39542:12;:40;39538:942;;39617:9;39603:24;;;;:13;:24;;;;;:31;;-1:-1:-1;;39603:31:0;39630:4;39603:31;;;-1:-1:-1;;;;;39657:17:0;;;;;;:36;;-1:-1:-1;39678:9:0;-1:-1:-1;;;;;39678:15:0;;;;39657:36;39653:138;;;39718:15;;:53;;;-1:-1:-1;;;39718:53:0;;39755:9;39718:53;;;;:15;:53;;;;;;-1:-1:-1;;;;;39718:15:0;;;;:36;;:53;;;;;:15;;:53;;;;;;;;:15;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39653:138;-1:-1:-1;;;;;39836:31:0;;;;;;:25;:31;;;;;;;;39835:32;:91;;;;-1:-1:-1;;;;;;39893:33:0;;;;;;:27;:33;;;;;;;;39892:34;39835:91;:137;;;;-1:-1:-1;;;;;;39951:21:0;;39967:4;39951:21;;39835:137;39809:323;;;-1:-1:-1;;;;;40015:19:0;;;;;;;:13;:19;;;;;;:26;;-1:-1:-1;;40015:26:0;40037:4;40015:26;;;;;;40064:15;;:48;;-1:-1:-1;;;40064:48:0;;;;;;;;;;;;;;;;;;:15;;;:36;;:48;;;;;40015:19;40064:48;;;;;;40015:19;40064:15;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39809:323;-1:-1:-1;;;;;40179:29:0;;;;;;:25;:29;;;;;;;;40178:30;:87;;;;-1:-1:-1;;;;;;40234:31:0;;;;;;:27;:31;;;;;;;;40233:32;40178:87;:131;;;;-1:-1:-1;;;;;;40290:19:0;;40304:4;40290:19;;40178:131;40152:313;;;-1:-1:-1;;;;;40352:17:0;;;;;;;:13;:17;;;;;;:24;;-1:-1:-1;;40352:24:0;40372:4;40352:24;;;;;;40399:15;;:46;;-1:-1:-1;;;40399:46:0;;;;;;;;;;;;;;;;;;:15;;;:36;;:46;;;;;40352:17;40399:46;;;;;;40352:17;40399:15;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40152:313;40507:18;;-1:-1:-1;;;40507:18:0;;;;40503:338;;;-1:-1:-1;;;;;40564:31:0;;;;;;:25;:31;;;;;;;;:82;;;;-1:-1:-1;40630:15:0;;-1:-1:-1;;;;;40616:30:0;;;40630:15;;40616:30;;40564:82;:122;;;;-1:-1:-1;;;;;;40667:19:0;;40681:4;40667:19;;40564:122;40542:288;;;40721:15;40739:13;40749:2;40739:9;:13::i;:::-;40802:11;;40721:31;;-1:-1:-1;40779:19:0;40721:31;40791:6;40779:11;:19::i;:::-;:34;;40771:43;;;;;;40542:288;;40857:11;;;;;;;40853:425;;;-1:-1:-1;;;;;40889:21:0;;40905:4;40889:21;;;;:44;;-1:-1:-1;;;;;;40914:19:0;;40928:4;40914:19;;40889:44;40885:382;;;-1:-1:-1;;;;;40984:31:0;;;;;;:25;:31;;;;;;;;;:89;;-1:-1:-1;;;;;;41044:29:0;;;;;;:25;:29;;;;;;;;40984:89;:151;;;-1:-1:-1;;;;;;41102:33:0;;;;;;:27;:33;;;;;;;;40984:151;:211;;;-1:-1:-1;;;;;;41164:31:0;;;;;;:27;:31;;;;;;;;40984:211;40954:297;;;;;-1:-1:-1;;;40954:297:0;;;;;;;;;;;;-1:-1:-1;;;40954:297:0;;;;;;;;;;;;;;1415:136;1473:7;1500:43;1504:1;1507;1500:43;;;;;;;;;;;;;;;;;:3;:43::i;29431:1897::-;-1:-1:-1;;;;;29587:20:0;;29542:23;29587:20;;;:13;:20;;;;;;;;29583:1738;;;-1:-1:-1;;;;;29645:18:0;;29624;29645;;;:11;:18;;;;;;29695:8;29682:21;;29678:1632;;;29742:1;29724:19;;29678:1632;;;29782:7;29769:10;:20;29765:1545;;;29828:25;29850:2;29828:17;:10;29843:1;29828:14;:17::i;:25::-;29810:43;;29765:1545;;;29892:7;29879:10;:20;29875:1435;;;29938:27;29961:3;29938:18;:10;29953:2;29938:14;:18::i;29875:1435::-;30004:8;29991:10;:21;29987:1323;;;30051:27;30074:3;30051:18;:10;30066:2;30051:14;:18::i;29987:1323::-;30117:8;30104:10;:21;30100:1210;;;30164:27;30187:3;30164:18;:10;30179:2;30164:14;:18::i;30100:1210::-;30230:8;30217:10;:21;30213:1097;;;30277:27;30300:3;30277:18;:10;30292:2;30277:14;:18::i;30213:1097::-;30343:8;30330:10;:21;30326:984;;;30390:27;30413:3;30390:18;:10;30405:2;30390:14;:18::i;30326:984::-;30456:8;30443:10;:21;30439:871;;;30503:17;:10;30518:1;30503:14;:17::i;30439:871::-;30559:8;30546:10;:21;30542:768;;;30606:27;30629:3;30606:18;:10;30621:2;30606:14;:18::i;30542:768::-;30672:8;30659:10;:21;30655:655;;;30719:27;30742:3;30719:18;:10;30734:2;30719:14;:18::i;30655:655::-;30785:8;30772:10;:21;30768:542;;;30832:27;30855:3;30832:18;:10;30847:2;30832:14;:18::i;30768:542::-;30898:8;30885:10;:21;30881:429;;;30945:27;30968:3;30945:18;:10;30960:2;30945:14;:18::i;30881:429::-;31011:8;30998:10;:21;30994:316;;;31058:27;31081:3;31058:18;:10;31073:2;31058:14;:18::i;30994:316::-;31124:8;31111:10;:21;31107:203;;;31171:27;31194:3;31171:18;:10;31186:2;31171:14;:18::i;31107:203::-;31237:8;31224:10;:21;31220:90;;;31284:10;31266:28;;31220:90;29583:1738;29431:1897;;;;:::o;7448:548::-;-1:-1:-1;;;;;7588:20:0;;7580:70;;;;-1:-1:-1;;;7580:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7669:23:0;;7661:71;;;;-1:-1:-1;;;7661:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7763:108;7799:6;7763:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7763:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;7743:17:0;;;:9;:17;;;;;;;;;;;:128;;;;7905:20;;;;;;;:32;;7930:6;7905:24;:32::i;:::-;-1:-1:-1;;;;;7882:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7953:35;;;;;;;7882:20;;7953:35;;;;-1:-1:-1;;;;;;;;;;;7953:35:0;;;;;;;;7448:548;;;:::o;35997:1219::-;36059:20;36157:26;;36120:21;;36082:22;;:59;:101;36059:124;;36194:18;36286:24;;36251:19;;36215:20;;:55;:95;36194:116;;36321:17;36410:23;;36376:18;;36341:19;;:53;:92;36321:112;;36446:18;36467:39;36496:9;36467:24;36478:12;36467:6;:10;;:24;;;;:::i;:39::-;36446:60;-1:-1:-1;36517:20:0;36540:17;36446:60;36555:1;36540:14;:17::i;:::-;36517:40;-1:-1:-1;36568:20:0;36591:24;:6;36517:40;36591:10;:24::i;:::-;36568:47;-1:-1:-1;36647:21:0;36679:30;36568:47;36679:16;:30::i;:::-;36720:19;36742:37;:21;36768:10;36742:25;:37::i;:::-;36720:59;-1:-1:-1;36790:17:0;36825:51;36874:1;36825:44;36859:9;36825:44;36720:59;36841:12;36825:15;:29::i;:51::-;36790:97;-1:-1:-1;36898:21:0;36923:42;36955:9;36923:27;:11;36939:10;36923:15;:27::i;:42::-;36977:14;;:38;;36898:68;;-1:-1:-1;;;;;;36977:14:0;;:38;;;;;36898:68;;36977:14;:38;:14;:38;36898:68;36977:14;:38;;;;;;;;;;;;;;;;;;;;;37026:37;37039:12;37053:9;37026:12;:37::i;:::-;37133:20;;37097:21;;37133:20;;;;;37129:80;;;37170:27;37184:12;37170:13;:27::i;:::-;35997:1219;;;;;;;;;;;;:::o;2045:132::-;2103:7;2130:39;2134:1;2137;2130:39;;;;;;;;;;;;;-1:-1:-1;;;2130:39:0;;;:3;:39::i;41887:453::-;41977:16;;;41991:1;41977:16;;;;;;;;41953:21;;41977:16;;;;;;;;;;-1:-1:-1;41977:16:0;41953:40;;42022:4;42004;42009:1;42004:7;;;;;;;;-1:-1:-1;;;;;42004:23:0;;;:7;;;;;;;;;:23;42048:4;;42038:7;;42048:4;;;42038;;42048;;42038:7;;;;;;-1:-1:-1;;;;;42038:14:0;;;:7;;;;;;;;;:14;42095:15;;42063:62;;42080:4;;42095:15;42113:11;42063:8;:62::i;:::-;42136:15;;:196;;-1:-1:-1;;;42136:196:0;;;;;;;;:15;:196;;;;;;42286:4;42136:196;;;;;;42306:15;42136:196;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42136:15:0;;;;:66;;42217:11;;42259:4;;42286;42306:15;42136:196;;;;;;;;;;;;;;;;:15;:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41519:360;41632:15;;41600:62;;41617:4;;-1:-1:-1;;;;;41632:15:0;41650:11;41600:8;:62::i;:::-;41673:15;;-1:-1:-1;;;;;41673:15:0;:31;41712:9;41745:4;41765:11;41673:15;;41823:7;:5;:7::i;:::-;41845:15;41673:198;;;;;;;;;;;;;-1:-1:-1;;;;;41673:198:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;41673:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41293:218;41381:15;;41373:51;;41355:12;;-1:-1:-1;;;;;41381:15:0;;41410:9;;41355:12;41373:51;41355:12;41373:51;41410:9;41381:15;41373:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41354:70;;;41439:7;41435:69;;;41468:24;;;;;;;;;;;;;;;;;41293:218;;:::o;2185:223::-;2305:7;2340:12;2333:5;2325:28;;;;-1:-1:-1;;;2325:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2364:9;2380:1;2376;:5;;;;;;;2185:223;-1:-1:-1;;;;;2185:223:0:o

Swarm Source

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