ETH Price: $3,304.20 (-4.63%)

Token

HONEYBEENU (HONEYBEENU)
 

Overview

Max Total Supply

10,000,000,000,000 HONEYBEENU

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
36,618,200,492.299565150588346978 HONEYBEENU

Value
$0.00
0x1cefc93c74bcb78ce35ef78e868380f830da2023
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:
HoneyBeenu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-11
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.7;
contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
contract ERC20Ownable 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 virtual returns (address) {
        return _owner;
    }

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "ERC20Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
contract HoneyBeenu is IERC20, Context, ERC20Ownable {
    using SafeMath for uint256;
    address dead = 0x000000000000000000000000000000000000dEaD;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping (address => uint) private _setCoolDown;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    mapping(address => bool) private _maxWalletExclude;
	mapping (address => bool) private _isBot;
	mapping(address => bool) public boughtEarly;
	uint256 public tradingActiveBlock = 0;
    uint256 public earlyBuyPenaltyEnd;
    address[] private _excluded;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e13 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _maxTxAmount = _tTotal;
    uint256 private _tFeeTotal;
    uint256 private _maxWalletSize = 300000000000 * 10**18;
    string private constant _nomen = "HONEYBEENU";
    string private constant _sym = "HONEYBEENU";
    uint8 private constant _dec = 18;
    uint8 private _refTax = 2;
    uint8 private _previousRefTax = _refTax;
    uint8 private _burnTax = 0;
    uint8 private _previouseBurnTax = _burnTax;
    uint8 private _liqTax = 2; 
    uint8 private _previousLiqTax = _liqTax;
    uint8 private _devTax = 6; 
    uint8 private _previousDevTax = _devTax;
    uint8 private _buyBack = 0;
    uint8 private _previousBuyBack = _buyBack;
    uint8 private _liqDiv = _liqTax + _devTax + _buyBack + _burnTax;
    uint256 private burnTokens;
    uint256 private MarketingTokens;
    uint256 private LiquidityTokens;
    uint256 private BuyBackTokens;
    IUniswapV2Router02 private pcsV2Router;
    address private pcsV2Pair;
    address payable private feeWallet;
    bool inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = true;
    bool private coolDownEnabled = false;
    bool private _firstTrans = true;
    bool private _limitBuys = false;
    bool private _clearClog = false;
    bool private _maxWalletOn = false;
    uint256 private numTokensSellToAddToLiquidity;
    uint256 private buyBackUpperLimit = 1 * 10**18;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);
    event updateMxAmt(uint256 mxAmt);
    event BoughtEarly(address indexed sniper);
    event RemovedSniper(address indexed notsnipersupposedly);
    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        feeWallet = payable(0x8ffe5aF3b096dA6eC859FFf2898256FF33f285C4);
        numTokensSellToAddToLiquidity = _tTotal.mul(1).div(1000);
        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;
        _maxWalletExclude[address(this)] = true;
        _maxWalletExclude[_msgSender()] = true;
        _maxWalletExclude[address(dead)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    function name() public pure override returns (string memory) {
        return _nomen;
    }
    function symbol() public pure override returns (string memory) {
        return _sym;
    }
    function decimals() public pure override returns (uint8) {
        return _dec;
    }
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender,address recipient,uint256 amount) public 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) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")
        );
        return true;
    }
    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        coolDownEnabled = onoff;
    }
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) {
        require(tAmount <= _tTotal, "Amt must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }
    function tokenFromReflection(uint256 rAmount) public view returns (uint256) {
        require(rAmount <= _rTotal, "Amt must be less than tot refl");
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
    receive() external payable {}
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    function _getValues(uint256 tAmount) private view returns (uint256,uint256,uint256,uint256,uint256,uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }
    function _getTValues(uint256 tAmount)private view returns (uint256,uint256,uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }
    function _getRValues(uint256 tAmount,uint256 tFee,uint256 tLiquidity,uint256 currentRate) private pure returns (uint256,uint256,uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    function _takeLiquidity(uint256 tLiquidity) private {
        burnTokens += tLiquidity * _burnTax / _liqDiv;
        MarketingTokens += tLiquidity * _devTax / _liqDiv;
		LiquidityTokens += tLiquidity * _liqTax / _liqDiv;
        BuyBackTokens += tLiquidity * _buyBack / _liqDiv;
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_refTax).div(10**2);
    }
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_devTax + _burnTax + _liqTax + _buyBack).div(10**2);
    }
    function removeAllFee() private {
        if (_refTax == 0 && _liqTax == 0 && _devTax == 0 && _burnTax == 0 && _buyBack == 0) return;

        _previousRefTax = _refTax;
        _previousLiqTax = _liqTax;
        _previousDevTax = _devTax;
        _previouseBurnTax = _burnTax;
        _previousBuyBack = _buyBack;

        _refTax = 0;
        _liqTax = 0;
        _devTax = 0;
        _burnTax = 0;
        _buyBack = 0;
    }
    function restoreAllFee() private {
        _refTax = _previousRefTax;
        _liqTax = _previousLiqTax;
        _devTax = _previousDevTax;
        _burnTax = _previouseBurnTax;
        _buyBack = _previousBuyBack;
    }
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }
    function _approve(address owner,address spender,uint256 amount) private {
        require(owner != address(0), "ERC20: approve from zero address");
        require(spender != address(0), "ERC20: approve to zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _transfer(address from,address to,uint256 amount) private {
        require(from != address(0), "ERC20: transfer from zero address");
        require(to != address(0), "ERC20: transfer to zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
		require(!_isBot[from]);
		require(!boughtEarly[from] || earlyBuyPenaltyEnd <= block.timestamp, "Snipers can't transfer tokens to sell cheaper until penalty timeframe is over.  DM a Mod.");
		if (_maxWalletOn == true && ! _maxWalletExclude[to]) {
            require(balanceOf(to) + amount <= _maxWalletSize, "Max amount of tokens for wallet reached");
        }
        if (_limitBuys == true && from == pcsV2Pair) {
			require(amount <= 40000000000 * 10**18, "Limits are in place, please lower buying amount");
		}
		if (_clearClog == true && to != owner() && from != pcsV2Pair) {
			require(amount <= 0 * 10**18);
		}
        if (from == pcsV2Pair && to != address(pcsV2Router) && ! _isExcludedFromFee[to] && coolDownEnabled) {
                require(amount <= _maxTxAmount);
                require(_setCoolDown[to] < block.timestamp);
                _setCoolDown[to] = block.timestamp + (30 seconds);
            }
        if(_firstTrans == true) {
            IUniswapV2Router02 _pcsV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            pcsV2Router = _pcsV2Router;
            pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).getPair(address(this), _pcsV2Router.WETH());
            tradingActiveBlock = block.number;
            earlyBuyPenaltyEnd = block.timestamp + 72 hours;
            _maxWalletExclude[address(pcsV2Pair)] = true;
            _maxWalletExclude[address(pcsV2Router)] = true;
            _limitBuys = true;
            _firstTrans = false;
            _maxWalletOn = true;
        }
		if(from != owner() && to != pcsV2Pair && block.number == tradingActiveBlock){
			boughtEarly[to] = true;
            emit BoughtEarly(to);
		}
        uint256 contractTokenBalance = balanceOf(address(this));
        if (!inSwapAndLiquify && to == pcsV2Pair && swapAndLiquifyEnabled) {
            if (contractTokenBalance >= numTokensSellToAddToLiquidity) {
				swapBackLiq();
            }
        }
        bool takeFee = true;
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
		if(boughtEarly[from] && earlyBuyPenaltyEnd > block.timestamp){
                    _refTax = _refTax * 5;
                    _liqTax = _liqTax * 5;
                    _devTax = _devTax * 5;
                    _buyBack = _buyBack * 5;
                }
        _tokenTransfer(from, to, amount, takeFee);
    }
    function buyBackTokens(uint256 amount) public onlyOwner lockTheSwap {
        if (amount <= BuyBackTokens) {
            swapETHForTokens(amount);
        }
    }
    function swapETHForTokens(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = pcsV2Router.WETH();
        path[1] = address(this);

        // make the swap
        pcsV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0, // accept any amount of Tokens
            path,
            dead, // Burn address
            block.timestamp.add(300)
        );
    }
	function addBot(address _user) public onlyOwner {
        require(_user != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        require(!_isBot[_user], "user already blacklisted");
        _isBot[_user] = true;
    }
	function removeBot(address _user) public onlyOwner {
        require(_isBot[_user], "user already whitelisted");
        _isBot[_user] = false;
    }
	function removeBoughtEarly(address account) external onlyOwner {
        boughtEarly[account] = false;
        emit RemovedSniper(account);
    }
	function swapBackLiq() private lockTheSwap {
        if(_burnTax != 0) {
            _transfer(address(this), dead, burnTokens);
            burnTokens = 0;
        }
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = MarketingTokens + LiquidityTokens + BuyBackTokens;
        // Halve the amount of liquidity tokens
        uint256 tokensForLiquidity = LiquidityTokens.div(2);
        uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForETH(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForMarketing = ethBalance.mul(MarketingTokens).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance.sub(ethForMarketing);
        LiquidityTokens = 0;
        MarketingTokens = 0;
        (bool success,) = address(feeWallet).call{value: ethForMarketing}("");
        addLiquidity(tokensForLiquidity, ethForLiquidity);
        emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        if(address(this).balance > 0 * 10**18){
            (success,) = address(feeWallet).call{value: address(this).balance}("");
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = pcsV2Router.WETH();
        _approve(address(this), address(pcsV2Router), tokenAmount);
        pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp.add(300)
        );
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(pcsV2Router), tokenAmount);
        pcsV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            dead,
            block.timestamp.add(300)
        );
    }
    // Initiate true from deployment
    function Initiate() external onlyOwner {
        _firstTrans = true;
    }
    function TaxSwapEnable() external onlyOwner {
        swapAndLiquifyEnabled = true;
    }
    function TaxSwapDisable() external onlyOwner {
        swapAndLiquifyEnabled = false;
    }
    function LimitBuysOn() external onlyOwner {
        _limitBuys = true;
    }
    function LimitBuysOff() external onlyOwner {
        _limitBuys = false;
    }
    function turnMaxWalletOn() external onlyOwner {
        _maxWalletOn = true;
    }
    function turnMaxWalletOff() external onlyOwner {
        _maxWalletOn = false;
    }
    // FOR USE TO CLEAR IF CLOGS OCCUR IN THE ROUTER
    // STOPS ALL TRANSACTIONS SO OWNER CAN TRANSFER 1 TOKEN TO CLEAR CLOG
    function ClearClog() external onlyOwner {
        _clearClog = true;
    }
    function ClearClogReset() external onlyOwner {
        _clearClog = false;
    }
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }
    function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private {
        if (!takeFee) removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if (!takeFee) restoreAllFee();
    }
    function _transferStandard(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferToExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferFromExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferBothExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _tokenTransferNoFee(address sender,address recipient,uint256 amount) private {
        _rOwned[sender] = _rOwned[sender].sub(amount);
        _rOwned[recipient] = _rOwned[recipient].add(amount);

        if (_isExcluded[sender]) {
            _tOwned[sender] = _tOwned[sender].sub(amount);
        }
        if (_isExcluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient].add(amount);
        }
        emit Transfer(sender, recipient, amount);
    }
}

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":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"notsnipersupposedly","type":"address"}],"name":"RemovedSniper","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":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":false,"internalType":"uint256","name":"mxAmt","type":"uint256"}],"name":"updateMxAmt","type":"event"},{"inputs":[],"name":"ClearClog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ClearClogReset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Initiate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addBot","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":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingActiveBlock","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":[],"name":"turnMaxWalletOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnMaxWalletOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b03191661dead1790556000600b55620000386c7e37be2022c0914b2680000000600019620003df565b6200004690600019620003c5565b600e556c7e37be2022c0914b2680000000600f556c03c95a2f0b4856475fe00000006011556012805461ffff60401b1961ffff60301b1961ffff60201b1963ffffffff19841660ff6201000061020262ffffff19909716871781900482166301000000029290921790951791821664010000000060ff60201b1993909316640200000000908117849004871665010000000000029190911717928316660100000000000060ff60301b1994909416660600000000000090811785900487166701000000000000000291909117179384166801000000000000000060ff60401b19959095168590048616690100000000000000000002179586905585048416949283048416936200016193928304811692919091041662000364565b6200016d919062000364565b62000179919062000364565b6012805460ff929092166a01000000000000000000000260ff60501b199092169190911790556019805465ffffffffffff60a81b19166201000160a81b179055670de0b6b3a7640000601b55348015620001d257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600e5433600090815260026020908152604090912091909155601980546001600160a01b031916738ffe5af3b096da6ec859fff2898256ff33f285c417905562000296906103e89062000282906c7e37be2022c0914b2680000000906001906200103b62000341821b17901c565b6200035660201b620010471790919060201c565b601a553360008181526006602090815260408083208054600160ff1991821681179092553085528285208054821683179055600884528285208054821683179055858552828520805482168317905581546001600160a01b0316855282852080549091169091179055516c7e37be2022c0914b268000000081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000422565b60006200034f8284620003a3565b9392505050565b60006200034f82846200038c565b600060ff821660ff84168060ff03821115620003845762000384620003f6565b019392505050565b6000826200039e576200039e6200040c565b500490565b6000816000190483118215151615620003c057620003c0620003f6565b500290565b600082821015620003da57620003da620003f6565b500390565b600082620003f157620003f16200040c565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b612f5980620004326000396000f3fe60806040526004361061021e5760003560e01c80636e86ea8b11610123578063a457c2d7116100ab578063f2fde38b1161006f578063f2fde38b1461063d578063f5648a4f1461065d578063f5eb223d14610672578063fc155d1d14610687578063ffecf516146106a757600080fd5b8063a457c2d71461058c578063a9059cbb146105ac578063d3dbc861146105cc578063dd62ed3e146105e1578063ee40166e1461062757600080fd5b806380f0f48b116100f257806380f0f48b146104e657806385ecfd28146104fb57806388f820201461052b5780638da5cb5b1461056457806395d89b411461022a57600080fd5b80636e86ea8b1461048757806370a082311461049c578063715018a6146104bc5780637b7141e4146104d157600080fd5b8063437823ec116101a65780635bb988c9116101755780635bb988c9146104085780635c0fdd4c146104285780635fecd9261461043d578063620b4bfc1461045d5780636465de5d1461047257600080fd5b8063437823ec1461036f5780634549b0391461038f5780635342acb4146103af5780635932ead1146103e857600080fd5b806323b872dd116101ed57806323b872dd146102dc5780632d838119146102fc578063313ce5671461031c57806339509351146103385780633f97d3f41461035857600080fd5b806306fdde031461022a578063095ea7b31461026c57806318160ddd1461029c5780631fc851bd146102c657600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50604080518082018252600a815269484f4e45594245454e5560b01b602082015290516102639190612ce3565b60405180910390f35b34801561027857600080fd5b5061028c610287366004612bb0565b6106c7565b6040519015158152602001610263565b3480156102a857600080fd5b506c7e37be2022c0914b26800000005b604051908152602001610263565b3480156102d257600080fd5b506102b8600c5481565b3480156102e857600080fd5b5061028c6102f7366004612b6f565b6106de565b34801561030857600080fd5b506102b8610317366004612bf7565b610747565b34801561032857600080fd5b5060405160128152602001610263565b34801561034457600080fd5b5061028c610353366004612bb0565b6107bd565b34801561036457600080fd5b5061036d6107f3565b005b34801561037b57600080fd5b5061036d61038a366004612afc565b610832565b34801561039b57600080fd5b506102b86103aa366004612c10565b610880565b3480156103bb57600080fd5b5061028c6103ca366004612afc565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156103f457600080fd5b5061036d610403366004612bdc565b610918565b34801561041457600080fd5b5061036d610423366004612afc565b610960565b34801561043457600080fd5b5061036d6109d3565b34801561044957600080fd5b5061036d610458366004612afc565b610a0c565b34801561046957600080fd5b5061036d610abf565b34801561047e57600080fd5b5061036d610af8565b34801561049357600080fd5b5061036d610b31565b3480156104a857600080fd5b506102b86104b7366004612afc565b610b70565b3480156104c857600080fd5b5061036d610bcf565b3480156104dd57600080fd5b5061036d610c43565b3480156104f257600080fd5b5061036d610c7c565b34801561050757600080fd5b5061028c610516366004612afc565b600a6020526000908152604090205460ff1681565b34801561053757600080fd5b5061028c610546366004612afc565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561057057600080fd5b506000546040516001600160a01b039091168152602001610263565b34801561059857600080fd5b5061028c6105a7366004612bb0565b610cbb565b3480156105b857600080fd5b5061028c6105c7366004612bb0565b610d0a565b3480156105d857600080fd5b5061036d610d17565b3480156105ed57600080fd5b506102b86105fc366004612b36565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561063357600080fd5b506102b8600b5481565b34801561064957600080fd5b5061036d610658366004612afc565b610d56565b34801561066957600080fd5b5061036d610e45565b34801561067e57600080fd5b5061036d610ebc565b34801561069357600080fd5b5061036d6106a2366004612bf7565b610efb565b3480156106b357600080fd5b5061036d6106c2366004612afc565b610f5a565b60006106d4338484611053565b5060015b92915050565b60006106eb848484611160565b61073d843361073885604051806060016040528060288152602001612ed7602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611a2e565b611053565b5060019392505050565b6000600e548211156107a05760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064015b60405180910390fd5b60006107aa611a5a565b90506107b68382611047565b9392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916106d49185906107389086611a7d565b6000546001600160a01b0316331461081d5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c01b1916600160c01b179055565b6000546001600160a01b0316331461085c5760405162461bcd60e51b815260040161079790612d38565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006c7e37be2022c0914b26800000008311156108df5760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610797565b816108fe5760006108ef84611a89565b509395506106d8945050505050565b600061090984611a89565b509295506106d8945050505050565b6000546001600160a01b031633146109425760405162461bcd60e51b815260040161079790612d38565b60198054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461098a5760405162461bcd60e51b815260040161079790612d38565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517fccaa6e1cfd4cf9506fa856fdc8e0a00894b2621ece1d60ab36209873305944989190a250565b6000546001600160a01b031633146109fd5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60d01b19169055565b6000546001600160a01b03163314610a365760405162461bcd60e51b815260040161079790612d38565b6001600160a01b03811660009081526009602052604090205460ff16610a9e5760405162461bcd60e51b815260206004820152601860248201527f7573657220616c72656164792077686974656c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314610ae95760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a81b19169055565b6000546001600160a01b03163314610b225760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c81b19169055565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a81b1916600160a81b179055565b6001600160a01b03811660009081526007602052604081205460ff1615610bad57506001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600260205260409020546106d890610747565b6000546001600160a01b03163314610bf95760405162461bcd60e51b815260040161079790612d38565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c6d5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c01b19169055565b6000546001600160a01b03163314610ca65760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c81b1916600160c81b179055565b60006106d4338461073885604051806060016040528060258152602001612eff602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190611a2e565b60006106d4338484611160565b6000546001600160a01b03163314610d415760405162461bcd60e51b815260040161079790612d38565b6019805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610d805760405162461bcd60e51b815260040161079790612d38565b6001600160a01b038116610dea5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610797565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e6f5760405162461bcd60e51b815260040161079790612d38565b604051600090339047908381818185875af1925050503d8060008114610eb1576040519150601f19603f3d011682016040523d82523d6000602084013e610eb6565b606091505b50505050565b6000546001600160a01b03163314610ee65760405162461bcd60e51b815260040161079790612d38565b6019805460ff60d01b1916600160d01b179055565b6000546001600160a01b03163314610f255760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a01b1916600160a01b1790556016548111610f4a57610f4a81611ad8565b506019805460ff60a01b19169055565b6000546001600160a01b03163314610f845760405162461bcd60e51b815260040161079790612d38565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610fae57600080fd5b6001600160a01b03811660009081526009602052604090205460ff16156110175760405162461bcd60e51b815260206004820152601860248201527f7573657220616c726561647920626c61636b6c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b60006107b68284612e18565b60006107b68284612df6565b6001600160a01b0383166110a95760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610797565b6001600160a01b0382166110ff5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610797565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111c05760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610797565b6001600160a01b0382166112165760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610797565b600081116112785760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610797565b6001600160a01b03831660009081526009602052604090205460ff161561129e57600080fd5b6001600160a01b0383166000908152600a602052604090205460ff1615806112c8575042600c5411155b6113605760405162461bcd60e51b815260206004820152605960248201527f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60448201527f2073656c6c206368656170657220756e74696c2070656e616c74792074696d6560648201527f6672616d65206973206f7665722e2020444d2061204d6f642e00000000000000608482015260a401610797565b601954600160d01b900460ff161515600114801561139757506001600160a01b03821660009081526008602052604090205460ff16155b1561141157601154816113a984610b70565b6113b39190612db9565b11156114115760405162461bcd60e51b815260206004820152602760248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c6574206044820152661c995858da195960ca1b6064820152608401610797565b601954600160c01b900460ff161515600114801561143c57506018546001600160a01b038481169116145b156114b5576b813f3978f8940984400000008111156114b55760405162461bcd60e51b815260206004820152602f60248201527f4c696d6974732061726520696e20706c6163652c20706c65617365206c6f776560448201526e1c88189d5e5a5b99c8185b5bdd5b9d608a1b6064820152608401610797565b601954600160c81b900460ff16151560011480156114e157506000546001600160a01b03838116911614155b80156114fb57506018546001600160a01b03848116911614155b1561150b57801561150b57600080fd5b6018546001600160a01b03848116911614801561153657506017546001600160a01b03838116911614155b801561155b57506001600160a01b03821660009081526006602052604090205460ff16155b80156115705750601954600160b01b900460ff165b156115cd57600f5481111561158457600080fd5b6001600160a01b03821660009081526005602052604090205442116115a857600080fd5b6115b342601e612db9565b6001600160a01b0383166000908152600560205260409020555b601954600160b81b900460ff1615156001141561180657601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b15801561164457600080fd5b505afa158015611658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167c9190612b19565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c457600080fd5b505afa1580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190612b19565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561174257600080fd5b505afa158015611756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177a9190612b19565b601880546001600160a01b0319166001600160a01b039290921691909117905543600b556117ab426203f480612db9565b600c55506018546001600160a01b039081166000908152600860205260408082208054600160ff1991821681179092556017549094168352912080549092161790556019805463ff00ffff60b81b19166201000160c01b1790555b6000546001600160a01b0384811691161480159061183257506018546001600160a01b03838116911614155b801561183f5750600b5443145b1561188e576001600160a01b0382166000818152600a6020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b600061189930610b70565b601954909150600160a01b900460ff161580156118c357506018546001600160a01b038481169116145b80156118d85750601954600160a81b900460ff165b156118ee57601a5481106118ee576118ee611c4b565b6001600160a01b03841660009081526006602052604090205460019060ff168061193057506001600160a01b03841660009081526006602052604090205460ff165b15611939575060005b6001600160a01b0385166000908152600a602052604090205460ff168015611962575042600c54115b15611a1b576012546119789060ff166005612e37565b6012805460ff191660ff928316179081905561199e91600160201b909104166005612e37565b6012805464ff000000001916600160201b60ff9384160217908190556119ce91600160301b909104166005612e37565b6012805466ff0000000000001916600160301b60ff938416021790819055611a0091600160401b909104166005612e37565b601260086101000a81548160ff021916908360ff1602179055505b611a2785858584611e56565b5050505050565b60008184841115611a525760405162461bcd60e51b81526004016107979190612ce3565b505050900390565b6000806000611a67612062565b9092509050611a768282611047565b9250505090565b60006107b68284612db9565b6000806000806000806000806000611aa08a61220e565b9250925092506000806000611abe8d8686611ab9611a5a565b612250565b919f909e50909c50959a5093985091965092945050505050565b6040805160028082526060820183526000926020830190803683375050601754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611b3d57600080fd5b505afa158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b759190612b19565b81600081518110611b8857611b88612ea8565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611bbc57611bbc612ea8565b6001600160a01b0392831660209182029290920101526017546001549082169163b6f9de95918591600091869116611bf64261012c611a7d565b6040518663ffffffff1660e01b8152600401611c159493929190612cae565b6000604051808303818588803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b50505050505050565b6019805460ff60a01b1916600160a01b17905560125462010000900460ff1615611c9257600154601354611c8c9130916001600160a01b0390911690611160565b60006013555b6000611c9d30610b70565b90506000601654601554601454611cb49190612db9565b611cbe9190612db9565b90506000611cd8600260155461104790919063ffffffff16565b90506000611ce684836122a0565b905047611cf2826122ac565b6000611cfe47836122a0565b90506000611d2186611d1b6014548561103b90919063ffffffff16565b90611047565b90506000611d2f83836122a0565b60006015819055601481905560195460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114611d8c576040519150601f19603f3d011682016040523d82523d6000602084013e611d91565b606091505b50509050611d9f878361241e565b60408051878152602081018490529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a14715611e3e576019546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611e33576040519150601f19603f3d011682016040523d82523d6000602084013e611e38565b606091505b50909150505b50506019805460ff60a01b1916905550505050505050565b80611e6357611e63612507565b6001600160a01b03841660009081526007602052604090205460ff168015611ea457506001600160a01b03831660009081526007602052604090205460ff16155b15611eb957611eb4848484612631565b611fb7565b6001600160a01b03841660009081526007602052604090205460ff16158015611efa57506001600160a01b03831660009081526007602052604090205460ff165b15611f0a57611eb4848484612757565b6001600160a01b03841660009081526007602052604090205460ff16158015611f4c57506001600160a01b03831660009081526007602052604090205460ff16155b15611f5c57611eb4848484612800565b6001600160a01b03841660009081526007602052604090205460ff168015611f9c57506001600160a01b03831660009081526007602052604090205460ff165b15611fac57611eb4848484612844565b611fb7848484612800565b80610eb6576012805468ff00000000000000001966ff000000ff00001964ff000000ff198316610100840460ff9081169182176501000000000060ff1990961692909217949094048416600160201b021790811662ff000019600160381b83048516600160301b0290811691909117630100000066ff00000000000019909316909117919091048316620100000217908116600160481b909104909116600160401b02179055610eb6565b600e5460009081906c7e37be2022c0914b2680000000825b600d548110156121c9578260026000600d848154811061209c5761209c612ea8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061210757508160036000600d84815481106120e0576120e0612ea8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612127575050600e54936c7e37be2022c0914b26800000009350915050565b61216d60026000600d848154811061214157612141612ea8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906122a0565b92506121b560036000600d848154811061218957612189612ea8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906122a0565b9150806121c181612e77565b91505061207a565b50600e546121e4906c7e37be2022c0914b2680000000611047565b821015612205575050600e54926c7e37be2022c0914b268000000092509050565b90939092509050565b60008060008061221d856128b7565b9050600061222a866128d2565b905060006122428261223c89866122a0565b906122a0565b979296509094509092505050565b600080808061225f888661103b565b9050600061226d888761103b565b9050600061227b888861103b565b9050600061228d8261223c86866122a0565b939b939a50919850919650505050505050565b60006107b68284612e60565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122e1576122e1612ea8565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561233557600080fd5b505afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190612b19565b8160018151811061238057612380612ea8565b6001600160a01b0392831660209182029290920101526017546123a69130911684611053565b6017546001600160a01b031663791ac94783600084306123c84261012c611a7d565b6040518663ffffffff1660e01b81526004016123e8959493929190612d7d565b600060405180830381600087803b15801561240257600080fd5b505af1158015612416573d6000803e3d6000fd5b505050505050565b6017546124369030906001600160a01b031684611053565b6017546001546001600160a01b039182169163f305d719918491309187916000918291166124664261012c611a7d565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b1580156124ce57600080fd5b505af11580156124e2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a279190612c3c565b60125460ff161580156125245750601254600160201b900460ff16155b801561253a5750601254600160301b900460ff16155b801561254f575060125462010000900460ff16155b80156125655750601254600160401b900460ff16155b1561256c57565b6012805469ffff00ff00ff00ff00ff1967ff000000ff0000001965ff000000ff0019831665ff00000000001961010060ff8087169190910291821692909217600160201b61ff001990961690911794909404811665010000000000029390931790811663ff00000019600160301b83048516600160381b02908116919091176201000067ff000000000000001990931690911791909104831663010000000217908116600160401b909104909116600160481b0268ff00ff00ff00ff00ff1916179055565b60008060008060008061264387611a89565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061267590886122a0565b6001600160a01b038a166000908152600360209081526040808320939093556002905220546126a490876122a0565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546126d39086611a7d565b6001600160a01b0389166000908152600260205260409020556126f581612932565b6126ff8483612ac3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161274491815260200190565b60405180910390a3505050505050505050565b60008060008060008061276987611a89565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061279b90876122a0565b6001600160a01b03808b16600090815260026020908152604080832094909455918b168152600390915220546127d19084611a7d565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546126d39086611a7d565b60008060008060008061281287611a89565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506126a490876122a0565b60008060008060008061285687611a89565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061288890886122a0565b6001600160a01b038a1660009081526003602090815260408083209390935560029052205461279b90876122a0565b6012546000906106d890606490611d1b90859060ff1661103b565b6012546000906106d890606490611d1b9060ff600160401b8204811691600160201b810482169161291491620100008104821691600160301b90910416612dd1565b61291e9190612dd1565b6129289190612dd1565b859060ff1661103b565b60125460ff600160501b820481169161295391620100009091041683612e18565b61295d9190612df6565b6013600082825461296e9190612db9565b909155505060125460ff600160501b820481169161299591600160301b9091041683612e18565b61299f9190612df6565b601460008282546129b09190612db9565b909155505060125460ff600160501b82048116916129d791600160201b9091041683612e18565b6129e19190612df6565b601560008282546129f29190612db9565b909155505060125460ff600160501b8204811691612a1991600160401b9091041683612e18565b612a239190612df6565b60166000828254612a349190612db9565b9091555060009050612a44611a5a565b90506000612a52838361103b565b30600090815260026020526040902054909150612a6f9082611a7d565b3060009081526002602090815260408083209390935560079052205460ff1615612abe5730600090815260036020526040902054612aad9084611a7d565b306000908152600360205260409020555b505050565b600e54612ad090836122a0565b600e55601054612ae09082611a7d565b6010555050565b80358015158114612af757600080fd5b919050565b600060208284031215612b0e57600080fd5b81356107b681612ebe565b600060208284031215612b2b57600080fd5b81516107b681612ebe565b60008060408385031215612b4957600080fd5b8235612b5481612ebe565b91506020830135612b6481612ebe565b809150509250929050565b600080600060608486031215612b8457600080fd5b8335612b8f81612ebe565b92506020840135612b9f81612ebe565b929592945050506040919091013590565b60008060408385031215612bc357600080fd5b8235612bce81612ebe565b946020939093013593505050565b600060208284031215612bee57600080fd5b6107b682612ae7565b600060208284031215612c0957600080fd5b5035919050565b60008060408385031215612c2357600080fd5b82359150612c3360208401612ae7565b90509250929050565b600080600060608486031215612c5157600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612ca35781516001600160a01b031687529582019590820190600101612c7e565b509495945050505050565b848152608060208201526000612cc76080830186612c6a565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612d1057858101830151858201604001528201612cf4565b81811115612d22576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b85815284602082015260a060408201526000612d9c60a0830186612c6a565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612dcc57612dcc612e92565b500190565b600060ff821660ff84168060ff03821115612dee57612dee612e92565b019392505050565b600082612e1357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612e3257612e32612e92565b500290565b600060ff821660ff84168160ff0481118215151615612e5857612e58612e92565b029392505050565b600082821015612e7257612e72612e92565b500390565b6000600019821415612e8b57612e8b612e92565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612ed357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205dc35cc73c3873c5d3269afe42ddb4adb433f33e0721248801739fb74843dbe564736f6c63430008070033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80636e86ea8b11610123578063a457c2d7116100ab578063f2fde38b1161006f578063f2fde38b1461063d578063f5648a4f1461065d578063f5eb223d14610672578063fc155d1d14610687578063ffecf516146106a757600080fd5b8063a457c2d71461058c578063a9059cbb146105ac578063d3dbc861146105cc578063dd62ed3e146105e1578063ee40166e1461062757600080fd5b806380f0f48b116100f257806380f0f48b146104e657806385ecfd28146104fb57806388f820201461052b5780638da5cb5b1461056457806395d89b411461022a57600080fd5b80636e86ea8b1461048757806370a082311461049c578063715018a6146104bc5780637b7141e4146104d157600080fd5b8063437823ec116101a65780635bb988c9116101755780635bb988c9146104085780635c0fdd4c146104285780635fecd9261461043d578063620b4bfc1461045d5780636465de5d1461047257600080fd5b8063437823ec1461036f5780634549b0391461038f5780635342acb4146103af5780635932ead1146103e857600080fd5b806323b872dd116101ed57806323b872dd146102dc5780632d838119146102fc578063313ce5671461031c57806339509351146103385780633f97d3f41461035857600080fd5b806306fdde031461022a578063095ea7b31461026c57806318160ddd1461029c5780631fc851bd146102c657600080fd5b3661022557005b600080fd5b34801561023657600080fd5b50604080518082018252600a815269484f4e45594245454e5560b01b602082015290516102639190612ce3565b60405180910390f35b34801561027857600080fd5b5061028c610287366004612bb0565b6106c7565b6040519015158152602001610263565b3480156102a857600080fd5b506c7e37be2022c0914b26800000005b604051908152602001610263565b3480156102d257600080fd5b506102b8600c5481565b3480156102e857600080fd5b5061028c6102f7366004612b6f565b6106de565b34801561030857600080fd5b506102b8610317366004612bf7565b610747565b34801561032857600080fd5b5060405160128152602001610263565b34801561034457600080fd5b5061028c610353366004612bb0565b6107bd565b34801561036457600080fd5b5061036d6107f3565b005b34801561037b57600080fd5b5061036d61038a366004612afc565b610832565b34801561039b57600080fd5b506102b86103aa366004612c10565b610880565b3480156103bb57600080fd5b5061028c6103ca366004612afc565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156103f457600080fd5b5061036d610403366004612bdc565b610918565b34801561041457600080fd5b5061036d610423366004612afc565b610960565b34801561043457600080fd5b5061036d6109d3565b34801561044957600080fd5b5061036d610458366004612afc565b610a0c565b34801561046957600080fd5b5061036d610abf565b34801561047e57600080fd5b5061036d610af8565b34801561049357600080fd5b5061036d610b31565b3480156104a857600080fd5b506102b86104b7366004612afc565b610b70565b3480156104c857600080fd5b5061036d610bcf565b3480156104dd57600080fd5b5061036d610c43565b3480156104f257600080fd5b5061036d610c7c565b34801561050757600080fd5b5061028c610516366004612afc565b600a6020526000908152604090205460ff1681565b34801561053757600080fd5b5061028c610546366004612afc565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561057057600080fd5b506000546040516001600160a01b039091168152602001610263565b34801561059857600080fd5b5061028c6105a7366004612bb0565b610cbb565b3480156105b857600080fd5b5061028c6105c7366004612bb0565b610d0a565b3480156105d857600080fd5b5061036d610d17565b3480156105ed57600080fd5b506102b86105fc366004612b36565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561063357600080fd5b506102b8600b5481565b34801561064957600080fd5b5061036d610658366004612afc565b610d56565b34801561066957600080fd5b5061036d610e45565b34801561067e57600080fd5b5061036d610ebc565b34801561069357600080fd5b5061036d6106a2366004612bf7565b610efb565b3480156106b357600080fd5b5061036d6106c2366004612afc565b610f5a565b60006106d4338484611053565b5060015b92915050565b60006106eb848484611160565b61073d843361073885604051806060016040528060288152602001612ed7602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611a2e565b611053565b5060019392505050565b6000600e548211156107a05760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064015b60405180910390fd5b60006107aa611a5a565b90506107b68382611047565b9392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916106d49185906107389086611a7d565b6000546001600160a01b0316331461081d5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c01b1916600160c01b179055565b6000546001600160a01b0316331461085c5760405162461bcd60e51b815260040161079790612d38565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006c7e37be2022c0914b26800000008311156108df5760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c79000000006044820152606401610797565b816108fe5760006108ef84611a89565b509395506106d8945050505050565b600061090984611a89565b509295506106d8945050505050565b6000546001600160a01b031633146109425760405162461bcd60e51b815260040161079790612d38565b60198054911515600160b01b0260ff60b01b19909216919091179055565b6000546001600160a01b0316331461098a5760405162461bcd60e51b815260040161079790612d38565b6001600160a01b0381166000818152600a6020526040808220805460ff19169055517fccaa6e1cfd4cf9506fa856fdc8e0a00894b2621ece1d60ab36209873305944989190a250565b6000546001600160a01b031633146109fd5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60d01b19169055565b6000546001600160a01b03163314610a365760405162461bcd60e51b815260040161079790612d38565b6001600160a01b03811660009081526009602052604090205460ff16610a9e5760405162461bcd60e51b815260206004820152601860248201527f7573657220616c72656164792077686974656c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314610ae95760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a81b19169055565b6000546001600160a01b03163314610b225760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c81b19169055565b6000546001600160a01b03163314610b5b5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a81b1916600160a81b179055565b6001600160a01b03811660009081526007602052604081205460ff1615610bad57506001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600260205260409020546106d890610747565b6000546001600160a01b03163314610bf95760405162461bcd60e51b815260040161079790612d38565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c6d5760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c01b19169055565b6000546001600160a01b03163314610ca65760405162461bcd60e51b815260040161079790612d38565b6019805460ff60c81b1916600160c81b179055565b60006106d4338461073885604051806060016040528060258152602001612eff602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190611a2e565b60006106d4338484611160565b6000546001600160a01b03163314610d415760405162461bcd60e51b815260040161079790612d38565b6019805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610d805760405162461bcd60e51b815260040161079790612d38565b6001600160a01b038116610dea5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b6064820152608401610797565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e6f5760405162461bcd60e51b815260040161079790612d38565b604051600090339047908381818185875af1925050503d8060008114610eb1576040519150601f19603f3d011682016040523d82523d6000602084013e610eb6565b606091505b50505050565b6000546001600160a01b03163314610ee65760405162461bcd60e51b815260040161079790612d38565b6019805460ff60d01b1916600160d01b179055565b6000546001600160a01b03163314610f255760405162461bcd60e51b815260040161079790612d38565b6019805460ff60a01b1916600160a01b1790556016548111610f4a57610f4a81611ad8565b506019805460ff60a01b19169055565b6000546001600160a01b03163314610f845760405162461bcd60e51b815260040161079790612d38565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610fae57600080fd5b6001600160a01b03811660009081526009602052604090205460ff16156110175760405162461bcd60e51b815260206004820152601860248201527f7573657220616c726561647920626c61636b6c697374656400000000000000006044820152606401610797565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b60006107b68284612e18565b60006107b68284612df6565b6001600160a01b0383166110a95760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f20616464726573736044820152606401610797565b6001600160a01b0382166110ff5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f206164647265737300006044820152606401610797565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111c05760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b6064820152608401610797565b6001600160a01b0382166112165760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f2061646472657373006044820152606401610797565b600081116112785760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610797565b6001600160a01b03831660009081526009602052604090205460ff161561129e57600080fd5b6001600160a01b0383166000908152600a602052604090205460ff1615806112c8575042600c5411155b6113605760405162461bcd60e51b815260206004820152605960248201527f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60448201527f2073656c6c206368656170657220756e74696c2070656e616c74792074696d6560648201527f6672616d65206973206f7665722e2020444d2061204d6f642e00000000000000608482015260a401610797565b601954600160d01b900460ff161515600114801561139757506001600160a01b03821660009081526008602052604090205460ff16155b1561141157601154816113a984610b70565b6113b39190612db9565b11156114115760405162461bcd60e51b815260206004820152602760248201527f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c6574206044820152661c995858da195960ca1b6064820152608401610797565b601954600160c01b900460ff161515600114801561143c57506018546001600160a01b038481169116145b156114b5576b813f3978f8940984400000008111156114b55760405162461bcd60e51b815260206004820152602f60248201527f4c696d6974732061726520696e20706c6163652c20706c65617365206c6f776560448201526e1c88189d5e5a5b99c8185b5bdd5b9d608a1b6064820152608401610797565b601954600160c81b900460ff16151560011480156114e157506000546001600160a01b03838116911614155b80156114fb57506018546001600160a01b03848116911614155b1561150b57801561150b57600080fd5b6018546001600160a01b03848116911614801561153657506017546001600160a01b03838116911614155b801561155b57506001600160a01b03821660009081526006602052604090205460ff16155b80156115705750601954600160b01b900460ff165b156115cd57600f5481111561158457600080fd5b6001600160a01b03821660009081526005602052604090205442116115a857600080fd5b6115b342601e612db9565b6001600160a01b0383166000908152600560205260409020555b601954600160b81b900460ff1615156001141561180657601780546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b15801561164457600080fd5b505afa158015611658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167c9190612b19565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c457600080fd5b505afa1580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190612b19565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561174257600080fd5b505afa158015611756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177a9190612b19565b601880546001600160a01b0319166001600160a01b039290921691909117905543600b556117ab426203f480612db9565b600c55506018546001600160a01b039081166000908152600860205260408082208054600160ff1991821681179092556017549094168352912080549092161790556019805463ff00ffff60b81b19166201000160c01b1790555b6000546001600160a01b0384811691161480159061183257506018546001600160a01b03838116911614155b801561183f5750600b5443145b1561188e576001600160a01b0382166000818152600a6020526040808220805460ff19166001179055517fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e29190a25b600061189930610b70565b601954909150600160a01b900460ff161580156118c357506018546001600160a01b038481169116145b80156118d85750601954600160a81b900460ff165b156118ee57601a5481106118ee576118ee611c4b565b6001600160a01b03841660009081526006602052604090205460019060ff168061193057506001600160a01b03841660009081526006602052604090205460ff165b15611939575060005b6001600160a01b0385166000908152600a602052604090205460ff168015611962575042600c54115b15611a1b576012546119789060ff166005612e37565b6012805460ff191660ff928316179081905561199e91600160201b909104166005612e37565b6012805464ff000000001916600160201b60ff9384160217908190556119ce91600160301b909104166005612e37565b6012805466ff0000000000001916600160301b60ff938416021790819055611a0091600160401b909104166005612e37565b601260086101000a81548160ff021916908360ff1602179055505b611a2785858584611e56565b5050505050565b60008184841115611a525760405162461bcd60e51b81526004016107979190612ce3565b505050900390565b6000806000611a67612062565b9092509050611a768282611047565b9250505090565b60006107b68284612db9565b6000806000806000806000806000611aa08a61220e565b9250925092506000806000611abe8d8686611ab9611a5a565b612250565b919f909e50909c50959a5093985091965092945050505050565b6040805160028082526060820183526000926020830190803683375050601754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611b3d57600080fd5b505afa158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b759190612b19565b81600081518110611b8857611b88612ea8565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611bbc57611bbc612ea8565b6001600160a01b0392831660209182029290920101526017546001549082169163b6f9de95918591600091869116611bf64261012c611a7d565b6040518663ffffffff1660e01b8152600401611c159493929190612cae565b6000604051808303818588803b158015611c2e57600080fd5b505af1158015611c42573d6000803e3d6000fd5b50505050505050565b6019805460ff60a01b1916600160a01b17905560125462010000900460ff1615611c9257600154601354611c8c9130916001600160a01b0390911690611160565b60006013555b6000611c9d30610b70565b90506000601654601554601454611cb49190612db9565b611cbe9190612db9565b90506000611cd8600260155461104790919063ffffffff16565b90506000611ce684836122a0565b905047611cf2826122ac565b6000611cfe47836122a0565b90506000611d2186611d1b6014548561103b90919063ffffffff16565b90611047565b90506000611d2f83836122a0565b60006015819055601481905560195460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114611d8c576040519150601f19603f3d011682016040523d82523d6000602084013e611d91565b606091505b50509050611d9f878361241e565b60408051878152602081018490529081018890527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a14715611e3e576019546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611e33576040519150601f19603f3d011682016040523d82523d6000602084013e611e38565b606091505b50909150505b50506019805460ff60a01b1916905550505050505050565b80611e6357611e63612507565b6001600160a01b03841660009081526007602052604090205460ff168015611ea457506001600160a01b03831660009081526007602052604090205460ff16155b15611eb957611eb4848484612631565b611fb7565b6001600160a01b03841660009081526007602052604090205460ff16158015611efa57506001600160a01b03831660009081526007602052604090205460ff165b15611f0a57611eb4848484612757565b6001600160a01b03841660009081526007602052604090205460ff16158015611f4c57506001600160a01b03831660009081526007602052604090205460ff16155b15611f5c57611eb4848484612800565b6001600160a01b03841660009081526007602052604090205460ff168015611f9c57506001600160a01b03831660009081526007602052604090205460ff165b15611fac57611eb4848484612844565b611fb7848484612800565b80610eb6576012805468ff00000000000000001966ff000000ff00001964ff000000ff198316610100840460ff9081169182176501000000000060ff1990961692909217949094048416600160201b021790811662ff000019600160381b83048516600160301b0290811691909117630100000066ff00000000000019909316909117919091048316620100000217908116600160481b909104909116600160401b02179055610eb6565b600e5460009081906c7e37be2022c0914b2680000000825b600d548110156121c9578260026000600d848154811061209c5761209c612ea8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061210757508160036000600d84815481106120e0576120e0612ea8565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612127575050600e54936c7e37be2022c0914b26800000009350915050565b61216d60026000600d848154811061214157612141612ea8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906122a0565b92506121b560036000600d848154811061218957612189612ea8565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906122a0565b9150806121c181612e77565b91505061207a565b50600e546121e4906c7e37be2022c0914b2680000000611047565b821015612205575050600e54926c7e37be2022c0914b268000000092509050565b90939092509050565b60008060008061221d856128b7565b9050600061222a866128d2565b905060006122428261223c89866122a0565b906122a0565b979296509094509092505050565b600080808061225f888661103b565b9050600061226d888761103b565b9050600061227b888861103b565b9050600061228d8261223c86866122a0565b939b939a50919850919650505050505050565b60006107b68284612e60565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122e1576122e1612ea8565b6001600160a01b03928316602091820292909201810191909152601754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561233557600080fd5b505afa158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190612b19565b8160018151811061238057612380612ea8565b6001600160a01b0392831660209182029290920101526017546123a69130911684611053565b6017546001600160a01b031663791ac94783600084306123c84261012c611a7d565b6040518663ffffffff1660e01b81526004016123e8959493929190612d7d565b600060405180830381600087803b15801561240257600080fd5b505af1158015612416573d6000803e3d6000fd5b505050505050565b6017546124369030906001600160a01b031684611053565b6017546001546001600160a01b039182169163f305d719918491309187916000918291166124664261012c611a7d565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b1580156124ce57600080fd5b505af11580156124e2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a279190612c3c565b60125460ff161580156125245750601254600160201b900460ff16155b801561253a5750601254600160301b900460ff16155b801561254f575060125462010000900460ff16155b80156125655750601254600160401b900460ff16155b1561256c57565b6012805469ffff00ff00ff00ff00ff1967ff000000ff0000001965ff000000ff0019831665ff00000000001961010060ff8087169190910291821692909217600160201b61ff001990961690911794909404811665010000000000029390931790811663ff00000019600160301b83048516600160381b02908116919091176201000067ff000000000000001990931690911791909104831663010000000217908116600160401b909104909116600160481b0268ff00ff00ff00ff00ff1916179055565b60008060008060008061264387611a89565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061267590886122a0565b6001600160a01b038a166000908152600360209081526040808320939093556002905220546126a490876122a0565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546126d39086611a7d565b6001600160a01b0389166000908152600260205260409020556126f581612932565b6126ff8483612ac3565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161274491815260200190565b60405180910390a3505050505050505050565b60008060008060008061276987611a89565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061279b90876122a0565b6001600160a01b03808b16600090815260026020908152604080832094909455918b168152600390915220546127d19084611a7d565b6001600160a01b0389166000908152600360209081526040808320939093556002905220546126d39086611a7d565b60008060008060008061281287611a89565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506126a490876122a0565b60008060008060008061285687611a89565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061288890886122a0565b6001600160a01b038a1660009081526003602090815260408083209390935560029052205461279b90876122a0565b6012546000906106d890606490611d1b90859060ff1661103b565b6012546000906106d890606490611d1b9060ff600160401b8204811691600160201b810482169161291491620100008104821691600160301b90910416612dd1565b61291e9190612dd1565b6129289190612dd1565b859060ff1661103b565b60125460ff600160501b820481169161295391620100009091041683612e18565b61295d9190612df6565b6013600082825461296e9190612db9565b909155505060125460ff600160501b820481169161299591600160301b9091041683612e18565b61299f9190612df6565b601460008282546129b09190612db9565b909155505060125460ff600160501b82048116916129d791600160201b9091041683612e18565b6129e19190612df6565b601560008282546129f29190612db9565b909155505060125460ff600160501b8204811691612a1991600160401b9091041683612e18565b612a239190612df6565b60166000828254612a349190612db9565b9091555060009050612a44611a5a565b90506000612a52838361103b565b30600090815260026020526040902054909150612a6f9082611a7d565b3060009081526002602090815260408083209390935560079052205460ff1615612abe5730600090815260036020526040902054612aad9084611a7d565b306000908152600360205260409020555b505050565b600e54612ad090836122a0565b600e55601054612ae09082611a7d565b6010555050565b80358015158114612af757600080fd5b919050565b600060208284031215612b0e57600080fd5b81356107b681612ebe565b600060208284031215612b2b57600080fd5b81516107b681612ebe565b60008060408385031215612b4957600080fd5b8235612b5481612ebe565b91506020830135612b6481612ebe565b809150509250929050565b600080600060608486031215612b8457600080fd5b8335612b8f81612ebe565b92506020840135612b9f81612ebe565b929592945050506040919091013590565b60008060408385031215612bc357600080fd5b8235612bce81612ebe565b946020939093013593505050565b600060208284031215612bee57600080fd5b6107b682612ae7565b600060208284031215612c0957600080fd5b5035919050565b60008060408385031215612c2357600080fd5b82359150612c3360208401612ae7565b90509250929050565b600080600060608486031215612c5157600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612ca35781516001600160a01b031687529582019590820190600101612c7e565b509495945050505050565b848152608060208201526000612cc76080830186612c6a565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612d1057858101830151858201604001528201612cf4565b81811115612d22576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b85815284602082015260a060408201526000612d9c60a0830186612c6a565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612dcc57612dcc612e92565b500190565b600060ff821660ff84168060ff03821115612dee57612dee612e92565b019392505050565b600082612e1357634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612e3257612e32612e92565b500290565b600060ff821660ff84168160ff0481118215151615612e5857612e58612e92565b029392505050565b600082821015612e7257612e72612e92565b500390565b6000600019821415612e8b57612e8b612e92565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612ed357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205dc35cc73c3873c5d3269afe42ddb4adb433f33e0721248801739fb74843dbe564736f6c63430008070033

Deployed Bytecode Sourcemap

12889:21693:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16188:93;;;;;;;;;;-1:-1:-1;16267:6:0;;;;;;;;;;;-1:-1:-1;;;16267:6:0;;;;16188:93;;;;16267:6;16188:93;:::i;:::-;;;;;;;;17106:161;;;;;;;;;;-1:-1:-1;17106:161:0;;;;;:::i;:::-;;:::i;:::-;;;4765:14:1;;4758:22;4740:41;;4728:2;4713:18;17106:161:0;4600:187:1;16479:95:0;;;;;;;;;;-1:-1:-1;13729:13:0;16479:95;;;11509:25:1;;;11497:2;11482:18;16479:95:0;11363:177:1;13571:33:0;;;;;;;;;;;;;;;;17273:329;;;;;;;;;;-1:-1:-1;17273:329:0;;;;;:::i;:::-;;:::i;18844:241::-;;;;;;;;;;-1:-1:-1;18844:241:0;;;;;:::i;:::-;;:::i;16386:87::-;;;;;;;;;;-1:-1:-1;16386:87:0;;14076:2;12598:36:1;;12586:2;12571:18;16386:87:0;12456:184:1;17608:218:0;;;;;;;;;;-1:-1:-1;17608:218:0;;;;;:::i;:::-;;:::i;29834:78::-;;;;;;;;;;;;;:::i;:::-;;22761:111;;;;;;;;;;-1:-1:-1;22761:111:0;;;;;:::i;:::-;;:::i;18394:444::-;;;;;;;;;;-1:-1:-1;18394:444:0;;;;;:::i;:::-;;:::i;22878:124::-;;;;;;;;;;-1:-1:-1;22878:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;22967:27:0;22943:4;22967:27;;;:18;:27;;;;;;;;;22878:124;18285:103;;;;;;;;;;-1:-1:-1;18285:103:0;;;;;:::i;:::-;;:::i;27148:148::-;;;;;;;;;;-1:-1:-1;27148:148:0;;;;;:::i;:::-;;:::i;30094:86::-;;;;;;;;;;;;;:::i;26993:152::-;;;;;;;;;;-1:-1:-1;26993:152:0;;;;;:::i;:::-;;:::i;29735:93::-;;;;;;;;;;;;;:::i;30397:82::-;;;;;;;;;;;;;:::i;29638:91::-;;;;;;;;;;;;;:::i;16580:198::-;;;;;;;;;;-1:-1:-1;16580:198:0;;;;;:::i;:::-;;:::i;744:148::-;;;;;;;;;;;;;:::i;29918:80::-;;;;;;;;;;;;;:::i;30315:76::-;;;;;;;;;;;;;:::i;13480:43::-;;;;;;;;;;-1:-1:-1;13480:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18157:120;;;;;;;;;;-1:-1:-1;18157:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;18249:20:0;18225:4;18249:20;;;:11;:20;;;;;;;;;18157:120;516:87;;;;;;;;;;-1:-1:-1;562:7:0;589:6;516:87;;-1:-1:-1;;;;;589:6:0;;;3617:51:1;;3605:2;3590:18;516:87:0;3471:203:1;17832:319:0;;;;;;;;;;-1:-1:-1;17832:319:0;;;;;:::i;:::-;;:::i;16784:167::-;;;;;;;;;;-1:-1:-1;16784:167:0;;;;;:::i;:::-;;:::i;29556:76::-;;;;;;;;;;;;;:::i;16957:143::-;;;;;;;;;;-1:-1:-1;16957:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;17065:18:0;;;17038:7;17065:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16957:143;13527:37;;;;;;;;;;;;;;;;900:249;;;;;;;;;;-1:-1:-1;900:249:0;;;;;:::i;:::-;;:::i;30485:160::-;;;;;;;;;;;;;:::i;30004:84::-;;;;;;;;;;;;;:::i;26086:166::-;;;;;;;;;;-1:-1:-1;26086:166:0;;;;;:::i;:::-;;:::i;26770:220::-;;;;;;;;;;-1:-1:-1;26770:220:0;;;;;:::i;:::-;;:::i;17106:161::-;17181:4;17198:39;169:10;17221:7;17230:6;17198:8;:39::i;:::-;-1:-1:-1;17255:4:0;17106:161;;;;;:::o;17273:329::-;17369:4;17386:36;17396:6;17404:9;17415:6;17386:9;:36::i;:::-;17433:139;17442:6;169:10;17472:89;17510:6;17472:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17472:19:0;;;;;;:11;:19;;;;;;;;169:10;17472:33;;;;;;;;;;:37;:89::i;:::-;17433:8;:139::i;:::-;-1:-1:-1;17590:4:0;17273:329;;;;;:::o;18844:241::-;18911:7;18950;;18939;:18;;18931:61;;;;-1:-1:-1;;;18931:61:0;;8413:2:1;18931:61:0;;;8395:21:1;8452:2;8432:18;;;8425:30;8491:32;8471:18;;;8464:60;8541:18;;18931:61:0;;;;;;;;;19003:19;19025:10;:8;:10::i;:::-;19003:32;-1:-1:-1;19053:24:0;:7;19003:32;19053:11;:24::i;:::-;19046:31;18844:241;-1:-1:-1;;;18844:241:0:o;17608:218::-;169:10;17696:4;17745:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17745:34:0;;;;;;;;;;17696:4;;17713:83;;17736:7;;17745:50;;17784:10;17745:38;:50::i;29834:78::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;29887:10:::1;:17:::0;;-1:-1:-1;;;;29887:17:0::1;-1:-1:-1::0;;;29887:17:0::1;::::0;;29834:78::o;22761:111::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22830:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;22830:34:0::1;22860:4;22830:34;::::0;;22761:111::o;18394:444::-;18485:7;13729:13;18513:7;:18;;18505:59;;;;-1:-1:-1;;;18505:59:0;;6470:2:1;18505:59:0;;;6452:21:1;6509:2;6489:18;;;6482:30;6548;6528:18;;;6521:58;6596:18;;18505:59:0;6268:352:1;18505:59:0;18580:17;18575:256;;18615:15;18644:19;18655:7;18644:10;:19::i;:::-;-1:-1:-1;18614:49:0;;-1:-1:-1;18678:14:0;;-1:-1:-1;;;;;18678:14:0;18575:256;18728:23;18763:19;18774:7;18763:10;:19::i;:::-;-1:-1:-1;18725:57:0;;-1:-1:-1;18797:22:0;;-1:-1:-1;;;;;18797:22:0;18285:103;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;18357:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;18357:23:0::1;-1:-1:-1::0;;;;18357:23:0;;::::1;::::0;;;::::1;::::0;;18285:103::o;27148:148::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27222:20:0;::::1;27245:5;27222:20:::0;;;:11:::1;:20;::::0;;;;;:28;;-1:-1:-1;;27222:28:0::1;::::0;;27266:22;::::1;::::0;27245:5;27266:22:::1;27148:148:::0;:::o;30094:86::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;30152:12:::1;:20:::0;;-1:-1:-1;;;;30152:20:0::1;::::0;;30094:86::o;26993:152::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27063:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;;::::1;;27055:50;;;::::0;-1:-1:-1;;;27055:50:0;;9125:2:1;27055:50:0::1;::::0;::::1;9107:21:1::0;9164:2;9144:18;;;9137:30;9203:26;9183:18;;;9176:54;9247:18;;27055:50:0::1;8923:348:1::0;27055:50:0::1;-1:-1:-1::0;;;;;27116:13:0::1;27132:5;27116:13:::0;;;:6:::1;:13;::::0;;;;:21;;-1:-1:-1;;27116:21:0::1;::::0;;26993:152::o;29735:93::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;29791:21:::1;:29:::0;;-1:-1:-1;;;;29791:29:0::1;::::0;;29735:93::o;30397:82::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;30453:10:::1;:18:::0;;-1:-1:-1;;;;30453:18:0::1;::::0;;30397:82::o;29638:91::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;29693:21:::1;:28:::0;;-1:-1:-1;;;;29693:28:0::1;-1:-1:-1::0;;;29693:28:0::1;::::0;;29638:91::o;16580:198::-;-1:-1:-1;;;;;16670:20:0;;16646:7;16670:20;;;:11;:20;;;;;;;;16666:49;;;-1:-1:-1;;;;;;16699:16:0;;;;;:7;:16;;;;;;;16580:198::o;16666:49::-;-1:-1:-1;;;;;16753:16:0;;;;;;:7;:16;;;;;;16733:37;;:19;:37::i;744:148::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;851:1:::1;835:6:::0;;814:40:::1;::::0;-1:-1:-1;;;;;835:6:0;;::::1;::::0;814:40:::1;::::0;851:1;;814:40:::1;882:1;865:19:::0;;-1:-1:-1;;;;;;865:19:0::1;::::0;;744:148::o;29918:80::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;29972:10:::1;:18:::0;;-1:-1:-1;;;;29972:18:0::1;::::0;;29918:80::o;30315:76::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;30366:10:::1;:17:::0;;-1:-1:-1;;;;30366:17:0::1;-1:-1:-1::0;;;30366:17:0::1;::::0;;30315:76::o;17832:319::-;17925:4;17942:179;169:10;17992:7;18014:96;18053:15;18014:96;;;;;;;;;;;;;;;;;169:10;18014:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18014:34:0;;;;;;;;;;;;:38;:96::i;16784:167::-;16862:4;16879:42;169:10;16903:9;16914:6;16879:9;:42::i;29556:76::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;29606:11:::1;:18:::0;;-1:-1:-1;;;;29606:18:0::1;-1:-1:-1::0;;;29606:18:0::1;::::0;;29556:76::o;900:249::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;989:22:0;::::1;981:78;;;::::0;-1:-1:-1;;;981:78:0;;9478:2:1;981:78:0::1;::::0;::::1;9460:21:1::0;9517:2;9497:18;;;9490:30;9556:34;9536:18;;;9529:62;-1:-1:-1;;;9607:18:1;;;9600:41;9658:19;;981:78:0::1;9276:407:1::0;981:78:0::1;1096:6;::::0;;1075:38:::1;::::0;-1:-1:-1;;;;;1075:38:0;;::::1;::::0;1096:6;::::1;::::0;1075:38:::1;::::0;::::1;1124:6;:17:::0;;-1:-1:-1;;;;;;1124:17:0::1;-1:-1:-1::0;;;;;1124:17:0;;;::::1;::::0;;;::::1;::::0;;900:249::o;30485:160::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;30579:58:::1;::::0;30543:12:::1;::::0;30587:10:::1;::::0;30611:21:::1;::::0;30543:12;30579:58;30543:12;30579:58;30611:21;30587:10;30579:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;30485:160:0:o;30004:84::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;30061:12:::1;:19:::0;;-1:-1:-1;;;;30061:19:0::1;-1:-1:-1::0;;;30061:19:0::1;::::0;;30004:84::o;26086:166::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;15582:16:::1;:23:::0;;-1:-1:-1;;;;15582:23:0::1;-1:-1:-1::0;;;15582:23:0::1;::::0;;26179:13:::2;::::0;26169:23;::::2;26165:80;;26209:24;26226:6;26209:16;:24::i;:::-;-1:-1:-1::0;15628:16:0::1;:24:::0;;-1:-1:-1;;;;15628:24:0::1;::::0;;26086:166::o;26770:220::-;562:7;589:6;-1:-1:-1;;;;;589:6:0;169:10;651:23;643:73;;;;-1:-1:-1;;;643:73:0;;;;;;;:::i;:::-;26846:42:::1;-1:-1:-1::0;;;;;26837:51:0;::::1;;;26829:60;;;::::0;::::1;;-1:-1:-1::0;;;;;26909:13:0;::::1;;::::0;;;:6:::1;:13;::::0;;;;;::::1;;26908:14;26900:51;;;::::0;-1:-1:-1;;;26900:51:0;;8772:2:1;26900:51:0::1;::::0;::::1;8754:21:1::0;8811:2;8791:18;;;8784:30;8850:26;8830:18;;;8823:54;8894:18;;26900:51:0::1;8570:348:1::0;26900:51:0::1;-1:-1:-1::0;;;;;26962:13:0::1;;::::0;;;:6:::1;:13;::::0;;;;:20;;-1:-1:-1;;26962:20:0::1;26978:4;26962:20;::::0;;26770:220::o;2880:98::-;2938:7;2965:5;2969:1;2965;:5;:::i;2984:98::-;3042:7;3069:5;3073:1;3069;:5;:::i;23008:325::-;-1:-1:-1;;;;;23099:19:0;;23091:64;;;;-1:-1:-1;;;23091:64:0;;11204:2:1;23091:64:0;;;11186:21:1;;;11223:18;;;11216:30;11282:34;11262:18;;;11255:62;11334:18;;23091:64:0;11002:356:1;23091:64:0;-1:-1:-1;;;;;23174:21:0;;23166:64;;;;-1:-1:-1;;;23166:64:0;;6111:2:1;23166:64:0;;;6093:21:1;6150:2;6130:18;;;6123:30;6189:32;6169:18;;;6162:60;6239:18;;23166:64:0;5909:354:1;23166:64:0;-1:-1:-1;;;;;23241:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23293:32;;11509:25:1;;;23293:32:0;;11482:18:1;23293:32:0;;;;;;;23008:325;;;:::o;23339:2741::-;-1:-1:-1;;;;;23425:18:0;;23417:64;;;;-1:-1:-1;;;23417:64:0;;7243:2:1;23417:64:0;;;7225:21:1;7282:2;7262:18;;;7255:30;7321:34;7301:18;;;7294:62;-1:-1:-1;;;7372:18:1;;;7365:31;7413:19;;23417:64:0;7041:397:1;23417:64:0;-1:-1:-1;;;;;23500:16:0;;23492:60;;;;-1:-1:-1;;;23492:60:0;;7645:2:1;23492:60:0;;;7627:21:1;7684:2;7664:18;;;7657:30;7723:33;7703:18;;;7696:61;7774:18;;23492:60:0;7443:355:1;23492:60:0;23580:1;23571:6;:10;23563:64;;;;-1:-1:-1;;;23563:64:0;;10296:2:1;23563:64:0;;;10278:21:1;10335:2;10315:18;;;10308:30;10374:34;10354:18;;;10347:62;-1:-1:-1;;;10425:18:1;;;10418:39;10474:19;;23563:64:0;10094:405:1;23563:64:0;-1:-1:-1;;;;;23641:12:0;;;;;;:6;:12;;;;;;;;23640:13;23632:22;;;;;;-1:-1:-1;;;;;23668:17:0;;;;;;:11;:17;;;;;;;;23667:18;;:59;;;23711:15;23689:18;;:37;;23667:59;23659:161;;;;-1:-1:-1;;;23659:161:0;;10706:2:1;23659:161:0;;;10688:21:1;10745:2;10725:18;;;10718:30;10784:34;10764:18;;;10757:62;10855:34;10835:18;;;10828:62;10927:27;10906:19;;;10899:56;10972:19;;23659:161:0;10504:493:1;23659:161:0;23829:12;;-1:-1:-1;;;23829:12:0;;;;:20;;23845:4;23829:20;:47;;;;-1:-1:-1;;;;;;23855:21:0;;;;;;:17;:21;;;;;;;;23853:23;23829:47;23825:172;;;23927:14;;23917:6;23901:13;23911:2;23901:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;23893:92;;;;-1:-1:-1;;;23893:92:0;;8005:2:1;23893:92:0;;;7987:21:1;8044:2;8024:18;;;8017:30;8083:34;8063:18;;;8056:62;-1:-1:-1;;;8134:18:1;;;8127:37;8181:19;;23893:92:0;7803:403:1;23893:92:0;24011:10;;-1:-1:-1;;;24011:10:0;;;;:18;;24025:4;24011:18;:39;;;;-1:-1:-1;24041:9:0;;-1:-1:-1;;;;;24033:17:0;;;24041:9;;24033:17;24011:39;24007:147;;;24076:20;24066:6;:30;;24058:90;;;;-1:-1:-1;;;24058:90:0;;6827:2:1;24058:90:0;;;6809:21:1;6866:2;6846:18;;;6839:30;6905:34;6885:18;;;6878:62;-1:-1:-1;;;6956:18:1;;;6949:45;7011:19;;24058:90:0;6625:411:1;24058:90:0;24162:10;;-1:-1:-1;;;24162:10:0;;;;:18;;24176:4;24162:18;:35;;;;-1:-1:-1;562:7:0;589:6;-1:-1:-1;;;;;24184:13:0;;;589:6;;24184:13;;24162:35;:56;;;;-1:-1:-1;24209:9:0;;-1:-1:-1;;;;;24201:17:0;;;24209:9;;24201:17;;24162:56;24158:103;;;24234:20;;24226:29;;;;;;24283:9;;-1:-1:-1;;;;;24275:17:0;;;24283:9;;24275:17;:47;;;;-1:-1:-1;24310:11:0;;-1:-1:-1;;;;;24296:26:0;;;24310:11;;24296:26;;24275:47;:75;;;;-1:-1:-1;;;;;;24328:22:0;;;;;;:18;:22;;;;;;;;24326:24;24275:75;:94;;;;-1:-1:-1;24354:15:0;;-1:-1:-1;;;24354:15:0;;;;24275:94;24271:296;;;24408:12;;24398:6;:22;;24390:31;;;;;;-1:-1:-1;;;;;24448:16:0;;;;;;:12;:16;;;;;;24467:15;-1:-1:-1;24440:43:0;;;;;;24521:30;:15;24540:10;24521:30;:::i;:::-;-1:-1:-1;;;;;24502:16:0;;;;;;:12;:16;;;;;:49;24271:296;24580:11;;-1:-1:-1;;;24580:11:0;;;;:19;;24595:4;24580:19;24577:630;;;24727:11;:26;;-1:-1:-1;;;;;;24727:26:0;24669:42;24727:26;;;;;;24798:22;;;-1:-1:-1;;;24798:22:0;;;;24669:42;;24798:20;;:22;;;;;;;;;;;;;;24669:42;24798:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24780:49:0;;24838:4;24845:12;-1:-1:-1;;;;;24845:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24780:85;;-1:-1:-1;;;;;;24780:85:0;;;;;;;-1:-1:-1;;;;;3909:15:1;;;24780:85:0;;;3891:34:1;3961:15;;3941:18;;;3934:43;3826:18;;24780:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24768:9;:97;;-1:-1:-1;;;;;;24768:97:0;-1:-1:-1;;;;;24768:97:0;;;;;;;;;;24901:12;24880:18;:33;24949:26;:15;24967:8;24949:26;:::i;:::-;24928:18;:47;-1:-1:-1;25016:9:0;;-1:-1:-1;;;;;25016:9:0;;;24990:37;;;;:17;:37;;;;;;:44;;25030:4;-1:-1:-1;;24990:44:0;;;;;;;;25075:11;;;;;25049:39;;;;:46;;;;;;;;25110:10;:17;;-1:-1:-1;;;;25176:19:0;-1:-1:-1;;;25176:19:0;;;24577:630;562:7;589:6;-1:-1:-1;;;;;25214:15:0;;;589:6;;25214:15;;;;:34;;-1:-1:-1;25239:9:0;;-1:-1:-1;;;;;25233:15:0;;;25239:9;;25233:15;;25214:34;:72;;;;;25268:18;;25252:12;:34;25214:72;25211:145;;;-1:-1:-1;;;;;25293:15:0;;;;;;:11;:15;;;;;;:22;;-1:-1:-1;;25293:22:0;25311:4;25293:22;;;25335:15;;;25293;25335;25211:145;25366:28;25397:24;25415:4;25397:9;:24::i;:::-;25437:16;;25366:55;;-1:-1:-1;;;;25437:16:0;;;;25436:17;:36;;;;-1:-1:-1;25463:9:0;;-1:-1:-1;;;;;25457:15:0;;;25463:9;;25457:15;25436:36;:61;;;;-1:-1:-1;25476:21:0;;-1:-1:-1;;;25476:21:0;;;;25436:61;25432:188;;;25542:29;;25518:20;:53;25514:95;;25580:13;:11;:13::i;:::-;-1:-1:-1;;;;;25664:24:0;;25630:12;25664:24;;;:18;:24;;;;;;25645:4;;25664:24;;;:50;;-1:-1:-1;;;;;;25692:22:0;;;;;;:18;:22;;;;;;;;25664:50;25660:98;;;-1:-1:-1;25741:5:0;25660:98;-1:-1:-1;;;;;25765:17:0;;;;;;:11;:17;;;;;;;;:57;;;;;25807:15;25786:18;;:36;25765:57;25762:259;;;25856:7;;:11;;:7;;25866:1;25856:11;:::i;:::-;25846:7;:21;;-1:-1:-1;;25846:21:0;;;;;;;;;;25900:11;;-1:-1:-1;;;25900:7:0;;;;25910:1;25900:11;:::i;:::-;25890:7;:21;;-1:-1:-1;;25890:21:0;-1:-1:-1;;;25890:21:0;;;;;;;;;;25944:11;;-1:-1:-1;;;25944:7:0;;;;25954:1;25944:11;:::i;:::-;25934:7;:21;;-1:-1:-1;;25934:21:0;-1:-1:-1;;;25934:21:0;;;;;;;;;;25989:12;;-1:-1:-1;;;25989:8:0;;;;26000:1;25989:12;:::i;:::-;25978:8;;:23;;;;;;;;;;;;;;;;;;25762:259;26031:41;26046:4;26052:2;26056:6;26064:7;26031:14;:41::i;:::-;23406:2674;;23339:2741;;;:::o;3192:206::-;3278:7;3339:12;3331:6;;;;3323:29;;;;-1:-1:-1;;;3323:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3374:5:0;;;3192:206::o;20462:164::-;20504:7;20525:15;20542;20561:19;:17;:19::i;:::-;20524:56;;-1:-1:-1;20524:56:0;-1:-1:-1;20598:20:0;20524:56;;20598:11;:20::i;:::-;20591:27;;;;20462:164;:::o;2672:98::-;2730:7;2757:5;2761:1;2757;:5;:::i;19279:414::-;19338:7;19346;19354;19362;19370;19378;19399:23;19424:12;19438:18;19460:20;19472:7;19460:11;:20::i;:::-;19398:82;;;;;;19492:15;19509:23;19534:12;19550:50;19562:7;19571:4;19577:10;19589;:8;:10::i;:::-;19550:11;:50::i;:::-;19491:109;;;;-1:-1:-1;19491:109:0;;-1:-1:-1;19651:15:0;;-1:-1:-1;19668:4:0;;-1:-1:-1;19674:10:0;;-1:-1:-1;19279:414:0;;-1:-1:-1;;;;;19279:414:0:o;26258:509::-;26403:16;;;26417:1;26403:16;;;;;;;;26379:21;;26403:16;;;;;;;;-1:-1:-1;;26440:11:0;;:18;;;-1:-1:-1;;;26440:18:0;;;;26379:40;;-1:-1:-1;;;;;;26440:11:0;;;;:16;;-1:-1:-1;26440:18:0;;;;;;;;;;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26430:4;26435:1;26430:7;;;;;;;;:::i;:::-;;;;;;:28;-1:-1:-1;;;;;26430:28:0;;;-1:-1:-1;;;;;26430:28:0;;;;;26487:4;26469;26474:1;26469:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26469:23:0;;;:7;;;;;;;;;:23;26531:11;;;26689:4;26531:11;;;;:62;;26601:6;;26531:11;;26670:4;;26689;26724:24;:15;26744:3;26724:19;:24::i;:::-;26531:228;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26308:459;26258:509;:::o;27299:1291::-;15582:16;:23;;-1:-1:-1;;;;15582:23:0;-1:-1:-1;;;15582:23:0;;;27356:8:::1;::::0;;;::::1;15582:23:::0;27356:8:::1;:13:::0;27353:116:::1;;27411:4;::::0;27417:10:::1;::::0;27386:42:::1;::::0;27404:4:::1;::::0;-1:-1:-1;;;;;27411:4:0;;::::1;::::0;27386:9:::1;:42::i;:::-;27456:1;27443:10;:14:::0;27353:116:::1;27479:23;27505:24;27523:4;27505:9;:24::i;:::-;27479:50;;27540:25;27604:13;;27586:15;;27568;;:33;;;;:::i;:::-;:49;;;;:::i;:::-;27540:77;;27677:26;27706:22;27726:1;27706:15;;:19;;:22;;;;:::i;:::-;27677:51:::0;-1:-1:-1;27739:26:0::1;27768:39;:15:::0;27677:51;27768:19:::1;:39::i;:::-;27739:68:::0;-1:-1:-1;27846:21:0::1;27878:36;27739:68:::0;27878:16:::1;:36::i;:::-;27926:18;27947:44;:21;27973:17:::0;27947:25:::1;:44::i;:::-;27926:65;;28002:23;28028:54;28064:17;28028:31;28043:15;;28028:10;:14;;:31;;;;:::i;:::-;:35:::0;::::1;:54::i;:::-;28002:80:::0;-1:-1:-1;28093:23:0::1;28119:31;:10:::0;28002:80;28119:14:::1;:31::i;:::-;28179:1;28161:15;:19:::0;;;28191:15:::1;:19:::0;;;28247:9:::1;::::0;28239:51:::1;::::0;28093:57;;-1:-1:-1;28179:1:0;;-1:-1:-1;;;;;28247:9:0;;::::1;::::0;28270:15;;28179:1;28239:51;28179:1;28239:51;28270:15;28247:9;28239:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28221:69;;;28301:49;28314:18;28334:15;28301:12;:49::i;:::-;28366:71;::::0;;12334:25:1;;;12390:2;12375:18;;12368:34;;;12418:18;;;12411:34;;;28366:71:0::1;::::0;12322:2:1;12307:18;28366:71:0::1;;;;;;;28451:21;:34:::0;28448:135:::1;;28522:9;::::0;28514:57:::1;::::0;-1:-1:-1;;;;;28522:9:0;;::::1;::::0;28545:21:::1;::::0;28514:57:::1;::::0;;;28545:21;28522:9;28514:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;28501:70:0;;-1:-1:-1;;28448:135:0::1;-1:-1:-1::0;;15628:16:0;:24;;-1:-1:-1;;;;15628:24:0;;;-1:-1:-1;;;;;;;27299:1291:0:o;30651:788::-;30761:7;30756:28;;30770:14;:12;:14::i;:::-;-1:-1:-1;;;;;30799:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;30823:22:0;;;;;;:11;:22;;;;;;;;30822:23;30799:46;30795:597;;;30862:48;30884:6;30892:9;30903:6;30862:21;:48::i;:::-;30795:597;;;-1:-1:-1;;;;;30933:19:0;;;;;;:11;:19;;;;;;;;30932:20;:46;;;;-1:-1:-1;;;;;;30956:22:0;;;;;;:11;:22;;;;;;;;30932:46;30928:464;;;30995:46;31015:6;31023:9;31034:6;30995:19;:46::i;30928:464::-;-1:-1:-1;;;;;31064:19:0;;;;;;:11;:19;;;;;;;;31063:20;:47;;;;-1:-1:-1;;;;;;31088:22:0;;;;;;:11;:22;;;;;;;;31087:23;31063:47;31059:333;;;31127:44;31145:6;31153:9;31164:6;31127:17;:44::i;31059:333::-;-1:-1:-1;;;;;31193:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;31216:22:0;;;;;;:11;:22;;;;;;;;31193:45;31189:203;;;31255:48;31277:6;31285:9;31296:6;31255:21;:48::i;31189:203::-;31336:44;31354:6;31362:9;31373:6;31336:17;:44::i;:::-;31407:7;31402:29;;22583:15;;;-1:-1:-1;;;;;;22609:25:0;;22583:15;;;;;;;22609:25;;;22619:15;-1:-1:-1;;22573:25:0;;;;;;;22619:15;;;;;;-1:-1:-1;;;22609:25:0;;22681:28;;;-1:-1:-1;;;;;22655:15:0;;;;-1:-1:-1;;;22645:25:0;22681:28;;;;;;;22692:17;-1:-1:-1;;22645:25:0;;;;;;22692:17;;;;;;22681:28;;;22720:27;;;-1:-1:-1;;;22731:16:0;;;;;;-1:-1:-1;;;22720:27:0;;;;31416:15;22529:226;20632:556;20730:7;;20683;;;;13729:13;20683:7;20784:289;20808:9;:16;20804:20;;20784:289;;;20874:7;20850;:21;20858:9;20868:1;20858:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20858:12:0;20850:21;;;;;;;;;;;;;:31;;:66;;;20909:7;20885;:21;20893:9;20903:1;20893:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20893:12:0;20885:21;;;;;;;;;;;;;:31;20850:66;20846:97;;;-1:-1:-1;;20926:7:0;;;13729:13;;-1:-1:-1;20632:556:0;-1:-1:-1;;20632:556:0:o;20846:97::-;20968:34;20980:7;:21;20988:9;20998:1;20988:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20988:12:0;20980:21;;;;;;;;;;;;;20968:7;;:11;:34::i;:::-;20958:44;;21027:34;21039:7;:21;21047:9;21057:1;21047:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;21047:12:0;21039:21;;;;;;;;;;;;;21027:7;;:11;:34::i;:::-;21017:44;-1:-1:-1;20826:3:0;;;;:::i;:::-;;;;20784:289;;;-1:-1:-1;21097:7:0;;:20;;13729:13;21097:11;:20::i;:::-;21087:7;:30;21083:61;;;-1:-1:-1;;21127:7:0;;;13729:13;;-1:-1:-1;20632:556:0;-1:-1:-1;20632:556:0:o;21083:61::-;21163:7;;21172;;-1:-1:-1;20632:556:0;-1:-1:-1;20632:556:0:o;19699:327::-;19758:7;19766;19774;19794:12;19809:24;19825:7;19809:15;:24::i;:::-;19794:39;;19844:18;19865:30;19887:7;19865:21;:30::i;:::-;19844:51;-1:-1:-1;19906:23:0;19932:33;19844:51;19932:17;:7;19944:4;19932:11;:17::i;:::-;:21;;:33::i;:::-;19906:59;20001:4;;-1:-1:-1;20007:10:0;;-1:-1:-1;19699:327:0;;-1:-1:-1;;;19699:327:0:o;20032:424::-;20144:7;;;;20198:24;:7;20210:11;20198;:24::i;:::-;20180:42;-1:-1:-1;20233:12:0;20248:21;:4;20257:11;20248:8;:21::i;:::-;20233:36;-1:-1:-1;20280:18:0;20301:27;:10;20316:11;20301:14;:27::i;:::-;20280:48;-1:-1:-1;20339:23:0;20365:33;20280:48;20365:17;:7;20377:4;20365:11;:17::i;:33::-;20417:7;;;;-1:-1:-1;20443:4:0;;-1:-1:-1;20032:424:0;;-1:-1:-1;;;;;;;20032:424:0:o;2776:98::-;2834:7;2861:5;2865:1;2861;:5;:::i;28598:496::-;28688:16;;;28702:1;28688:16;;;;;;;;28664:21;;28688:16;;;;;;;;;;-1:-1:-1;28688:16:0;28664:40;;28733:4;28715;28720:1;28715:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28715:23:0;;;:7;;;;;;;;;;:23;;;;28759:11;;:18;;;-1:-1:-1;;;28759:18:0;;;;:11;;;;;:16;;:18;;;;;28715:7;;28759:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28749:4;28754:1;28749:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28749:28:0;;;:7;;;;;;;;;:28;28820:11;;28788:58;;28805:4;;28820:11;28834;28788:8;:58::i;:::-;28857:11;;-1:-1:-1;;;;;28857:11:0;:62;28934:11;28857;29004:4;29031;29051:24;:15;29071:3;29051:19;:24::i;:::-;28857:229;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28653:441;28598:496;:::o;29100:412::-;29213:11;;29181:58;;29198:4;;-1:-1:-1;;;;;29213:11:0;29227;29181:8;:58::i;:::-;29250:11;;;29450:4;-1:-1:-1;;;;;29250:11:0;;;;:27;;29285:9;;29318:4;;29338:11;;29250;;;;29450:4;29469:24;:15;29489:3;29469:19;:24::i;:::-;29250:254;;;;;;-1:-1:-1;;;;;;29250:254:0;;;-1:-1:-1;;;;;4347:15:1;;;29250:254:0;;;4329:34:1;4379:18;;;4372:34;;;;4422:18;;;4415:34;;;;4465:18;;;4458:34;;;;4529:15;;;4508:19;;;4501:44;4561:19;;;4554:35;;;;4263:19;;29250:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22081:442::-;22128:7;;;;:12;:28;;;;-1:-1:-1;22144:7:0;;-1:-1:-1;;;22144:7:0;;;;:12;22128:28;:44;;;;-1:-1:-1;22160:7:0;;-1:-1:-1;;;22160:7:0;;;;:12;22128:44;:61;;;;-1:-1:-1;22176:8:0;;;;;;;:13;22128:61;:78;;;;-1:-1:-1;22193:8:0;;-1:-1:-1;;;22193:8:0;;;;:13;22128:78;22124:91;;;22081:442::o;22124:91::-;22245:7;;;-1:-1:-1;;;;;;22263:25:0;;-1:-1:-1;;22245:7:0;;;;;22227:25;;;;22263;;;;;;;-1:-1:-1;;;;;22227:25:0;;;;;;22281:7;;;;;;22263:25;;;;;;22335:28;;;-1:-1:-1;;;;;22317:7:0;;;;-1:-1:-1;;;22299:25:0;22335:28;;;;;;;22355:8;-1:-1:-1;;22299:25:0;;;;;;22355:8;;;;;;22335:28;;;22503:12;;;-1:-1:-1;;;22393:8:0;;;;;;-1:-1:-1;;;22374:27:0;-1:-1:-1;;22503:12:0;;;;22081:442::o;32708:650::-;32823:15;32853:23;32891:12;32918:23;32956:12;32983:18;33015:19;33026:7;33015:10;:19::i;:::-;-1:-1:-1;;;;;33063:15:0;;;;;;:7;:15;;;;;;32808:226;;-1:-1:-1;32808:226:0;;-1:-1:-1;32808:226:0;;-1:-1:-1;32808:226:0;-1:-1:-1;32808:226:0;-1:-1:-1;32808:226:0;-1:-1:-1;33063:28:0;;33083:7;33063:19;:28::i;:::-;-1:-1:-1;;;;;33045:15:0;;;;;;:7;:15;;;;;;;;:46;;;;33120:7;:15;;;;:28;;33140:7;33120:19;:28::i;:::-;-1:-1:-1;;;;;33102:15:0;;;;;;;:7;:15;;;;;;:46;;;;33180:18;;;;;;;:39;;33203:15;33180:22;:39::i;:::-;-1:-1:-1;;;;;33159:18:0;;;;;;:7;:18;;;;;:60;33230:26;33245:10;33230:14;:26::i;:::-;33267:23;33279:4;33285;33267:11;:23::i;:::-;33323:9;-1:-1:-1;;;;;33306:44:0;33315:6;-1:-1:-1;;;;;33306:44:0;;33334:15;33306:44;;;;11509:25:1;;11497:2;11482:18;;11363:177;33306:44:0;;;;;;;;32797:561;;;;;;32708:650;;;:::o;32040:662::-;32153:15;32183:23;32221:12;32248:23;32286:12;32313:18;32345:19;32356:7;32345:10;:19::i;:::-;-1:-1:-1;;;;;32393:15:0;;;;;;:7;:15;;;;;;32138:226;;-1:-1:-1;32138:226:0;;-1:-1:-1;32138:226:0;;-1:-1:-1;32138:226:0;-1:-1:-1;32138:226:0;-1:-1:-1;32138:226:0;-1:-1:-1;32393:28:0;;32138:226;32393:19;:28::i;:::-;-1:-1:-1;;;;;32375:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;32453:18;;;;;:7;:18;;;;;:39;;32476:15;32453:22;:39::i;:::-;-1:-1:-1;;;;;32432:18:0;;;;;;:7;:18;;;;;;;;:60;;;;32524:7;:18;;;;:39;;32547:15;32524:22;:39::i;31445:589::-;31556:15;31586:23;31624:12;31651:23;31689:12;31716:18;31748:19;31759:7;31748:10;:19::i;:::-;-1:-1:-1;;;;;31796:15:0;;;;;;:7;:15;;;;;;31541:226;;-1:-1:-1;31541:226:0;;-1:-1:-1;31541:226:0;;-1:-1:-1;31541:226:0;-1:-1:-1;31541:226:0;-1:-1:-1;31541:226:0;-1:-1:-1;31796:28:0;;31541:226;31796:19;:28::i;33364:721::-;33479:15;33509:23;33547:12;33574:23;33612:12;33639:18;33671:19;33682:7;33671:10;:19::i;:::-;-1:-1:-1;;;;;33719:15:0;;;;;;:7;:15;;;;;;33464:226;;-1:-1:-1;33464:226:0;;-1:-1:-1;33464:226:0;;-1:-1:-1;33464:226:0;-1:-1:-1;33464:226:0;-1:-1:-1;33464:226:0;-1:-1:-1;33719:28:0;;33739:7;33719:19;:28::i;:::-;-1:-1:-1;;;;;33701:15:0;;;;;;:7;:15;;;;;;;;:46;;;;33776:7;:15;;;;:28;;33796:7;33776:19;:28::i;21771:130::-;21874:7;;21835;;21862:31;;21887:5;;21862:20;;:7;;21874;;21862:11;:20::i;21907:168::-;22047:8;;21977:7;;22004:63;;22061:5;;22004:52;;22047:8;-1:-1:-1;;;22047:8:0;;;;;-1:-1:-1;;;22037:7:0;;;;;22016:18;;22026:8;;;;;;-1:-1:-1;;;22016:7:0;;;;:18;:::i;:::-;:28;;;;:::i;:::-;:39;;;;:::i;:::-;22004:7;;:52;;:11;:52::i;21194:571::-;21295:7;;;-1:-1:-1;;;21295:7:0;;;;;21271:21;;21284:8;;;;;21271:10;:21;:::i;:::-;:31;;;;:::i;:::-;21257:10;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;21355:7:0;;;-1:-1:-1;;;21355:7:0;;;;;21332:20;;-1:-1:-1;;;21345:7:0;;;;21332:10;:20;:::i;:::-;:30;;;;:::i;:::-;21313:15;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21409:7:0;;;-1:-1:-1;;;21409:7:0;;;;;21386:20;;-1:-1:-1;;;21399:7:0;;;;21386:10;:20;:::i;:::-;:30;;;;:::i;:::-;21367:15;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21468:7:0;;;-1:-1:-1;;;21468:7:0;;;;;21444:21;;-1:-1:-1;;;21457:8:0;;;;21444:10;:21;:::i;:::-;:31;;;;:::i;:::-;21427:13;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;21486:19:0;;-1:-1:-1;21508:10:0;:8;:10::i;:::-;21486:32;-1:-1:-1;21529:18:0;21550:27;:10;21486:32;21550:14;:27::i;:::-;21629:4;21613:22;;;;:7;:22;;;;;;21529:48;;-1:-1:-1;21613:38:0;;21529:48;21613:26;:38::i;:::-;21604:4;21588:22;;;;:7;:22;;;;;;;;:63;;;;21666:11;:26;;;;;;21662:95;;;21735:4;21719:22;;;;:7;:22;;;;;;:38;;21746:10;21719:26;:38::i;:::-;21710:4;21694:22;;;;:7;:22;;;;;:63;21662:95;21246:519;;21194:571;:::o;19126:147::-;19204:7;;:17;;19216:4;19204:11;:17::i;:::-;19194:7;:27;19245:10;;:20;;19260:4;19245:14;:20::i;:::-;19232:10;:33;-1:-1:-1;;19126:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1609:6;1617;1670:2;1658:9;1649:7;1645:23;1641:32;1638:52;;;1686:1;1683;1676:12;1638:52;1725:9;1712:23;1744:31;1769:5;1744:31;:::i;:::-;1794:5;1846:2;1831:18;;;;1818:32;;-1:-1:-1;;;1541:315:1:o;1861:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2009:26;2025:9;2009:26;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:1;;2046:180;-1:-1:-1;2046:180:1:o;2231:248::-;2296:6;2304;2357:2;2345:9;2336:7;2332:23;2328:32;2325:52;;;2373:1;2370;2363:12;2325:52;2409:9;2396:23;2386:33;;2438:35;2469:2;2458:9;2454:18;2438:35;:::i;:::-;2428:45;;2231:248;;;;;:::o;2484:306::-;2572:6;2580;2588;2641:2;2629:9;2620:7;2616:23;2612:32;2609:52;;;2657:1;2654;2647:12;2609:52;2686:9;2680:16;2670:26;;2736:2;2725:9;2721:18;2715:25;2705:35;;2780:2;2769:9;2765:18;2759:25;2749:35;;2484:306;;;;;:::o;2795:461::-;2848:3;2886:5;2880:12;2913:6;2908:3;2901:19;2939:4;2968:2;2963:3;2959:12;2952:19;;3005:2;2998:5;2994:14;3026:1;3036:195;3050:6;3047:1;3044:13;3036:195;;;3115:13;;-1:-1:-1;;;;;3111:39:1;3099:52;;3171:12;;;;3206:15;;;;3147:1;3065:9;3036:195;;;-1:-1:-1;3247:3:1;;2795:461;-1:-1:-1;;;;;2795:461:1:o;4792:510::-;5063:6;5052:9;5045:25;5106:3;5101:2;5090:9;5086:18;5079:31;5026:4;5127:57;5179:3;5168:9;5164:19;5156:6;5127:57;:::i;:::-;-1:-1:-1;;;;;5220:32:1;;;;5215:2;5200:18;;5193:60;-1:-1:-1;5284:2:1;5269:18;5262:34;5119:65;4792:510;-1:-1:-1;;4792:510:1:o;5307:597::-;5419:4;5448:2;5477;5466:9;5459:21;5509:6;5503:13;5552:6;5547:2;5536:9;5532:18;5525:34;5577:1;5587:140;5601:6;5598:1;5595:13;5587:140;;;5696:14;;;5692:23;;5686:30;5662:17;;;5681:2;5658:26;5651:66;5616:10;;5587:140;;;5745:6;5742:1;5739:13;5736:91;;;5815:1;5810:2;5801:6;5790:9;5786:22;5782:31;5775:42;5736:91;-1:-1:-1;5888:2:1;5867:15;-1:-1:-1;;5863:29:1;5848:45;;;;5895:2;5844:54;;5307:597;-1:-1:-1;;;5307:597:1:o;9688:401::-;9890:2;9872:21;;;9929:2;9909:18;;;9902:30;9968:34;9963:2;9948:18;;9941:62;-1:-1:-1;;;10034:2:1;10019:18;;10012:35;10079:3;10064:19;;9688:401::o;11545:582::-;11844:6;11833:9;11826:25;11887:6;11882:2;11871:9;11867:18;11860:34;11930:3;11925:2;11914:9;11910:18;11903:31;11807:4;11951:57;12003:3;11992:9;11988:19;11980:6;11951:57;:::i;:::-;-1:-1:-1;;;;;12044:32:1;;;;12039:2;12024:18;;12017:60;-1:-1:-1;12108:3:1;12093:19;12086:35;11943:65;11545:582;-1:-1:-1;;;11545:582:1:o;12645:128::-;12685:3;12716:1;12712:6;12709:1;12706:13;12703:39;;;12722:18;;:::i;:::-;-1:-1:-1;12758:9:1;;12645:128::o;12778:204::-;12816:3;12852:4;12849:1;12845:12;12884:4;12881:1;12877:12;12919:3;12913:4;12909:14;12904:3;12901:23;12898:49;;;12927:18;;:::i;:::-;12963:13;;12778:204;-1:-1:-1;;;12778:204:1:o;12987:217::-;13027:1;13053;13043:132;;13097:10;13092:3;13088:20;13085:1;13078:31;13132:4;13129:1;13122:15;13160:4;13157:1;13150:15;13043:132;-1:-1:-1;13189:9:1;;12987:217::o;13209:168::-;13249:7;13315:1;13311;13307:6;13303:14;13300:1;13297:21;13292:1;13285:9;13278:17;13274:45;13271:71;;;13322:18;;:::i;:::-;-1:-1:-1;13362:9:1;;13209:168::o;13382:238::-;13420:7;13460:4;13457:1;13453:12;13492:4;13489:1;13485:12;13552:3;13546:4;13542:14;13537:3;13534:23;13527:3;13520:11;13513:19;13509:49;13506:75;;;13561:18;;:::i;:::-;13601:13;;13382:238;-1:-1:-1;;;13382:238:1:o;13625:125::-;13665:4;13693:1;13690;13687:8;13684:34;;;13698:18;;:::i;:::-;-1:-1:-1;13735:9:1;;13625:125::o;13755:135::-;13794:3;-1:-1:-1;;13815:17:1;;13812:43;;;13835:18;;:::i;:::-;-1:-1:-1;13882:1:1;13871:13;;13755:135::o;13895:127::-;13956:10;13951:3;13947:20;13944:1;13937:31;13987:4;13984:1;13977:15;14011:4;14008:1;14001:15;14027:127;14088:10;14083:3;14079:20;14076:1;14069:31;14119:4;14116:1;14109:15;14143:4;14140:1;14133:15;14291:131;-1:-1:-1;;;;;14366:31:1;;14356:42;;14346:70;;14412:1;14409;14402:12;14346:70;14291:131;:::o

Swarm Source

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