ETH Price: $3,350.38 (-0.92%)
Gas: 6.89 Gwei

Token

SHORYUKEN INU (SHRYUKN)
 

Overview

Max Total Supply

1,000,000,000,000,000,000 SHRYUKN

Holders

321

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
13,241,267,047,022,408.603483683 SHRYUKN

Value
$0.00
0x6a64f041ff800449bdb54966c230bff7b6f6400e
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:
shoryukeninu

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 2021-11-19
*/

// File: contracts/shoryukeninu.sol


pragma solidity ^0.8.7;

/*
FAIR LAUNCH
5% TOKENS BACK TO HOLDERS
2% TO MARKETING
7% TOTAL TAX
WEBSITE: https://shoryukeninu.com/
TELEGRAM: https://t.me/ShoryukenInu
TWITTER: https://twitter.com/ShoryukenInu
**/

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 shoryukeninu 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;
    address[] private _excluded;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e18 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _maxTxAmount = _tTotal;
    uint256 private _tFeeTotal;
    string private constant _name = "SHORYUKEN INU";
    string private constant _symbol = "SHRYUKN";
    uint8 private constant _decimals = 9;
    uint8 private _refTax = 5; // Fee for Reflection
    uint8 private _previousRefTax = _refTax;
    uint8 private _liqTax = 0; // Fee for Liquidity
    uint8 private _previousLiqTax = _liqTax;
    uint8 private _devTax = 2; // Fee to marketing/charity wallet
    uint8 private _previousDevTax = _devTax;
    uint8 private _TotalPercent = 7;
    IUniswapV2Router02 private pcsV2Router;
    address private pcsV2Pair;
    address payable private feeWallet;
    bool inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = true;
    bool private coolDownEnabled = true;
    bool private _firstTrans = true;
    bool private _limitBuys = false;
    uint256 private numTokensSellToAddToLiquidity;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);
    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        feeWallet = payable(0x489764379f3a3366286Fe97a9b33ba029ef2dA4d);
        numTokensSellToAddToLiquidity = _tTotal.mul(1).div(1000);
        //_isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    function name() public pure override returns (string memory) {
        return _name;
    }
    function symbol() public pure override returns (string memory) {
        return _symbol;
    }
    function decimals() public pure override returns (uint8) {
        return _decimals;
    }
    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 deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount, , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
    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 {
        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(_liqTax + _devTax).div(10**2);
    }
    function removeAllFee() private {
        if (_refTax == 0 && _liqTax == 0 && _devTax == 0) return;

        _previousRefTax = _refTax;
        _previousLiqTax = _liqTax;
        _previousDevTax = _devTax;

        _refTax = 0;
        _liqTax = 0;
        _devTax = 0;
    }
    function restoreAllFee() private {
        _refTax = _previousRefTax;
        _liqTax = _previousLiqTax;
        _devTax = _previousDevTax;
    }
    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");
        if (_limitBuys == true) {
            require(amount <= 5000000000000000 * 10**9);
        }
        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());
            _limitBuys = true;
            _firstTrans = false;
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        if (!inSwapAndLiquify && to == pcsV2Pair && swapAndLiquifyEnabled) {
            if (contractTokenBalance >= numTokensSellToAddToLiquidity) {
                swapAndLiquify(contractTokenBalance);
            }
        }
        bool takeFee = true;
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        _tokenTransfer(from, to, amount, takeFee);
    }
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 spentAmount = 0;
        uint256 totSpentAmount = 0;
        if (_devTax != 0) {
            spentAmount = contractTokenBalance.mul(50).div(100);
            swapTokensForETH(spentAmount);
            sendTax(address(this).balance);
            totSpentAmount = totSpentAmount + spentAmount;
        }
    }
    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 sendTax(uint256 amount) private {
        feeWallet.transfer(amount);
        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)
        );
    }
    function Initiate() external onlyOwner {
        _firstTrans = true;
    }
    function SwapEnable() external onlyOwner {
        swapAndLiquifyEnabled = true;
    }
    function SwapDisable() external onlyOwner {
        swapAndLiquifyEnabled = false;
    }
    function LimitBuysOn() external onlyOwner {
        _limitBuys = true;
    }
    function LimitBuysOff() external onlyOwner {
        _limitBuys = false;
    }
    function setTotalPercent(
        uint8 TotalPercent
    ) external onlyOwner {
        _TotalPercent = TotalPercent;
    }
    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":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":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"},{"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":"SwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapEnable","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":[],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"TotalPercent","type":"uint8"}],"name":"setTotalPercent","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":[{"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"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b03191661dead179055620000326b033b2e3c9fd0803ce8000000600019620002aa565b620000409060001962000290565b6009556b033b2e3c9fd0803ce8000000600a55600c805461ffff60201b1963ffffffff19821660ff6201000061050562ffffff1990951685170481166301000000029190911790921790811664010000000060ff60201b1992909216640200000000908117929092049092166501000000000002919091171760ff60301b19166607000000000000179055600e80546201010160a81b63ffffffff60a81b19909116179055348015620000f257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060095433600090815260026020908152604090912091909155600e80546001600160a01b03191673489764379f3a3366286fe97a9b33ba029ef2da4d179055620001b5906103e890620001a1906b033b2e3c9fd0803ce80000009060019062000c5d6200023a821b17901c565b6200024f60201b62000c691790919060201c565b600f55306000908152600660205260409020805460ff19166001179055620001da3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce80000006040516200022c91815260200190565b60405180910390a3620002ed565b60006200024882846200026e565b9392505050565b6000620002488284600082620002695762000269620002d7565b500490565b60008160001904831182151516156200028b576200028b620002c1565b500290565b600082821015620002a557620002a5620002c1565b500390565b600082620002bc57620002bc620002d7565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61218a80620002fd6000396000f3fe6080604052600436106101a05760003560e01c80635932ead1116100ec57806395d89b411161008a578063b8578bfd11610064578063b8578bfd146104e9578063d3dbc861146104fe578063dd62ed3e14610513578063f2fde38b1461055957600080fd5b806395d89b4114610479578063a457c2d7146104a9578063a9059cbb146104c957600080fd5b80637b7141e4116100c65780637b7141e4146103ee57806388f82020146104035780638da5cb5b1461043c5780638dd45fb21461046457600080fd5b80635932ead11461039957806370a08231146103b9578063715018a6146103d957600080fd5b8063313ce567116101595780633f97d3f4116101335780633f97d3f41461030b578063437823ec146103205780634549b039146103405780635342acb41461036057600080fd5b8063313ce567146102af57806339509351146102cb5780633bd5d173146102eb57600080fd5b806302a7153f146101ac57806306fdde03146101ce578063095ea7b31461021657806318160ddd1461024657806323b872dd1461026f5780632d8381191461028f57600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101cc6101c7366004611ee5565b610579565b005b3480156101da57600080fd5b5060408051808201909152600d81526c53484f5259554b454e20494e5560981b60208201525b60405161020d9190611f08565b60405180910390f35b34801561022257600080fd5b50610236610231366004611e59565b6105d2565b604051901515815260200161020d565b34801561025257600080fd5b506b033b2e3c9fd0803ce80000005b60405190815260200161020d565b34801561027b57600080fd5b5061023661028a366004611e18565b6105e9565b34801561029b57600080fd5b506102616102aa366004611ea0565b610652565b3480156102bb57600080fd5b506040516009815260200161020d565b3480156102d757600080fd5b506102366102e6366004611e59565b6106c3565b3480156102f757600080fd5b506101cc610306366004611ea0565b6106f9565b34801561031757600080fd5b506101cc6107e3565b34801561032c57600080fd5b506101cc61033b366004611da5565b610822565b34801561034c57600080fd5b5061026161035b366004611eb9565b610870565b34801561036c57600080fd5b5061023661037b366004611da5565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156103a557600080fd5b506101cc6103b4366004611e85565b610907565b3480156103c557600080fd5b506102616103d4366004611da5565b61094f565b3480156103e557600080fd5b506101cc6109ae565b3480156103fa57600080fd5b506101cc610a22565b34801561040f57600080fd5b5061023661041e366004611da5565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561044857600080fd5b506000546040516001600160a01b03909116815260200161020d565b34801561047057600080fd5b506101cc610a5b565b34801561048557600080fd5b5060408051808201909152600781526629a4292caaa5a760c91b6020820152610200565b3480156104b557600080fd5b506102366104c4366004611e59565b610a94565b3480156104d557600080fd5b506102366104e4366004611e59565b610ae3565b3480156104f557600080fd5b506101cc610af0565b34801561050a57600080fd5b506101cc610b2f565b34801561051f57600080fd5b5061026161052e366004611ddf565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561056557600080fd5b506101cc610574366004611da5565b610b6e565b6000546001600160a01b031633146105ac5760405162461bcd60e51b81526004016105a390611f5d565b60405180910390fd5b600c805460ff90921666010000000000000266ff00000000000019909216919091179055565b60006105df338484610c75565b5060015b92915050565b60006105f6848484610d82565b610648843361064385604051806060016040528060288152602001612108602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611258565b610c75565b5060019392505050565b60006009548211156106a65760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064016105a3565b60006106b0611284565b90506106bc8382610c69565b9392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105df91859061064390866112a7565b3360008181526007602052604090205460ff161561076e5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016105a3565b6000610779836112b3565b505050506001600160a01b0384166000908152600260205260409020549192506107a591905082611302565b6001600160a01b0383166000908152600260205260409020556009546107cb9082611302565b600955600b546107db90846112a7565b600b55505050565b6000546001600160a01b0316331461080d5760405162461bcd60e51b81526004016105a390611f5d565b600e805460ff60c01b1916600160c01b179055565b6000546001600160a01b0316331461084c5760405162461bcd60e51b81526004016105a390611f5d565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006b033b2e3c9fd0803ce80000008311156108ce5760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c790000000060448201526064016105a3565b816108ed5760006108de846112b3565b509395506105e3945050505050565b60006108f8846112b3565b509295506105e3945050505050565b6000546001600160a01b031633146109315760405162461bcd60e51b81526004016105a390611f5d565b600e8054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff161561098c57506001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600260205260409020546105e390610652565b6000546001600160a01b031633146109d85760405162461bcd60e51b81526004016105a390611f5d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a4c5760405162461bcd60e51b81526004016105a390611f5d565b600e805460ff60c01b19169055565b6000546001600160a01b03163314610a855760405162461bcd60e51b81526004016105a390611f5d565b600e805460ff60a81b19169055565b60006105df338461064385604051806060016040528060258152602001612130602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190611258565b60006105df338484610d82565b6000546001600160a01b03163314610b1a5760405162461bcd60e51b81526004016105a390611f5d565b600e805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610b595760405162461bcd60e51b81526004016105a390611f5d565b600e805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610b985760405162461bcd60e51b81526004016105a390611f5d565b6001600160a01b038116610c025760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016105a3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006106bc8284612072565b60006106bc8284612050565b6001600160a01b038316610ccb5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f206164647265737360448201526064016105a3565b6001600160a01b038216610d215760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f2061646472657373000060448201526064016105a3565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610de25760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b60648201526084016105a3565b6001600160a01b038216610e385760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f20616464726573730060448201526064016105a3565b60008111610e9a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a3565b600e54600160c01b900460ff16151560011415610ec9576a0422ca8b0a00a425000000811115610ec957600080fd5b600d546001600160a01b038481169116148015610efb5750600c546001600160a01b03838116600160381b9092041614155b8015610f2057506001600160a01b03821660009081526006602052604090205460ff16155b8015610f355750600e54600160b01b900460ff165b15610f9257600a54811115610f4957600080fd5b6001600160a01b0382166000908152600560205260409020544211610f6d57600080fd5b610f7842601e612013565b6001600160a01b0383166000908152600560205260409020555b600e54600160b81b900460ff1615156001141561119957600c8054670100000000000000600160d81b0319167a7a250d5630b4cf539739df2c5dacb4c659f2488d000000000000001790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b15801561102b57600080fd5b505afa15801561103f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110639190611dc2565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156110ab57600080fd5b505afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e39190611dc2565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561112957600080fd5b505afa15801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190611dc2565b600d80546001600160a01b03929092166001600160a01b031990921691909117905550600e805461ffff60b81b1916600160c01b1790555b60006111a43061094f565b600e54909150600160a01b900460ff161580156111ce5750600d546001600160a01b038481169116145b80156111e35750600e54600160a81b900460ff165b156111fa57600f5481106111fa576111fa8161130e565b6001600160a01b03841660009081526006602052604090205460019060ff168061123c57506001600160a01b03841660009081526006602052604090205460ff165b15611245575060005b61125185858584611382565b5050505050565b6000818484111561127c5760405162461bcd60e51b81526004016105a39190611f08565b505050900390565b6000806000611291611543565b90925090506112a08282610c69565b9250505090565b60006106bc8284612013565b60008060008060008060008060006112ca8a6116eb565b92509250925060008060006112e88d86866112e3611284565b61172d565b919f909e50909c50959a5093985091965092945050505050565b60006106bc8284612091565b600e805460ff60a01b1916600160a01b179055600c546000908190640100000000900460ff16156113705761134f6064611349856032610c5d565b90610c69565b915061135a8261177d565b61136347611917565b61136d8282612013565b90505b5050600e805460ff60a01b1916905550565b8061138f5761138f611962565b6001600160a01b03841660009081526007602052604090205460ff1680156113d057506001600160a01b03831660009081526007602052604090205460ff16155b156113e5576113e0848484611a0a565b6114e3565b6001600160a01b03841660009081526007602052604090205460ff1615801561142657506001600160a01b03831660009081526007602052604090205460ff165b15611436576113e0848484611b30565b6001600160a01b03841660009081526007602052604090205460ff1615801561147857506001600160a01b03831660009081526007602052604090205460ff16155b15611488576113e0848484611bd9565b6001600160a01b03841660009081526007602052604090205460ff1680156114c857506001600160a01b03831660009081526007602052604090205460ff165b156114d8576113e0848484611c1d565b6114e3848484611bd9565b8061153d57600c805464ff000000001962ff00ff198216610100830460ff908116918217630100000060ff199095169290921793909304831662010000021790811665010000000000909104909116640100000000021790555b50505050565b60095460009081906b033b2e3c9fd0803ce8000000825b6008548110156116a85782600260006008848154811061157c5761157c6120d9565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806115e757508160036000600884815481106115c0576115c06120d9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611606575050600954936b033b2e3c9fd0803ce80000009350915050565b61164c6002600060088481548110611620576116206120d9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611302565b92506116946003600060088481548110611668576116686120d9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611302565b9150806116a0816120a8565b91505061155a565b506009546116c2906b033b2e3c9fd0803ce8000000610c69565b8210156116e2575050600954926b033b2e3c9fd0803ce800000092509050565b90939092509050565b6000806000806116fa85611c90565b9050600061170786611cab565b9050600061171f826117198986611302565b90611302565b979296509094509092505050565b600080808061173c8886610c5d565b9050600061174a8887610c5d565b905060006117588888610c5d565b9050600061176a826117198686611302565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117b2576117b26120d9565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60079054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561182057600080fd5b505afa158015611834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118589190611dc2565b8160018151811061186b5761186b6120d9565b6001600160a01b039283166020918202929092010152600c54611898913091600160381b90041684610c75565b600c54600160381b90046001600160a01b031663791ac94783600084306118c14261012c6112a7565b6040518663ffffffff1660e01b81526004016118e1959493929190611fa2565b600060405180830381600087803b1580156118fb57600080fd5b505af115801561190f573d6000803e3d6000fd5b505050505050565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611951573d6000803e3d6000fd5b5061195e4261012c6112a7565b5050565b600c5460ff1615801561197e5750600c5462010000900460ff16155b80156119955750600c54640100000000900460ff16155b1561199c57565b600c805464ff00ff00ff196501000000000064010000000063010000006201000060ff8087166101000261ff0019881681179290920481169290920263ff0000001990911663ff00ff00199096169590951794909417908104909316021665ffff00ff00ff19909116179055565b600080600080600080611a1c876112b3565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611a4e9088611302565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611a7d9087611302565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611aac90866112a7565b6001600160a01b038916600090815260026020526040902055611ace81611ce3565b611ad88483611d6c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b1d91815260200190565b60405180910390a3505050505050505050565b600080600080600080611b42876112b3565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611b749087611302565b6001600160a01b03808b16600090815260026020908152604080832094909455918b16815260039091522054611baa90846112a7565b6001600160a01b038916600090815260036020908152604080832093909355600290522054611aac90866112a7565b600080600080600080611beb876112b3565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611a7d9087611302565b600080600080600080611c2f876112b3565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611c619088611302565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611b749087611302565b600c546000906105e39060649061134990859060ff16610c5d565b600c546000906105e39060649061134990611cd99060ff64010000000082048116916201000090041661202b565b859060ff16610c5d565b6000611ced611284565b90506000611cfb8383610c5d565b30600090815260026020526040902054909150611d1890826112a7565b3060009081526002602090815260408083209390935560079052205460ff1615611d675730600090815260036020526040902054611d5690846112a7565b306000908152600360205260409020555b505050565b600954611d799083611302565b600955600b54611d8990826112a7565b600b555050565b80358015158114611da057600080fd5b919050565b600060208284031215611db757600080fd5b81356106bc816120ef565b600060208284031215611dd457600080fd5b81516106bc816120ef565b60008060408385031215611df257600080fd5b8235611dfd816120ef565b91506020830135611e0d816120ef565b809150509250929050565b600080600060608486031215611e2d57600080fd5b8335611e38816120ef565b92506020840135611e48816120ef565b929592945050506040919091013590565b60008060408385031215611e6c57600080fd5b8235611e77816120ef565b946020939093013593505050565b600060208284031215611e9757600080fd5b6106bc82611d90565b600060208284031215611eb257600080fd5b5035919050565b60008060408385031215611ecc57600080fd5b82359150611edc60208401611d90565b90509250929050565b600060208284031215611ef757600080fd5b813560ff811681146106bc57600080fd5b600060208083528351808285015260005b81811015611f3557858101830151858201604001528201611f19565b81811115611f47576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ff25784516001600160a01b031683529383019391830191600101611fcd565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612026576120266120c3565b500190565b600060ff821660ff84168060ff03821115612048576120486120c3565b019392505050565b60008261206d57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561208c5761208c6120c3565b500290565b6000828210156120a3576120a36120c3565b500390565b60006000198214156120bc576120bc6120c3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461210457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207f86bd40939757a57eb7cd87de2af463f8d5683d27b9d194d66130d37cbcf9be64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80635932ead1116100ec57806395d89b411161008a578063b8578bfd11610064578063b8578bfd146104e9578063d3dbc861146104fe578063dd62ed3e14610513578063f2fde38b1461055957600080fd5b806395d89b4114610479578063a457c2d7146104a9578063a9059cbb146104c957600080fd5b80637b7141e4116100c65780637b7141e4146103ee57806388f82020146104035780638da5cb5b1461043c5780638dd45fb21461046457600080fd5b80635932ead11461039957806370a08231146103b9578063715018a6146103d957600080fd5b8063313ce567116101595780633f97d3f4116101335780633f97d3f41461030b578063437823ec146103205780634549b039146103405780635342acb41461036057600080fd5b8063313ce567146102af57806339509351146102cb5780633bd5d173146102eb57600080fd5b806302a7153f146101ac57806306fdde03146101ce578063095ea7b31461021657806318160ddd1461024657806323b872dd1461026f5780632d8381191461028f57600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101cc6101c7366004611ee5565b610579565b005b3480156101da57600080fd5b5060408051808201909152600d81526c53484f5259554b454e20494e5560981b60208201525b60405161020d9190611f08565b60405180910390f35b34801561022257600080fd5b50610236610231366004611e59565b6105d2565b604051901515815260200161020d565b34801561025257600080fd5b506b033b2e3c9fd0803ce80000005b60405190815260200161020d565b34801561027b57600080fd5b5061023661028a366004611e18565b6105e9565b34801561029b57600080fd5b506102616102aa366004611ea0565b610652565b3480156102bb57600080fd5b506040516009815260200161020d565b3480156102d757600080fd5b506102366102e6366004611e59565b6106c3565b3480156102f757600080fd5b506101cc610306366004611ea0565b6106f9565b34801561031757600080fd5b506101cc6107e3565b34801561032c57600080fd5b506101cc61033b366004611da5565b610822565b34801561034c57600080fd5b5061026161035b366004611eb9565b610870565b34801561036c57600080fd5b5061023661037b366004611da5565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156103a557600080fd5b506101cc6103b4366004611e85565b610907565b3480156103c557600080fd5b506102616103d4366004611da5565b61094f565b3480156103e557600080fd5b506101cc6109ae565b3480156103fa57600080fd5b506101cc610a22565b34801561040f57600080fd5b5061023661041e366004611da5565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561044857600080fd5b506000546040516001600160a01b03909116815260200161020d565b34801561047057600080fd5b506101cc610a5b565b34801561048557600080fd5b5060408051808201909152600781526629a4292caaa5a760c91b6020820152610200565b3480156104b557600080fd5b506102366104c4366004611e59565b610a94565b3480156104d557600080fd5b506102366104e4366004611e59565b610ae3565b3480156104f557600080fd5b506101cc610af0565b34801561050a57600080fd5b506101cc610b2f565b34801561051f57600080fd5b5061026161052e366004611ddf565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561056557600080fd5b506101cc610574366004611da5565b610b6e565b6000546001600160a01b031633146105ac5760405162461bcd60e51b81526004016105a390611f5d565b60405180910390fd5b600c805460ff90921666010000000000000266ff00000000000019909216919091179055565b60006105df338484610c75565b5060015b92915050565b60006105f6848484610d82565b610648843361064385604051806060016040528060288152602001612108602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190611258565b610c75565b5060019392505050565b60006009548211156106a65760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064016105a3565b60006106b0611284565b90506106bc8382610c69565b9392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105df91859061064390866112a7565b3360008181526007602052604090205460ff161561076e5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016105a3565b6000610779836112b3565b505050506001600160a01b0384166000908152600260205260409020549192506107a591905082611302565b6001600160a01b0383166000908152600260205260409020556009546107cb9082611302565b600955600b546107db90846112a7565b600b55505050565b6000546001600160a01b0316331461080d5760405162461bcd60e51b81526004016105a390611f5d565b600e805460ff60c01b1916600160c01b179055565b6000546001600160a01b0316331461084c5760405162461bcd60e51b81526004016105a390611f5d565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006b033b2e3c9fd0803ce80000008311156108ce5760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c790000000060448201526064016105a3565b816108ed5760006108de846112b3565b509395506105e3945050505050565b60006108f8846112b3565b509295506105e3945050505050565b6000546001600160a01b031633146109315760405162461bcd60e51b81526004016105a390611f5d565b600e8054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff161561098c57506001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600260205260409020546105e390610652565b6000546001600160a01b031633146109d85760405162461bcd60e51b81526004016105a390611f5d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a4c5760405162461bcd60e51b81526004016105a390611f5d565b600e805460ff60c01b19169055565b6000546001600160a01b03163314610a855760405162461bcd60e51b81526004016105a390611f5d565b600e805460ff60a81b19169055565b60006105df338461064385604051806060016040528060258152602001612130602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190611258565b60006105df338484610d82565b6000546001600160a01b03163314610b1a5760405162461bcd60e51b81526004016105a390611f5d565b600e805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610b595760405162461bcd60e51b81526004016105a390611f5d565b600e805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610b985760405162461bcd60e51b81526004016105a390611f5d565b6001600160a01b038116610c025760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016105a3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006106bc8284612072565b60006106bc8284612050565b6001600160a01b038316610ccb5760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f206164647265737360448201526064016105a3565b6001600160a01b038216610d215760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f2061646472657373000060448201526064016105a3565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610de25760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b60648201526084016105a3565b6001600160a01b038216610e385760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f20616464726573730060448201526064016105a3565b60008111610e9a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a3565b600e54600160c01b900460ff16151560011415610ec9576a0422ca8b0a00a425000000811115610ec957600080fd5b600d546001600160a01b038481169116148015610efb5750600c546001600160a01b03838116600160381b9092041614155b8015610f2057506001600160a01b03821660009081526006602052604090205460ff16155b8015610f355750600e54600160b01b900460ff165b15610f9257600a54811115610f4957600080fd5b6001600160a01b0382166000908152600560205260409020544211610f6d57600080fd5b610f7842601e612013565b6001600160a01b0383166000908152600560205260409020555b600e54600160b81b900460ff1615156001141561119957600c8054670100000000000000600160d81b0319167a7a250d5630b4cf539739df2c5dacb4c659f2488d000000000000001790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b15801561102b57600080fd5b505afa15801561103f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110639190611dc2565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156110ab57600080fd5b505afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e39190611dc2565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561112957600080fd5b505afa15801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190611dc2565b600d80546001600160a01b03929092166001600160a01b031990921691909117905550600e805461ffff60b81b1916600160c01b1790555b60006111a43061094f565b600e54909150600160a01b900460ff161580156111ce5750600d546001600160a01b038481169116145b80156111e35750600e54600160a81b900460ff165b156111fa57600f5481106111fa576111fa8161130e565b6001600160a01b03841660009081526006602052604090205460019060ff168061123c57506001600160a01b03841660009081526006602052604090205460ff165b15611245575060005b61125185858584611382565b5050505050565b6000818484111561127c5760405162461bcd60e51b81526004016105a39190611f08565b505050900390565b6000806000611291611543565b90925090506112a08282610c69565b9250505090565b60006106bc8284612013565b60008060008060008060008060006112ca8a6116eb565b92509250925060008060006112e88d86866112e3611284565b61172d565b919f909e50909c50959a5093985091965092945050505050565b60006106bc8284612091565b600e805460ff60a01b1916600160a01b179055600c546000908190640100000000900460ff16156113705761134f6064611349856032610c5d565b90610c69565b915061135a8261177d565b61136347611917565b61136d8282612013565b90505b5050600e805460ff60a01b1916905550565b8061138f5761138f611962565b6001600160a01b03841660009081526007602052604090205460ff1680156113d057506001600160a01b03831660009081526007602052604090205460ff16155b156113e5576113e0848484611a0a565b6114e3565b6001600160a01b03841660009081526007602052604090205460ff1615801561142657506001600160a01b03831660009081526007602052604090205460ff165b15611436576113e0848484611b30565b6001600160a01b03841660009081526007602052604090205460ff1615801561147857506001600160a01b03831660009081526007602052604090205460ff16155b15611488576113e0848484611bd9565b6001600160a01b03841660009081526007602052604090205460ff1680156114c857506001600160a01b03831660009081526007602052604090205460ff165b156114d8576113e0848484611c1d565b6114e3848484611bd9565b8061153d57600c805464ff000000001962ff00ff198216610100830460ff908116918217630100000060ff199095169290921793909304831662010000021790811665010000000000909104909116640100000000021790555b50505050565b60095460009081906b033b2e3c9fd0803ce8000000825b6008548110156116a85782600260006008848154811061157c5761157c6120d9565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806115e757508160036000600884815481106115c0576115c06120d9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611606575050600954936b033b2e3c9fd0803ce80000009350915050565b61164c6002600060088481548110611620576116206120d9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611302565b92506116946003600060088481548110611668576116686120d9565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611302565b9150806116a0816120a8565b91505061155a565b506009546116c2906b033b2e3c9fd0803ce8000000610c69565b8210156116e2575050600954926b033b2e3c9fd0803ce800000092509050565b90939092509050565b6000806000806116fa85611c90565b9050600061170786611cab565b9050600061171f826117198986611302565b90611302565b979296509094509092505050565b600080808061173c8886610c5d565b9050600061174a8887610c5d565b905060006117588888610c5d565b9050600061176a826117198686611302565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117b2576117b26120d9565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60079054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561182057600080fd5b505afa158015611834573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118589190611dc2565b8160018151811061186b5761186b6120d9565b6001600160a01b039283166020918202929092010152600c54611898913091600160381b90041684610c75565b600c54600160381b90046001600160a01b031663791ac94783600084306118c14261012c6112a7565b6040518663ffffffff1660e01b81526004016118e1959493929190611fa2565b600060405180830381600087803b1580156118fb57600080fd5b505af115801561190f573d6000803e3d6000fd5b505050505050565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611951573d6000803e3d6000fd5b5061195e4261012c6112a7565b5050565b600c5460ff1615801561197e5750600c5462010000900460ff16155b80156119955750600c54640100000000900460ff16155b1561199c57565b600c805464ff00ff00ff196501000000000064010000000063010000006201000060ff8087166101000261ff0019881681179290920481169290920263ff0000001990911663ff00ff00199096169590951794909417908104909316021665ffff00ff00ff19909116179055565b600080600080600080611a1c876112b3565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611a4e9088611302565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611a7d9087611302565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611aac90866112a7565b6001600160a01b038916600090815260026020526040902055611ace81611ce3565b611ad88483611d6c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611b1d91815260200190565b60405180910390a3505050505050505050565b600080600080600080611b42876112b3565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611b749087611302565b6001600160a01b03808b16600090815260026020908152604080832094909455918b16815260039091522054611baa90846112a7565b6001600160a01b038916600090815260036020908152604080832093909355600290522054611aac90866112a7565b600080600080600080611beb876112b3565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611a7d9087611302565b600080600080600080611c2f876112b3565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611c619088611302565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611b749087611302565b600c546000906105e39060649061134990859060ff16610c5d565b600c546000906105e39060649061134990611cd99060ff64010000000082048116916201000090041661202b565b859060ff16610c5d565b6000611ced611284565b90506000611cfb8383610c5d565b30600090815260026020526040902054909150611d1890826112a7565b3060009081526002602090815260408083209390935560079052205460ff1615611d675730600090815260036020526040902054611d5690846112a7565b306000908152600360205260409020555b505050565b600954611d799083611302565b600955600b54611d8990826112a7565b600b555050565b80358015158114611da057600080fd5b919050565b600060208284031215611db757600080fd5b81356106bc816120ef565b600060208284031215611dd457600080fd5b81516106bc816120ef565b60008060408385031215611df257600080fd5b8235611dfd816120ef565b91506020830135611e0d816120ef565b809150509250929050565b600080600060608486031215611e2d57600080fd5b8335611e38816120ef565b92506020840135611e48816120ef565b929592945050506040919091013590565b60008060408385031215611e6c57600080fd5b8235611e77816120ef565b946020939093013593505050565b600060208284031215611e9757600080fd5b6106bc82611d90565b600060208284031215611eb257600080fd5b5035919050565b60008060408385031215611ecc57600080fd5b82359150611edc60208401611d90565b90509250929050565b600060208284031215611ef757600080fd5b813560ff811681146106bc57600080fd5b600060208083528351808285015260005b81811015611f3557858101830151858201604001528201611f19565b81811115611f47576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ff25784516001600160a01b031683529383019391830191600101611fcd565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612026576120266120c3565b500190565b600060ff821660ff84168060ff03821115612048576120486120c3565b019392505050565b60008261206d57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561208c5761208c6120c3565b500290565b6000828210156120a3576120a36120c3565b500390565b60006000198214156120bc576120bc6120c3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461210457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207f86bd40939757a57eb7cd87de2af463f8d5683d27b9d194d66130d37cbcf9be64736f6c63430008070033

Deployed Bytecode Sourcemap

13090:16928:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25954:127;;;;;;;;;;-1:-1:-1;25954:127:0;;;;;:::i;:::-;;:::i;:::-;;15413:92;;;;;;;;;;-1:-1:-1;15492:5:0;;;;;;;;;;;;-1:-1:-1;;;15492:5:0;;;;15413:92;;;;;;;:::i;:::-;;;;;;;;16338:161;;;;;;;;;;-1:-1:-1;16338:161:0;;;;;:::i;:::-;;:::i;:::-;;;3440:14:1;;3433:22;3415:41;;3403:2;3388:18;16338:161:0;3275:187:1;15711:95:0;;;;;;;;;;-1:-1:-1;13703:12:0;15711:95;;;8054:25:1;;;8042:2;8027:18;15711:95:0;7908:177:1;16505:329:0;;;;;;;;;;-1:-1:-1;16505:329:0;;;;;:::i;:::-;;:::i;18464:241::-;;;;;;;;;;-1:-1:-1;18464:241:0;;;;;:::i;:::-;;:::i;15613:92::-;;;;;;;;;;-1:-1:-1;15613:92:0;;13995:1;9217:36:1;;9205:2;9190:18;15613:92:0;9075:184:1;16840:218:0;;;;;;;;;;-1:-1:-1;16840:218:0;;;;;:::i;:::-;;:::i;17626:382::-;;;;;;;;;;-1:-1:-1;17626:382:0;;;;;:::i;:::-;;:::i;25784:78::-;;;;;;;;;;;;;:::i;21896:111::-;;;;;;;;;;-1:-1:-1;21896:111:0;;;;;:::i;:::-;;:::i;18014:444::-;;;;;;;;;;-1:-1:-1;18014:444:0;;;;;:::i;:::-;;:::i;22013:124::-;;;;;;;;;;-1:-1:-1;22013:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;22102:27:0;22078:4;22102:27;;;:18;:27;;;;;;;;;22013:124;17517:103;;;;;;;;;;-1:-1:-1;17517:103:0;;;;;:::i;:::-;;:::i;15812:198::-;;;;;;;;;;-1:-1:-1;15812:198:0;;;;;:::i;:::-;;:::i;945:148::-;;;;;;;;;;;;;:::i;25868:80::-;;;;;;;;;;;;;:::i;17389:120::-;;;;;;;;;;-1:-1:-1;17389:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;17481:20:0;17457:4;17481:20;;;:11;:20;;;;;;;;;17389:120;717:87;;;;;;;;;;-1:-1:-1;763:7:0;790:6;717:87;;-1:-1:-1;;;;;790:6:0;;;2904:51:1;;2892:2;2877:18;717:87:0;2758:203:1;25688:90:0;;;;;;;;;;;;;:::i;15511:96::-;;;;;;;;;;-1:-1:-1;15592:7:0;;;;;;;;;;;;-1:-1:-1;;;15592:7:0;;;;15511:96;;17064:319;;;;;;;;;;-1:-1:-1;17064:319:0;;;;;:::i;:::-;;:::i;16016:167::-;;;;;;;;;;-1:-1:-1;16016:167:0;;;;;:::i;:::-;;:::i;25594:88::-;;;;;;;;;;;;;:::i;25512:76::-;;;;;;;;;;;;;:::i;16189:143::-;;;;;;;;;;-1:-1:-1;16189:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;16297:18:0;;;16270:7;16297:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16189:143;1101:249;;;;;;;;;;-1:-1:-1;1101:249:0;;;;;:::i;:::-;;:::i;25954:127::-;763:7;790:6;-1:-1:-1;;;;;790:6:0;370:10;852:23;844:73;;;;-1:-1:-1;;;844:73:0;;;;;;;:::i;:::-;;;;;;;;;26045:13:::1;:28:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;26045:28:0;;::::1;::::0;;;::::1;::::0;;25954:127::o;16338:161::-;16413:4;16430:39;370:10;16453:7;16462:6;16430:8;:39::i;:::-;-1:-1:-1;16487:4:0;16338:161;;;;;:::o;16505:329::-;16601:4;16618:36;16628:6;16636:9;16647:6;16618:9;:36::i;:::-;16665:139;16674:6;370:10;16704:89;16742:6;16704:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16704:19:0;;;;;;:11;:19;;;;;;;;370:10;16704:33;;;;;;;;;;:37;:89::i;:::-;16665:8;:139::i;:::-;-1:-1:-1;16822:4:0;16505:329;;;;;:::o;18464:241::-;18531:7;18570;;18559;:18;;18551:61;;;;-1:-1:-1;;;18551:61:0;;5749:2:1;18551:61:0;;;5731:21:1;5788:2;5768:18;;;5761:30;5827:32;5807:18;;;5800:60;5877:18;;18551:61:0;5547:354:1;18551:61:0;18623:19;18645:10;:8;:10::i;:::-;18623:32;-1:-1:-1;18673:24:0;:7;18623:32;18673:11;:24::i;:::-;18666:31;18464:241;-1:-1:-1;;;18464:241:0:o;16840:218::-;370:10;16928:4;16977:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16977:34:0;;;;;;;;;;16928:4;;16945:83;;16968:7;;16977:50;;17016:10;16977:38;:50::i;17626:382::-;370:10;17678:14;17727:19;;;:11;:19;;;;;;;;17726:20;17718:77;;;;-1:-1:-1;;;17718:77:0;;7336:2:1;17718:77:0;;;7318:21:1;7375:2;7355:18;;;7348:30;7414:34;7394:18;;;7387:62;-1:-1:-1;;;7465:18:1;;;7458:42;7517:19;;17718:77:0;7134:408:1;17718:77:0;17807:15;17836:19;17847:7;17836:10;:19::i;:::-;-1:-1:-1;;;;;;;;;17884:15:0;;;;;;:7;:15;;;;;;17806:49;;-1:-1:-1;17884:28:0;;:15;-1:-1:-1;17806:49:0;17884:19;:28::i;:::-;-1:-1:-1;;;;;17866:15:0;;;;;;:7;:15;;;;;:46;17933:7;;:20;;17945:7;17933:11;:20::i;:::-;17923:7;:30;17977:10;;:23;;17992:7;17977:14;:23::i;:::-;17964:10;:36;-1:-1:-1;;;17626:382:0:o;25784:78::-;763:7;790:6;-1:-1:-1;;;;;790:6:0;370:10;852:23;844:73;;;;-1:-1:-1;;;844:73:0;;;;;;;:::i;:::-;25837:10:::1;:17:::0;;-1:-1:-1;;;;25837:17:0::1;-1:-1:-1::0;;;25837:17:0::1;::::0;;25784:78::o;21896:111::-;763:7;790:6;-1:-1:-1;;;;;790:6:0;370:10;852:23;844:73;;;;-1:-1:-1;;;844:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21965:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;21965:34:0::1;21995:4;21965:34;::::0;;21896:111::o;18014:444::-;18105:7;13703:12;18133:7;:18;;18125:59;;;;-1:-1:-1;;;18125:59:0;;4630:2:1;18125:59:0;;;4612:21:1;4669:2;4649:18;;;4642:30;4708;4688:18;;;4681:58;4756:18;;18125:59:0;4428:352:1;18125:59:0;18200:17;18195:256;;18235:15;18264:19;18275:7;18264:10;:19::i;:::-;-1:-1:-1;18234:49:0;;-1:-1:-1;18298:14:0;;-1:-1:-1;;;;;18298:14:0;18195:256;18348:23;18383:19;18394:7;18383:10;:19::i;:::-;-1:-1:-1;18345:57:0;;-1:-1:-1;18417:22:0;;-1:-1:-1;;;;;18417:22:0;17517:103;763:7;790:6;-1:-1:-1;;;;;790:6:0;370:10;852:23;844:73;;;;-1:-1:-1;;;844:73:0;;;;;;;:::i;:::-;17589:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;17589:23:0::1;-1:-1:-1::0;;;;17589:23:0;;::::1;::::0;;;::::1;::::0;;17517:103::o;15812:198::-;-1:-1:-1;;;;;15902:20:0;;15878:7;15902:20;;;:11;:20;;;;;;;;15898:49;;;-1:-1:-1;;;;;;15931:16:0;;;;;:7;:16;;;;;;;15812:198::o;15898:49::-;-1:-1:-1;;;;;15985:16:0;;;;;;:7;:16;;;;;;15965:37;;:19;:37::i;945:148::-;763:7;790:6;-1:-1:-1;;;;;790:6:0;370:10;852:23;844:73;;;;-1:-1:-1;;;844:73:0;;;;;;;:::i;:::-;1052:1:::1;1036:6:::0;;1015:40:::1;::::0;-1:-1:-1;;;;;1036:6:0;;::::1;::::0;1015:40:::1;::::0;1052:1;;1015:40:::1;1083:1;1066:19:::0;;-1:-1:-1;;;;;;1066:19:0::1;::::0;;945:148::o;25868:80::-;763:7;790:6;-1:-1:-1;;;;;790:6:0;370:10;852:23;844:73;;;;-1:-1:-1;;;844:73:0;;;;;;;:::i;:::-;25922:10:::1;:18:::0;;-1:-1:-1;;;;25922:18:0::1;::::0;;25868:80::o;25688:90::-;763:7;790:6;-1:-1:-1;;;;;790:6:0;370:10;852:23;844:73;;;;-1:-1:-1;;;844:73:0;;;;;;;:::i;:::-;25741:21:::1;:29:::0;;-1:-1:-1;;;;25741:29:0::1;::::0;;25688:90::o;17064:319::-;17157:4;17174:179;370:10;17224:7;17246:96;17285:15;17246:96;;;;;;;;;;;;;;;;;370:10;17246:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17246:34:0;;;;;;;;;;;;:38;:96::i;16016:167::-;16094:4;16111:42;370:10;16135:9;16146:6;16111:9;:42::i;25594:88::-;763:7;790:6;-1:-1:-1;;;;;790:6:0;370:10;852:23;844:73;;;;-1:-1:-1;;;844:73:0;;;;;;;:::i;:::-;25646:21:::1;:28:::0;;-1:-1:-1;;;;25646:28:0::1;-1:-1:-1::0;;;25646:28:0::1;::::0;;25594:88::o;25512:76::-;763:7;790:6;-1:-1:-1;;;;;790:6:0;370:10;852:23;844:73;;;;-1:-1:-1;;;844:73:0;;;;;;;:::i;:::-;25562:11:::1;:18:::0;;-1:-1:-1;;;;25562:18:0::1;-1:-1:-1::0;;;25562:18:0::1;::::0;;25512:76::o;1101:249::-;763:7;790:6;-1:-1:-1;;;;;790:6:0;370:10;852:23;844:73;;;;-1:-1:-1;;;844:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1190:22:0;::::1;1182:78;;;::::0;-1:-1:-1;;;1182:78:0;;6108:2:1;1182:78:0::1;::::0;::::1;6090:21:1::0;6147:2;6127:18;;;6120:30;6186:34;6166:18;;;6159:62;-1:-1:-1;;;6237:18:1;;;6230:41;6288:19;;1182:78:0::1;5906:407:1::0;1182:78:0::1;1297:6;::::0;;1276:38:::1;::::0;-1:-1:-1;;;;;1276:38:0;;::::1;::::0;1297:6;::::1;::::0;1276:38:::1;::::0;::::1;1325:6;:17:::0;;-1:-1:-1;;;;;;1325:17:0::1;-1:-1:-1::0;;;;;1325:17:0;;;::::1;::::0;;;::::1;::::0;;1101:249::o;3081:98::-;3139:7;3166:5;3170:1;3166;:5;:::i;3185:98::-;3243:7;3270:5;3274:1;3270;:5;:::i;22143:325::-;-1:-1:-1;;;;;22234:19:0;;22226:64;;;;-1:-1:-1;;;22226:64:0;;7749:2:1;22226:64:0;;;7731:21:1;;;7768:18;;;7761:30;7827:34;7807:18;;;7800:62;7879:18;;22226:64:0;7547:356:1;22226:64:0;-1:-1:-1;;;;;22309:21:0;;22301:64;;;;-1:-1:-1;;;22301:64:0;;4271:2:1;22301:64:0;;;4253:21:1;4310:2;4290:18;;;4283:30;4349:32;4329:18;;;4322:60;4399:18;;22301:64:0;4069:354:1;22301:64:0;-1:-1:-1;;;;;22376:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22428:32;;8054:25:1;;;22428:32:0;;8027:18:1;22428:32:0;;;;;;;22143:325;;;:::o;22474:1571::-;-1:-1:-1;;;;;22560:18:0;;22552:64;;;;-1:-1:-1;;;22552:64:0;;4987:2:1;22552:64:0;;;4969:21:1;5026:2;5006:18;;;4999:30;5065:34;5045:18;;;5038:62;-1:-1:-1;;;5116:18:1;;;5109:31;5157:19;;22552:64:0;4785:397:1;22552:64:0;-1:-1:-1;;;;;22635:16:0;;22627:60;;;;-1:-1:-1;;;22627:60:0;;5389:2:1;22627:60:0;;;5371:21:1;5428:2;5408:18;;;5401:30;5467:33;5447:18;;;5440:61;5518:18;;22627:60:0;5187:355:1;22627:60:0;22715:1;22706:6;:10;22698:64;;;;-1:-1:-1;;;22698:64:0;;6926:2:1;22698:64:0;;;6908:21:1;6965:2;6945:18;;;6938:30;7004:34;6984:18;;;6977:62;-1:-1:-1;;;7055:18:1;;;7048:39;7104:19;;22698:64:0;6724:405:1;22698:64:0;22777:10;;-1:-1:-1;;;22777:10:0;;;;:18;;22791:4;22777:18;22773:94;;;22830:24;22820:6;:34;;22812:43;;;;;;22889:9;;-1:-1:-1;;;;;22881:17:0;;;22889:9;;22881:17;:47;;;;-1:-1:-1;22916:11:0;;-1:-1:-1;;;;;22902:26:0;;;-1:-1:-1;;;22916:11:0;;;;22902:26;;22881:47;:75;;;;-1:-1:-1;;;;;;22934:22:0;;;;;;:18;:22;;;;;;;;22932:24;22881:75;:94;;;;-1:-1:-1;22960:15:0;;-1:-1:-1;;;22960:15:0;;;;22881:94;22877:296;;;23014:12;;23004:6;:22;;22996:31;;;;;;-1:-1:-1;;;;;23054:16:0;;;;;;:12;:16;;;;;;23073:15;-1:-1:-1;23046:43:0;;;;;;23127:30;:15;23146:10;23127:30;:::i;:::-;-1:-1:-1;;;;;23108:16:0;;;;;;:12;:16;;;;;:49;22877:296;23186:11;;-1:-1:-1;;;23186:11:0;;;;:19;;23201:4;23186:19;23183:366;;;23333:11;:26;;-1:-1:-1;;;;;;23333:26:0;;;;;23404:22;;;-1:-1:-1;;;23404:22:0;;;;23275:42;;;;23404:20;;:22;;;;;;;;;;;;;;;23275:42;23404:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23386:49:0;;23444:4;23451:12;-1:-1:-1;;;;;23451:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23386:85;;-1:-1:-1;;;;;;23386:85:0;;;;;;;-1:-1:-1;;;;;3196:15:1;;;23386:85:0;;;3178:34:1;3248:15;;3228:18;;;3221:43;3113:18;;23386:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23374:9;:97;;-1:-1:-1;;;;;23374:97:0;;;;-1:-1:-1;;;;;;23374:97:0;;;;;;;;;-1:-1:-1;23486:10:0;:17;;-1:-1:-1;;;;23518:19:0;-1:-1:-1;;;23518:19:0;;;23183:366;23559:28;23590:24;23608:4;23590:9;:24::i;:::-;23630:16;;23559:55;;-1:-1:-1;;;;23630:16:0;;;;23629:17;:36;;;;-1:-1:-1;23656:9:0;;-1:-1:-1;;;;;23650:15:0;;;23656:9;;23650:15;23629:36;:61;;;;-1:-1:-1;23669:21:0;;-1:-1:-1;;;23669:21:0;;;;23629:61;23625:223;;;23735:29;;23711:20;:53;23707:130;;23785:36;23800:20;23785:14;:36::i;:::-;-1:-1:-1;;;;;23892:24:0;;23858:12;23892:24;;;:18;:24;;;;;;23873:4;;23892:24;;;:50;;-1:-1:-1;;;;;;23920:22:0;;;;;;:18;:22;;;;;;;;23892:50;23888:98;;;-1:-1:-1;23969:5:0;23888:98;23996:41;24011:4;24017:2;24021:6;24029:7;23996:14;:41::i;:::-;22541:1504;;22474:1571;;;:::o;3393:206::-;3479:7;3540:12;3532:6;;;;3524:29;;;;-1:-1:-1;;;3524:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3575:5:0;;;3393:206::o;20082:164::-;20124:7;20145:15;20162;20181:19;:17;:19::i;:::-;20144:56;;-1:-1:-1;20144:56:0;-1:-1:-1;20218:20:0;20144:56;;20218:11;:20::i;:::-;20211:27;;;;20082:164;:::o;2873:98::-;2931:7;2958:5;2962:1;2958;:5;:::i;18899:414::-;18958:7;18966;18974;18982;18990;18998;19019:23;19044:12;19058:18;19080:20;19092:7;19080:11;:20::i;:::-;19018:82;;;;;;19112:15;19129:23;19154:12;19170:50;19182:7;19191:4;19197:10;19209;:8;:10::i;:::-;19170:11;:50::i;:::-;19111:109;;;;-1:-1:-1;19111:109:0;;-1:-1:-1;19271:15:0;;-1:-1:-1;19288:4:0;;-1:-1:-1;19294:10:0;;-1:-1:-1;18899:414:0;;-1:-1:-1;;;;;18899:414:0:o;2977:98::-;3035:7;3062:5;3066:1;3062;:5;:::i;24051:408::-;14954:16;:23;;-1:-1:-1;;;;14954:23:0;-1:-1:-1;;;14954:23:0;;;24211:7:::1;::::0;14954:23;;;;24211:7;;::::1;14954:23:::0;24211:7:::1;:12:::0;24207:245:::1;;24254:37;24287:3;24254:28;:20:::0;24279:2:::1;24254:24;:28::i;:::-;:32:::0;::::1;:37::i;:::-;24240:51;;24306:29;24323:11;24306:16;:29::i;:::-;24350:30;24358:21;24350:7;:30::i;:::-;24412:28;24429:11:::0;24412:14;:28:::1;:::i;:::-;24395:45;;24207:245;-1:-1:-1::0;;15000:16:0;:24;;-1:-1:-1;;;;15000:24:0;;;-1:-1:-1;24051:408:0:o;26087:788::-;26197:7;26192:28;;26206:14;:12;:14::i;:::-;-1:-1:-1;;;;;26235:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;26259:22:0;;;;;;:11;:22;;;;;;;;26258:23;26235:46;26231:597;;;26298:48;26320:6;26328:9;26339:6;26298:21;:48::i;:::-;26231:597;;;-1:-1:-1;;;;;26369:19:0;;;;;;:11;:19;;;;;;;;26368:20;:46;;;;-1:-1:-1;;;;;;26392:22:0;;;;;;:11;:22;;;;;;;;26368:46;26364:464;;;26431:46;26451:6;26459:9;26470:6;26431:19;:46::i;26364:464::-;-1:-1:-1;;;;;26500:19:0;;;;;;:11;:19;;;;;;;;26499:20;:47;;;;-1:-1:-1;;;;;;26524:22:0;;;;;;:11;:22;;;;;;;;26523:23;26499:47;26495:333;;;26563:44;26581:6;26589:9;26600:6;26563:17;:44::i;26495:333::-;-1:-1:-1;;;;;26629:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;26652:22:0;;;;;;:11;:22;;;;;;;;26629:45;26625:203;;;26691:48;26713:6;26721:9;26732:6;26691:21;:48::i;26625:203::-;26772:44;26790:6;26798:9;26809:6;26772:17;:44::i;:::-;26843:7;26838:29;;21795:15;;;-1:-1:-1;;;;21821:25:0;;21795:15;;;;;;;21821:25;;;21831:15;-1:-1:-1;;21785:25:0;;;;;;;21831:15;;;;;;21821:25;;;21857;;;21867:15;;;;;;;21857:25;;;;;26852:15;26087:788;;;;:::o;20252:556::-;20350:7;;20303;;;;13703:12;20303:7;20404:289;20428:9;:16;20424:20;;20404:289;;;20494:7;20470;:21;20478:9;20488:1;20478:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20478:12:0;20470:21;;;;;;;;;;;;;:31;;:66;;;20529:7;20505;:21;20513:9;20523:1;20513:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20513:12:0;20505:21;;;;;;;;;;;;;:31;20470:66;20466:97;;;-1:-1:-1;;20546:7:0;;;13703:12;;-1:-1:-1;20252:556:0;-1:-1:-1;;20252:556:0:o;20466:97::-;20588:34;20600:7;:21;20608:9;20618:1;20608:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20608:12:0;20600:21;;;;;;;;;;;;;20588:7;;:11;:34::i;:::-;20578:44;;20647:34;20659:7;:21;20667:9;20677:1;20667:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;20667:12:0;20659:21;;;;;;;;;;;;;20647:7;;:11;:34::i;:::-;20637:44;-1:-1:-1;20446:3:0;;;;:::i;:::-;;;;20404:289;;;-1:-1:-1;20717:7:0;;:20;;13703:12;20717:11;:20::i;:::-;20707:7;:30;20703:61;;;-1:-1:-1;;20747:7:0;;;13703:12;;-1:-1:-1;20252:556:0;-1:-1:-1;20252:556:0:o;20703:61::-;20783:7;;20792;;-1:-1:-1;20252:556:0;-1:-1:-1;20252:556:0:o;19319:327::-;19378:7;19386;19394;19414:12;19429:24;19445:7;19429:15;:24::i;:::-;19414:39;;19464:18;19485:30;19507:7;19485:21;:30::i;:::-;19464:51;-1:-1:-1;19526:23:0;19552:33;19464:51;19552:17;:7;19564:4;19552:11;:17::i;:::-;:21;;:33::i;:::-;19526:59;19621:4;;-1:-1:-1;19627:10:0;;-1:-1:-1;19319:327:0;;-1:-1:-1;;;19319:327:0:o;19652:424::-;19764:7;;;;19818:24;:7;19830:11;19818;:24::i;:::-;19800:42;-1:-1:-1;19853:12:0;19868:21;:4;19877:11;19868:8;:21::i;:::-;19853:36;-1:-1:-1;19900:18:0;19921:27;:10;19936:11;19921:14;:27::i;:::-;19900:48;-1:-1:-1;19959:23:0;19985:33;19900:48;19985:17;:7;19997:4;19985:11;:17::i;:33::-;20037:7;;;;-1:-1:-1;20063:4:0;;-1:-1:-1;19652:424:0;;-1:-1:-1;;;;;;;19652:424:0:o;24465:496::-;24555:16;;;24569:1;24555:16;;;;;;;;24531:21;;24555:16;;;;;;;;;;-1:-1:-1;24555:16:0;24531:40;;24600:4;24582;24587:1;24582:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24582:23:0;;;-1:-1:-1;;;;;24582:23:0;;;;;24626:11;;;;;;;;;-1:-1:-1;;;;;24626:11:0;-1:-1:-1;;;;;24626:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24616:4;24621:1;24616:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24616:28:0;;;:7;;;;;;;;;:28;24687:11;;24655:58;;24672:4;;-1:-1:-1;;;24687:11:0;;;24701;24655:8;:58::i;:::-;24724:11;;-1:-1:-1;;;24724:11:0;;-1:-1:-1;;;;;24724:11:0;:62;24801:11;24827:1;24871:4;24898;24918:24;:15;24938:3;24918:19;:24::i;:::-;24724:229;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24520:441;24465:496;:::o;24967:121::-;25019:9;;:26;;-1:-1:-1;;;;;25019:9:0;;;;:26;;;;;25038:6;;25019:9;:26;:9;:26;25038:6;25019:9;:26;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25056:24:0;:15;25076:3;25056:19;:24::i;:::-;;24967:121;:::o;21450:285::-;21497:7;;;;:12;:28;;;;-1:-1:-1;21513:7:0;;;;;;;:12;21497:28;:44;;;;-1:-1:-1;21529:7:0;;;;;;;:12;21497:44;21493:57;;;21450:285::o;21493:57::-;21580:7;;;-1:-1:-1;;21634:25:0;21652:7;21598:25;21616:7;21580;;;;;21562:25;-1:-1:-1;;21562:25:0;;;;21616:7;;;;;;21598:25;;;;-1:-1:-1;;21598:25:0;;;-1:-1:-1;;21598:25:0;;;;;;;;;;;21652:7;;;;;;21634:25;21716:11;-1:-1:-1;;21716:11:0;;;;;;21450:285::o;28144:650::-;28259:15;28289:23;28327:12;28354:23;28392:12;28419:18;28451:19;28462:7;28451:10;:19::i;:::-;-1:-1:-1;;;;;28499:15:0;;;;;;:7;:15;;;;;;28244:226;;-1:-1:-1;28244:226:0;;-1:-1:-1;28244:226:0;;-1:-1:-1;28244:226:0;-1:-1:-1;28244:226:0;-1:-1:-1;28244:226:0;-1:-1:-1;28499:28:0;;28519:7;28499:19;:28::i;:::-;-1:-1:-1;;;;;28481:15:0;;;;;;:7;:15;;;;;;;;:46;;;;28556:7;:15;;;;:28;;28576:7;28556:19;:28::i;:::-;-1:-1:-1;;;;;28538:15:0;;;;;;;:7;:15;;;;;;:46;;;;28616:18;;;;;;;:39;;28639:15;28616:22;:39::i;:::-;-1:-1:-1;;;;;28595:18:0;;;;;;:7;:18;;;;;:60;28666:26;28681:10;28666:14;:26::i;:::-;28703:23;28715:4;28721;28703:11;:23::i;:::-;28759:9;-1:-1:-1;;;;;28742:44:0;28751:6;-1:-1:-1;;;;;28742:44:0;;28770:15;28742:44;;;;8054:25:1;;8042:2;8027:18;;7908:177;28742:44:0;;;;;;;;28233:561;;;;;;28144:650;;;:::o;27476:662::-;27589:15;27619:23;27657:12;27684:23;27722:12;27749:18;27781:19;27792:7;27781:10;:19::i;:::-;-1:-1:-1;;;;;27829:15:0;;;;;;:7;:15;;;;;;27574:226;;-1:-1:-1;27574:226:0;;-1:-1:-1;27574:226:0;;-1:-1:-1;27574:226:0;-1:-1:-1;27574:226:0;-1:-1:-1;27574:226:0;-1:-1:-1;27829:28:0;;27574:226;27829:19;:28::i;:::-;-1:-1:-1;;;;;27811:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;27889:18;;;;;:7;:18;;;;;:39;;27912:15;27889:22;:39::i;:::-;-1:-1:-1;;;;;27868:18:0;;;;;;:7;:18;;;;;;;;:60;;;;27960:7;:18;;;;:39;;27983:15;27960:22;:39::i;26881:589::-;26992:15;27022:23;27060:12;27087:23;27125:12;27152:18;27184:19;27195:7;27184:10;:19::i;:::-;-1:-1:-1;;;;;27232:15:0;;;;;;:7;:15;;;;;;26977:226;;-1:-1:-1;26977:226:0;;-1:-1:-1;26977:226:0;;-1:-1:-1;26977:226:0;-1:-1:-1;26977:226:0;-1:-1:-1;26977:226:0;-1:-1:-1;27232:28:0;;26977:226;27232:19;:28::i;28800:721::-;28915:15;28945:23;28983:12;29010:23;29048:12;29075:18;29107:19;29118:7;29107:10;:19::i;:::-;-1:-1:-1;;;;;29155:15:0;;;;;;:7;:15;;;;;;28900:226;;-1:-1:-1;28900:226:0;;-1:-1:-1;28900:226:0;;-1:-1:-1;28900:226:0;-1:-1:-1;28900:226:0;-1:-1:-1;28900:226:0;-1:-1:-1;29155:28:0;;29175:7;29155:19;:28::i;:::-;-1:-1:-1;;;;;29137:15:0;;;;;;:7;:15;;;;;;;;:46;;;;29212:7;:15;;;;:28;;29232:7;29212:19;:28::i;21162:130::-;21265:7;;21226;;21253:31;;21278:5;;21253:20;;:7;;21265;;21253:11;:20::i;21298:146::-;21417:7;;21368;;21395:41;;21430:5;;21395:30;;21407:17;;21417:7;;;;;;;21407;;;;:17;:::i;:::-;21395:7;;:30;;:11;:30::i;20814:342::-;20877:19;20899:10;:8;:10::i;:::-;20877:32;-1:-1:-1;20920:18:0;20941:27;:10;20877:32;20941:14;:27::i;:::-;21020:4;21004:22;;;;:7;:22;;;;;;20920:48;;-1:-1:-1;21004:38:0;;20920:48;21004:26;:38::i;:::-;20995:4;20979:22;;;;:7;:22;;;;;;;;:63;;;;21057:11;:26;;;;;;21053:95;;;21126:4;21110:22;;;;:7;:22;;;;;;:38;;21137:10;21110:26;:38::i;:::-;21101:4;21085:22;;;;:7;:22;;;;;:63;21053:95;20866:290;;20814:342;:::o;18746:147::-;18824:7;;:17;;18836:4;18824:11;:17::i;:::-;18814:7;:27;18865:10;;:20;;18880:4;18865:14;:20::i;:::-;18852:10;:33;-1:-1:-1;;18746: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:269::-;2541:6;2594:2;2582:9;2573:7;2569:23;2565:32;2562:52;;;2610:1;2607;2600:12;2562:52;2649:9;2636:23;2699:4;2692:5;2688:16;2681:5;2678:27;2668:55;;2719:1;2716;2709:12;3467:597;3579:4;3608:2;3637;3626:9;3619:21;3669:6;3663:13;3712:6;3707:2;3696:9;3692:18;3685:34;3737:1;3747:140;3761:6;3758:1;3755:13;3747:140;;;3856:14;;;3852:23;;3846:30;3822:17;;;3841:2;3818:26;3811:66;3776:10;;3747:140;;;3905:6;3902:1;3899:13;3896:91;;;3975:1;3970:2;3961:6;3950:9;3946:22;3942:31;3935:42;3896:91;-1:-1:-1;4048:2:1;4027:15;-1:-1:-1;;4023:29:1;4008:45;;;;4055:2;4004:54;;3467:597;-1:-1:-1;;;3467:597:1:o;6318:401::-;6520:2;6502:21;;;6559:2;6539:18;;;6532:30;6598:34;6593:2;6578:18;;6571:62;-1:-1:-1;;;6664:2:1;6649:18;;6642:35;6709:3;6694:19;;6318:401::o;8090:980::-;8352:4;8400:3;8389:9;8385:19;8431:6;8420:9;8413:25;8457:2;8495:6;8490:2;8479:9;8475:18;8468:34;8538:3;8533:2;8522:9;8518:18;8511:31;8562:6;8597;8591:13;8628:6;8620;8613:22;8666:3;8655:9;8651:19;8644:26;;8705:2;8697:6;8693:15;8679:29;;8726:1;8736:195;8750:6;8747:1;8744:13;8736:195;;;8815:13;;-1:-1:-1;;;;;8811:39:1;8799:52;;8906:15;;;;8871:12;;;;8847:1;8765:9;8736:195;;;-1:-1:-1;;;;;;;8987:32:1;;;;8982:2;8967:18;;8960:60;-1:-1:-1;;;9051:3:1;9036:19;9029:35;8948:3;8090:980;-1:-1:-1;;;8090:980:1:o;9264:128::-;9304:3;9335:1;9331:6;9328:1;9325:13;9322:39;;;9341:18;;:::i;:::-;-1:-1:-1;9377:9:1;;9264:128::o;9397:204::-;9435:3;9471:4;9468:1;9464:12;9503:4;9500:1;9496:12;9538:3;9532:4;9528:14;9523:3;9520:23;9517:49;;;9546:18;;:::i;:::-;9582:13;;9397:204;-1:-1:-1;;;9397:204:1:o;9606:217::-;9646:1;9672;9662:132;;9716:10;9711:3;9707:20;9704:1;9697:31;9751:4;9748:1;9741:15;9779:4;9776:1;9769:15;9662:132;-1:-1:-1;9808:9:1;;9606:217::o;9828:168::-;9868:7;9934:1;9930;9926:6;9922:14;9919:1;9916:21;9911:1;9904:9;9897:17;9893:45;9890:71;;;9941:18;;:::i;:::-;-1:-1:-1;9981:9:1;;9828:168::o;10001:125::-;10041:4;10069:1;10066;10063:8;10060:34;;;10074:18;;:::i;:::-;-1:-1:-1;10111:9:1;;10001:125::o;10131:135::-;10170:3;-1:-1:-1;;10191:17:1;;10188:43;;;10211:18;;:::i;:::-;-1:-1:-1;10258:1:1;10247:13;;10131:135::o;10271:127::-;10332:10;10327:3;10323:20;10320:1;10313:31;10363:4;10360:1;10353:15;10387:4;10384:1;10377:15;10403:127;10464:10;10459:3;10455:20;10452:1;10445:31;10495:4;10492:1;10485:15;10519:4;10516:1;10509:15;10667:131;-1:-1:-1;;;;;10742:31:1;;10732:42;;10722:70;;10788:1;10785;10778:12;10722:70;10667:131;:::o

Swarm Source

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