ETH Price: $3,119.04 (+0.68%)
Gas: 5 Gwei

Token

Yin Yang (YNY)
 

Overview

Max Total Supply

100,000,000 YNY

Holders

53

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.123494304823029649 YNY

Value
$0.00
0xa36c0e3ec607942df64bdf8da9b537542286f1d4
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:
YinYang

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/*

               ,,ggddY888Ybbgg,,
          ,agd8""'   .d8888888888bga,
       ,gdP""'     .d88888888888888888g,
     ,dP"        ,d888888888888888888888b,
   ,dP"         ,8888888888888888888888888b,
  ,8"          ,8888888P"""88888888888888888,
 ,8'           I888888I    )88888888888888888,
,8'            `8888888booo8888888888888888888,
d'              `88888888888888888888888888888b
8                `"8888888888888888888888888888
8                  `"88888888888888888888888888
8                      `"8888888888888888888888
Y,                        `8888888888888888888P
`8,                         `88888888888888888'
 `8,              .oo.       `888888888888888'
  `8a             8888        88888888888888'
   `Yba           `""'       ,888888888888P'
     "Yba                   ,88888888888'
       `"Yba,             ,8888888888P"'                
          `"Y8baa,      ,d88888888P"'
               ``""YYba8888P888"'

                        $YNY

               In the mystical crypto realm, 
            a non-stop clash between the black Bull 
        and the white Bear invokes the cosmic dance of 
    Yin and Yang. Part of the tax will be sent to $YNY holders 
with reflections mechanism. Reflection embody the essence of yin and 
        yang by promoting balance and reciprocity.

Telegram: https://t.me/YinYangErc
Twitter: https://twitter.com/yinyangyny/
Website: https://ynycoin.com

*/

// SPDX-License-Identifier: Unlicensed

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

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

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

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract YinYang is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"Yin Yang";
    string private constant _symbol = "YNY";
    uint8 private constant _decimals = 18;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100_000_000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public _redisFeeOnBuy = 0;
    uint256 public _taxFeeOnBuy = 30;
    uint256 public _liquidityFeeOnBuy = 0;
    uint256 public _redisFeeOnSell = 0;
    uint256 public _taxFeeOnSell = 30;
    uint256 public _liquidityFeeOnSell = 0;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping (address => bool) public preTrader;
    address payable private _developmentAddress = payable(0x6A8295ef807ed7af4FBbd5DC8A66E9475B52105f);
    address payable private _marketingAddress = payable(0x5074565973Eb6bB9aB19Ef89A040a65534f173ab);
    address public constant deadAddress = address(0xdead);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = true;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 2_000_000 * 10**18;
    uint256 public _maxWalletSize = 2_000_000 * 10**18;
    uint256 public _swapTokensAtAmount = 30_000 * 10**18;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        preTrader[owner()] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner() && !preTrader[from] && !preTrader[to]) {

            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                if (contractTokenBalance >= _swapTokensAtAmount * 20) {
                    contractTokenBalance = _swapTokensAtAmount * 20;
                }

                // Halve the amount of liquidity tokens
                uint256 liquidityTokens = (contractTokenBalance * _liquidityFeeOnSell) / _taxFeeOnSell / 2;

                uint256 amountToSwapForETH = contractTokenBalance.sub(liquidityTokens);
        
                uint256 initialETHBalance = address(this).balance;
        
                swapTokensForEth(amountToSwapForETH);
        
                uint256 ethBalance = address(this).balance.sub(initialETHBalance);

                uint ethForMarketing = ethBalance.mul(_taxFeeOnSell.sub(_liquidityFeeOnSell)).div(_taxFeeOnSell);
        
                uint256 ethForLiquidity = ethBalance - ethForMarketing;

                if (liquidityTokens > 0 && ethForLiquidity > 0) {
                    addLiquidity(liquidityTokens, ethForLiquidity);
                }
                uint256 contractETHBalance = address(this).balance;

                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading() public onlyOwner {
        tradingOpen = true;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _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 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        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;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell, uint256 liquidityFeeOnBuy, uint256 liquidityFeeOnSell) public onlyOwner {
        require(redisFeeOnBuy + taxFeeOnBuy + liquidityFeeOnBuy <= 20, "TOKEN: Buy tax too high.");
        require(redisFeeOnSell + taxFeeOnSell + liquidityFeeOnSell <= 20, "TOKEN: Sell tax too high.");
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
        _liquidityFeeOnBuy = liquidityFeeOnBuy;
        _liquidityFeeOnSell = liquidityFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        require(maxTxAmount >= (_tTotal / 1000), "Cannot set maxTransactionAmount lower than 0.1%");
        _maxTxAmount = maxTxAmount;
    }

    //Set maximum wallet size
    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        require(maxWalletSize >= (_tTotal * 5 / 1000), "Cannot set maxWallet lower than 0.5%");
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadAddress,
            block.timestamp
        );
    }

    function allowPreTrading(address[] calldata accounts) public {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        for(uint256 i = 0; i < accounts.length; i++) {
            preTrader[accounts[i]] = true;
        }
    }

    function removePreTrading(address[] calldata accounts) public {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        for(uint256 i = 0; i < accounts.length; i++) {
            delete preTrader[accounts[i]];
        }
    }
}

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":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":"_liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_redisFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_redisFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"allowPreTrading","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removePreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"liquidityFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"liquidityFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001c6a52b7d2dcc80cd2e40000005f196200037e565b62000029905f196200039e565b6006555f6008819055601e6009819055600a829055600b829055600c819055600d829055600e829055600f819055601091909155601155601380546001600160a01b0319908116736a8295ef807ed7af4fbbd5dc8a66e9475b52105f1790915560148054909116735074565973eb6bb9ab19ef89a040a65534f173ab179055601680546201000160a01b62ffffff60a01b199091161790556a01a784379d99db42000000601781905560185569065a4da25d3016c00000601955348015620000ef575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654335f9081526002602090815260409182902092909255601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a015592600480830193928290030181865afa158015620001a9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001cf9190620003c4565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002419190620003c4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200028c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b29190620003c4565b601680546001600160a01b0319166001600160a01b039283161790555f805482168152601260209081526040808320805460ff1990811660019081179092558454861685526005845282852080548216831790553085528285208054821683179055601354861685528285208054821683179055601454909516845281842080549095161790935591516a52b7d2dcc80cd2e4000000815233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620003f3565b5f826200039957634e487b7160e01b5f52601260045260245ffd5b500690565b81810381811115620003be57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215620003d5575f80fd5b81516001600160a01b0381168114620003ec575f80fd5b9392505050565b6120e980620004015f395ff3fe60806040526004361061020a575f3560e01c80637d1db4a511610113578063bd9a3b6d1161009d578063c492f0461161006d578063c492f046146105b9578063d52dfc14146105d8578063dd62ed3e146105ed578063ea1644d514610631578063f2fde38b14610650575f80fd5b8063bd9a3b6d14610543578063bdd795ef14610562578063bf5976d314610590578063c3c8cd80146105a5575f80fd5b806395d89b41116100e357806395d89b41146104a657806398a5c315146104d1578063a01abe5c146104f0578063a9059cbb14610505578063b5a6522314610524575f80fd5b80637d1db4a51461044b5780638199040e146104605780638da5cb5b146104755780638f9a55c014610491575f80fd5b80633c0a73ae116101945780636fc3eaec116101645780636fc3eaec146103d157806370a08231146103e5578063715018a61461040457806374010ece146104185780637c519ffb14610437575f80fd5b80633c0a73ae1461035d57806349bd5a5e1461037257806367aadb7e146103915780636d8aa8f8146103b2575f80fd5b806323b872dd116101da57806323b872dd146102e457806327c8f835146103035780632fd689e314610318578063313ce5671461032d57806331cc43bd14610348575f80fd5b806306fdde0314610215578063095ea7b3146102575780631694505e1461028657806318160ddd146102bd575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b5060408051808201909152600881526759696e2059616e6760c01b60208201525b60405161024e9190611c92565b60405180910390f35b348015610262575f80fd5b50610276610271366004611cf1565b61066f565b604051901515815260200161024e565b348015610291575f80fd5b506015546102a5906001600160a01b031681565b6040516001600160a01b03909116815260200161024e565b3480156102c8575f80fd5b506a52b7d2dcc80cd2e40000005b60405190815260200161024e565b3480156102ef575f80fd5b506102766102fe366004611d1b565b610685565b34801561030e575f80fd5b506102a561dead81565b348015610323575f80fd5b506102d660195481565b348015610338575f80fd5b506040516012815260200161024e565b348015610353575f80fd5b506102d660085481565b348015610368575f80fd5b506102d6600a5481565b34801561037d575f80fd5b506016546102a5906001600160a01b031681565b34801561039c575f80fd5b506103b06103ab366004611da1565b6106ec565b005b3480156103bd575f80fd5b506103b06103cc366004611df4565b610794565b3480156103dc575f80fd5b506103b06107e4565b3480156103f0575f80fd5b506102d66103ff366004611e0d565b61082e565b34801561040f575f80fd5b506103b061084f565b348015610423575f80fd5b506103b0610432366004611e28565b6108c0565b348015610442575f80fd5b506103b061096c565b348015610456575f80fd5b506102d660175481565b34801561046b575f80fd5b506102d6600c5481565b348015610480575f80fd5b505f546001600160a01b03166102a5565b34801561049c575f80fd5b506102d660185481565b3480156104b1575f80fd5b50604080518082019091526003815262594e5960e81b6020820152610241565b3480156104dc575f80fd5b506103b06104eb366004611e28565b6109aa565b3480156104fb575f80fd5b506102d6600b5481565b348015610510575f80fd5b5061027661051f366004611cf1565b6109d8565b34801561052f575f80fd5b506103b061053e366004611da1565b6109e4565b34801561054e575f80fd5b506103b061055d366004611e3f565b610a90565b34801561056d575f80fd5b5061027661057c366004611e0d565b60126020525f908152604090205460ff1681565b34801561059b575f80fd5b506102d660095481565b3480156105b0575f80fd5b506103b0610ba0565b3480156105c4575f80fd5b506103b06105d3366004611e7e565b610bf2565b3480156105e3575f80fd5b506102d6600d5481565b3480156105f8575f80fd5b506102d6610607366004611ece565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561063c575f80fd5b506103b061064b366004611e28565b610c8f565b34801561065b575f80fd5b506103b061066a366004611e0d565b610d3b565b5f61067b338484610e22565b5060015b92915050565b5f610691848484610f45565b6106e284336106dd8560405180606001604052806028815260200161208c602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906114eb565b610e22565b5060019392505050565b6013546001600160a01b0316336001600160a01b0316148061072157506014546001600160a01b0316336001600160a01b0316145b610729575f80fd5b5f5b8181101561078f5760125f84848481811061074857610748611f05565b905060200201602081019061075d9190611e0d565b6001600160a01b0316815260208101919091526040015f20805460ff191690558061078781611f2d565b91505061072b565b505050565b5f546001600160a01b031633146107c65760405162461bcd60e51b81526004016107bd90611f45565b60405180910390fd5b60168054911515600160b01b0260ff60b01b19909216919091179055565b6013546001600160a01b0316336001600160a01b0316148061081957506014546001600160a01b0316336001600160a01b0316145b610821575f80fd5b4761082b81611523565b50565b6001600160a01b0381165f9081526002602052604081205461067f9061155e565b5f546001600160a01b031633146108785760405162461bcd60e51b81526004016107bd90611f45565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108e95760405162461bcd60e51b81526004016107bd90611f45565b6109006103e86a52b7d2dcc80cd2e4000000611f7a565b8110156109675760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b60648201526084016107bd565b601755565b5f546001600160a01b031633146109955760405162461bcd60e51b81526004016107bd90611f45565b6016805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146109d35760405162461bcd60e51b81526004016107bd90611f45565b601955565b5f61067b338484610f45565b6013546001600160a01b0316336001600160a01b03161480610a1957506014546001600160a01b0316336001600160a01b0316145b610a21575f80fd5b5f5b8181101561078f57600160125f858585818110610a4257610a42611f05565b9050602002016020810190610a579190611e0d565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610a8881611f2d565b915050610a23565b5f546001600160a01b03163314610ab95760405162461bcd60e51b81526004016107bd90611f45565b601482610ac68689611f99565b610ad09190611f99565b1115610b1e5760405162461bcd60e51b815260206004820152601860248201527f544f4b454e3a204275792074617820746f6f20686967682e000000000000000060448201526064016107bd565b601481610b2b8588611f99565b610b359190611f99565b1115610b835760405162461bcd60e51b815260206004820152601960248201527f544f4b454e3a2053656c6c2074617820746f6f20686967682e0000000000000060448201526064016107bd565b600895909555600b93909355600991909155600c55600a55600d55565b6013546001600160a01b0316336001600160a01b03161480610bd557506014546001600160a01b0316336001600160a01b0316145b610bdd575f80fd5b5f610be73061082e565b905061082b816115e0565b5f546001600160a01b03163314610c1b5760405162461bcd60e51b81526004016107bd90611f45565b5f5b82811015610c89578160055f868685818110610c3b57610c3b611f05565b9050602002016020810190610c509190611e0d565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610c8181611f2d565b915050610c1d565b50505050565b5f546001600160a01b03163314610cb85760405162461bcd60e51b81526004016107bd90611f45565b6103e8610cd16a52b7d2dcc80cd2e40000006005611fac565b610cdb9190611f7a565b811015610d365760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b60648201526084016107bd565b601855565b5f546001600160a01b03163314610d645760405162461bcd60e51b81526004016107bd90611f45565b6001600160a01b038116610dc95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107bd565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e845760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107bd565b6001600160a01b038216610ee55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107bd565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fa95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107bd565b6001600160a01b03821661100b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107bd565b5f811161106c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107bd565b5f546001600160a01b0384811691161480159061109657505f546001600160a01b03838116911614155b80156110ba57506001600160a01b0383165f9081526012602052604090205460ff16155b80156110de57506001600160a01b0382165f9081526012602052604090205460ff16155b156113e757601654600160a01b900460ff16611181576001600160a01b0383165f9081526012602052604090205460ff166111815760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016107bd565b6017548111156111d35760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016107bd565b6016546001600160a01b0383811691161461125857601854816111f58461082e565b6111ff9190611f99565b106112585760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016107bd565b5f6112623061082e565b601954909150811080159081906112835750601654600160a81b900460ff16155b801561129d57506016546001600160a01b03868116911614155b80156112b25750601654600160b01b900460ff165b80156112d657506001600160a01b0385165f9081526005602052604090205460ff16155b80156112fa57506001600160a01b0384165f9081526005602052604090205460ff16155b156113e45760195461130d906014611fac565b821061132457601954611321906014611fac565b91505b5f6002600c54600d54856113389190611fac565b6113429190611f7a565b61134c9190611f7a565b90505f6113598483611750565b905047611365826115e0565b5f6113704783611750565b90505f6113a0600c5461139a611393600d54600c5461175090919063ffffffff16565b8590611791565b9061180f565b90505f6113ad8284611fc3565b90505f861180156113bd57505f81115b156113cc576113cc8682611850565b4780156113dc576113dc47611523565b505050505050505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061142757506001600160a01b0383165f9081526005602052604090205460ff165b8061145957506016546001600160a01b0385811691161480159061145957506016546001600160a01b03848116911614155b1561146557505f6114df565b6016546001600160a01b03858116911614801561149057506015546001600160a01b03848116911614155b156114a257600854600e55600954600f555b6016546001600160a01b0384811691161480156114cd57506015546001600160a01b03858116911614155b156114df57600b54600e55600c54600f555b610c89848484846118ff565b5f818484111561150e5760405162461bcd60e51b81526004016107bd9190611c92565b505f61151a8486611fc3565b95945050505050565b6014546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561155a573d5f803e3d5ffd5b5050565b5f6006548211156115c45760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107bd565b5f6115cd61192d565b90506115d9838261180f565b9392505050565b6016805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061162657611626611f05565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561167d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116a19190611fd6565b816001815181106116b4576116b4611f05565b6001600160a01b0392831660209182029290920101526015546116da9130911684610e22565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906117129085905f90869030904290600401611ff1565b5f604051808303815f87803b158015611729575f80fd5b505af115801561173b573d5f803e3d5ffd5b50506016805460ff60a81b1916905550505050565b5f6115d983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114eb565b5f825f036117a057505f61067f565b5f6117ab8385611fac565b9050826117b88583611f7a565b146115d95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107bd565b5f6115d983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061194e565b6015546118689030906001600160a01b031684610e22565b60155460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156118d3573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118f89190612060565b5050505050565b8061190c5761190c61197a565b6119178484846119a7565b80610c8957610c89601054600e55601154600f55565b5f805f611938611a98565b9092509050611947828261180f565b9250505090565b5f818361196e5760405162461bcd60e51b81526004016107bd9190611c92565b505f61151a8486611f7a565b600e5415801561198a5750600f54155b1561199157565b600e8054601055600f80546011555f9182905555565b5f805f805f806119b687611add565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506119e79087611750565b6001600160a01b03808b165f9081526002602052604080822093909355908a1681522054611a159086611b32565b6001600160a01b0389165f90815260026020526040902055611a3681611b90565b611a408483611bd6565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611a8591815260200190565b60405180910390a3505050505050505050565b6006545f9081906a52b7d2dcc80cd2e4000000611ab5828261180f565b821015611ad4575050600654926a52b7d2dcc80cd2e400000092509050565b90939092509050565b5f805f805f805f805f611af58a600e54600f54611bfa565b9250925092505f611b0461192d565b90505f805f611b158e878787611c46565b919e509c509a509598509396509194505050505091939550919395565b5f80611b3e8385611f99565b9050838110156115d95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107bd565b5f611b9961192d565b90505f611ba68383611791565b305f90815260026020526040902054909150611bc29082611b32565b305f90815260026020526040902055505050565b600654611be39083611750565b600655600754611bf39082611b32565b6007555050565b5f808080611c0d606461139a8989611791565b90505f611c1f606461139a8a89611791565b90505f611c3682611c308b86611750565b90611750565b9992985090965090945050505050565b5f808080611c548886611791565b90505f611c618887611791565b90505f611c6e8888611791565b90505f611c7f82611c308686611750565b939b939a50919850919650505050505050565b5f6020808352835180828501525f5b81811015611cbd57858101830151858201604001528201611ca1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461082b575f80fd5b5f8060408385031215611d02575f80fd5b8235611d0d81611cdd565b946020939093013593505050565b5f805f60608486031215611d2d575f80fd5b8335611d3881611cdd565b92506020840135611d4881611cdd565b929592945050506040919091013590565b5f8083601f840112611d69575f80fd5b50813567ffffffffffffffff811115611d80575f80fd5b6020830191508360208260051b8501011115611d9a575f80fd5b9250929050565b5f8060208385031215611db2575f80fd5b823567ffffffffffffffff811115611dc8575f80fd5b611dd485828601611d59565b90969095509350505050565b80358015158114611def575f80fd5b919050565b5f60208284031215611e04575f80fd5b6115d982611de0565b5f60208284031215611e1d575f80fd5b81356115d981611cdd565b5f60208284031215611e38575f80fd5b5035919050565b5f805f805f8060c08789031215611e54575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f60408486031215611e90575f80fd5b833567ffffffffffffffff811115611ea6575f80fd5b611eb286828701611d59565b9094509250611ec5905060208501611de0565b90509250925092565b5f8060408385031215611edf575f80fd5b8235611eea81611cdd565b91506020830135611efa81611cdd565b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611f3e57611f3e611f19565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f82611f9457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561067f5761067f611f19565b808202811582820484141761067f5761067f611f19565b8181038181111561067f5761067f611f19565b5f60208284031215611fe6575f80fd5b81516115d981611cdd565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561203f5784516001600160a01b03168352938301939183019160010161201a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612072575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b321c7bb898ff9e5a5e007ce82ab99c78259eb33fd399620fa84fca622789da464736f6c63430008140033

Deployed Bytecode

0x60806040526004361061020a575f3560e01c80637d1db4a511610113578063bd9a3b6d1161009d578063c492f0461161006d578063c492f046146105b9578063d52dfc14146105d8578063dd62ed3e146105ed578063ea1644d514610631578063f2fde38b14610650575f80fd5b8063bd9a3b6d14610543578063bdd795ef14610562578063bf5976d314610590578063c3c8cd80146105a5575f80fd5b806395d89b41116100e357806395d89b41146104a657806398a5c315146104d1578063a01abe5c146104f0578063a9059cbb14610505578063b5a6522314610524575f80fd5b80637d1db4a51461044b5780638199040e146104605780638da5cb5b146104755780638f9a55c014610491575f80fd5b80633c0a73ae116101945780636fc3eaec116101645780636fc3eaec146103d157806370a08231146103e5578063715018a61461040457806374010ece146104185780637c519ffb14610437575f80fd5b80633c0a73ae1461035d57806349bd5a5e1461037257806367aadb7e146103915780636d8aa8f8146103b2575f80fd5b806323b872dd116101da57806323b872dd146102e457806327c8f835146103035780632fd689e314610318578063313ce5671461032d57806331cc43bd14610348575f80fd5b806306fdde0314610215578063095ea7b3146102575780631694505e1461028657806318160ddd146102bd575f80fd5b3661021157005b5f80fd5b348015610220575f80fd5b5060408051808201909152600881526759696e2059616e6760c01b60208201525b60405161024e9190611c92565b60405180910390f35b348015610262575f80fd5b50610276610271366004611cf1565b61066f565b604051901515815260200161024e565b348015610291575f80fd5b506015546102a5906001600160a01b031681565b6040516001600160a01b03909116815260200161024e565b3480156102c8575f80fd5b506a52b7d2dcc80cd2e40000005b60405190815260200161024e565b3480156102ef575f80fd5b506102766102fe366004611d1b565b610685565b34801561030e575f80fd5b506102a561dead81565b348015610323575f80fd5b506102d660195481565b348015610338575f80fd5b506040516012815260200161024e565b348015610353575f80fd5b506102d660085481565b348015610368575f80fd5b506102d6600a5481565b34801561037d575f80fd5b506016546102a5906001600160a01b031681565b34801561039c575f80fd5b506103b06103ab366004611da1565b6106ec565b005b3480156103bd575f80fd5b506103b06103cc366004611df4565b610794565b3480156103dc575f80fd5b506103b06107e4565b3480156103f0575f80fd5b506102d66103ff366004611e0d565b61082e565b34801561040f575f80fd5b506103b061084f565b348015610423575f80fd5b506103b0610432366004611e28565b6108c0565b348015610442575f80fd5b506103b061096c565b348015610456575f80fd5b506102d660175481565b34801561046b575f80fd5b506102d6600c5481565b348015610480575f80fd5b505f546001600160a01b03166102a5565b34801561049c575f80fd5b506102d660185481565b3480156104b1575f80fd5b50604080518082019091526003815262594e5960e81b6020820152610241565b3480156104dc575f80fd5b506103b06104eb366004611e28565b6109aa565b3480156104fb575f80fd5b506102d6600b5481565b348015610510575f80fd5b5061027661051f366004611cf1565b6109d8565b34801561052f575f80fd5b506103b061053e366004611da1565b6109e4565b34801561054e575f80fd5b506103b061055d366004611e3f565b610a90565b34801561056d575f80fd5b5061027661057c366004611e0d565b60126020525f908152604090205460ff1681565b34801561059b575f80fd5b506102d660095481565b3480156105b0575f80fd5b506103b0610ba0565b3480156105c4575f80fd5b506103b06105d3366004611e7e565b610bf2565b3480156105e3575f80fd5b506102d6600d5481565b3480156105f8575f80fd5b506102d6610607366004611ece565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561063c575f80fd5b506103b061064b366004611e28565b610c8f565b34801561065b575f80fd5b506103b061066a366004611e0d565b610d3b565b5f61067b338484610e22565b5060015b92915050565b5f610691848484610f45565b6106e284336106dd8560405180606001604052806028815260200161208c602891396001600160a01b038a165f90815260046020908152604080832033845290915290205491906114eb565b610e22565b5060019392505050565b6013546001600160a01b0316336001600160a01b0316148061072157506014546001600160a01b0316336001600160a01b0316145b610729575f80fd5b5f5b8181101561078f5760125f84848481811061074857610748611f05565b905060200201602081019061075d9190611e0d565b6001600160a01b0316815260208101919091526040015f20805460ff191690558061078781611f2d565b91505061072b565b505050565b5f546001600160a01b031633146107c65760405162461bcd60e51b81526004016107bd90611f45565b60405180910390fd5b60168054911515600160b01b0260ff60b01b19909216919091179055565b6013546001600160a01b0316336001600160a01b0316148061081957506014546001600160a01b0316336001600160a01b0316145b610821575f80fd5b4761082b81611523565b50565b6001600160a01b0381165f9081526002602052604081205461067f9061155e565b5f546001600160a01b031633146108785760405162461bcd60e51b81526004016107bd90611f45565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146108e95760405162461bcd60e51b81526004016107bd90611f45565b6109006103e86a52b7d2dcc80cd2e4000000611f7a565b8110156109675760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b60648201526084016107bd565b601755565b5f546001600160a01b031633146109955760405162461bcd60e51b81526004016107bd90611f45565b6016805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146109d35760405162461bcd60e51b81526004016107bd90611f45565b601955565b5f61067b338484610f45565b6013546001600160a01b0316336001600160a01b03161480610a1957506014546001600160a01b0316336001600160a01b0316145b610a21575f80fd5b5f5b8181101561078f57600160125f858585818110610a4257610a42611f05565b9050602002016020810190610a579190611e0d565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610a8881611f2d565b915050610a23565b5f546001600160a01b03163314610ab95760405162461bcd60e51b81526004016107bd90611f45565b601482610ac68689611f99565b610ad09190611f99565b1115610b1e5760405162461bcd60e51b815260206004820152601860248201527f544f4b454e3a204275792074617820746f6f20686967682e000000000000000060448201526064016107bd565b601481610b2b8588611f99565b610b359190611f99565b1115610b835760405162461bcd60e51b815260206004820152601960248201527f544f4b454e3a2053656c6c2074617820746f6f20686967682e0000000000000060448201526064016107bd565b600895909555600b93909355600991909155600c55600a55600d55565b6013546001600160a01b0316336001600160a01b03161480610bd557506014546001600160a01b0316336001600160a01b0316145b610bdd575f80fd5b5f610be73061082e565b905061082b816115e0565b5f546001600160a01b03163314610c1b5760405162461bcd60e51b81526004016107bd90611f45565b5f5b82811015610c89578160055f868685818110610c3b57610c3b611f05565b9050602002016020810190610c509190611e0d565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610c8181611f2d565b915050610c1d565b50505050565b5f546001600160a01b03163314610cb85760405162461bcd60e51b81526004016107bd90611f45565b6103e8610cd16a52b7d2dcc80cd2e40000006005611fac565b610cdb9190611f7a565b811015610d365760405162461bcd60e51b8152602060048201526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b60648201526084016107bd565b601855565b5f546001600160a01b03163314610d645760405162461bcd60e51b81526004016107bd90611f45565b6001600160a01b038116610dc95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107bd565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e845760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107bd565b6001600160a01b038216610ee55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107bd565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fa95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107bd565b6001600160a01b03821661100b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107bd565b5f811161106c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107bd565b5f546001600160a01b0384811691161480159061109657505f546001600160a01b03838116911614155b80156110ba57506001600160a01b0383165f9081526012602052604090205460ff16155b80156110de57506001600160a01b0382165f9081526012602052604090205460ff16155b156113e757601654600160a01b900460ff16611181576001600160a01b0383165f9081526012602052604090205460ff166111815760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016107bd565b6017548111156111d35760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016107bd565b6016546001600160a01b0383811691161461125857601854816111f58461082e565b6111ff9190611f99565b106112585760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016107bd565b5f6112623061082e565b601954909150811080159081906112835750601654600160a81b900460ff16155b801561129d57506016546001600160a01b03868116911614155b80156112b25750601654600160b01b900460ff165b80156112d657506001600160a01b0385165f9081526005602052604090205460ff16155b80156112fa57506001600160a01b0384165f9081526005602052604090205460ff16155b156113e45760195461130d906014611fac565b821061132457601954611321906014611fac565b91505b5f6002600c54600d54856113389190611fac565b6113429190611f7a565b61134c9190611f7a565b90505f6113598483611750565b905047611365826115e0565b5f6113704783611750565b90505f6113a0600c5461139a611393600d54600c5461175090919063ffffffff16565b8590611791565b9061180f565b90505f6113ad8284611fc3565b90505f861180156113bd57505f81115b156113cc576113cc8682611850565b4780156113dc576113dc47611523565b505050505050505b50505b6001600160a01b0383165f9081526005602052604090205460019060ff168061142757506001600160a01b0383165f9081526005602052604090205460ff165b8061145957506016546001600160a01b0385811691161480159061145957506016546001600160a01b03848116911614155b1561146557505f6114df565b6016546001600160a01b03858116911614801561149057506015546001600160a01b03848116911614155b156114a257600854600e55600954600f555b6016546001600160a01b0384811691161480156114cd57506015546001600160a01b03858116911614155b156114df57600b54600e55600c54600f555b610c89848484846118ff565b5f818484111561150e5760405162461bcd60e51b81526004016107bd9190611c92565b505f61151a8486611fc3565b95945050505050565b6014546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561155a573d5f803e3d5ffd5b5050565b5f6006548211156115c45760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107bd565b5f6115cd61192d565b90506115d9838261180f565b9392505050565b6016805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061162657611626611f05565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561167d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116a19190611fd6565b816001815181106116b4576116b4611f05565b6001600160a01b0392831660209182029290920101526015546116da9130911684610e22565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac947906117129085905f90869030904290600401611ff1565b5f604051808303815f87803b158015611729575f80fd5b505af115801561173b573d5f803e3d5ffd5b50506016805460ff60a81b1916905550505050565b5f6115d983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114eb565b5f825f036117a057505f61067f565b5f6117ab8385611fac565b9050826117b88583611f7a565b146115d95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107bd565b5f6115d983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061194e565b6015546118689030906001600160a01b031684610e22565b60155460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156118d3573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906118f89190612060565b5050505050565b8061190c5761190c61197a565b6119178484846119a7565b80610c8957610c89601054600e55601154600f55565b5f805f611938611a98565b9092509050611947828261180f565b9250505090565b5f818361196e5760405162461bcd60e51b81526004016107bd9190611c92565b505f61151a8486611f7a565b600e5415801561198a5750600f54155b1561199157565b600e8054601055600f80546011555f9182905555565b5f805f805f806119b687611add565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506119e79087611750565b6001600160a01b03808b165f9081526002602052604080822093909355908a1681522054611a159086611b32565b6001600160a01b0389165f90815260026020526040902055611a3681611b90565b611a408483611bd6565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611a8591815260200190565b60405180910390a3505050505050505050565b6006545f9081906a52b7d2dcc80cd2e4000000611ab5828261180f565b821015611ad4575050600654926a52b7d2dcc80cd2e400000092509050565b90939092509050565b5f805f805f805f805f611af58a600e54600f54611bfa565b9250925092505f611b0461192d565b90505f805f611b158e878787611c46565b919e509c509a509598509396509194505050505091939550919395565b5f80611b3e8385611f99565b9050838110156115d95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107bd565b5f611b9961192d565b90505f611ba68383611791565b305f90815260026020526040902054909150611bc29082611b32565b305f90815260026020526040902055505050565b600654611be39083611750565b600655600754611bf39082611b32565b6007555050565b5f808080611c0d606461139a8989611791565b90505f611c1f606461139a8a89611791565b90505f611c3682611c308b86611750565b90611750565b9992985090965090945050505050565b5f808080611c548886611791565b90505f611c618887611791565b90505f611c6e8888611791565b90505f611c7f82611c308686611750565b939b939a50919850919650505050505050565b5f6020808352835180828501525f5b81811015611cbd57858101830151858201604001528201611ca1565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461082b575f80fd5b5f8060408385031215611d02575f80fd5b8235611d0d81611cdd565b946020939093013593505050565b5f805f60608486031215611d2d575f80fd5b8335611d3881611cdd565b92506020840135611d4881611cdd565b929592945050506040919091013590565b5f8083601f840112611d69575f80fd5b50813567ffffffffffffffff811115611d80575f80fd5b6020830191508360208260051b8501011115611d9a575f80fd5b9250929050565b5f8060208385031215611db2575f80fd5b823567ffffffffffffffff811115611dc8575f80fd5b611dd485828601611d59565b90969095509350505050565b80358015158114611def575f80fd5b919050565b5f60208284031215611e04575f80fd5b6115d982611de0565b5f60208284031215611e1d575f80fd5b81356115d981611cdd565b5f60208284031215611e38575f80fd5b5035919050565b5f805f805f8060c08789031215611e54575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f60408486031215611e90575f80fd5b833567ffffffffffffffff811115611ea6575f80fd5b611eb286828701611d59565b9094509250611ec5905060208501611de0565b90509250925092565b5f8060408385031215611edf575f80fd5b8235611eea81611cdd565b91506020830135611efa81611cdd565b809150509250929050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611f3e57611f3e611f19565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f82611f9457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561067f5761067f611f19565b808202811582820484141761067f5761067f611f19565b8181038181111561067f5761067f611f19565b5f60208284031215611fe6575f80fd5b81516115d981611cdd565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561203f5784516001600160a01b03168352938301939183019160010161201a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215612072575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b321c7bb898ff9e5a5e007ce82ab99c78259eb33fd399620fa84fca622789da464736f6c63430008140033

Deployed Bytecode Sourcemap

5531:15799:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8187:83;;;;;;;;;;-1:-1:-1;8257:5:0;;;;;;;;;;;;-1:-1:-1;;;8257:5:0;;;;8187:83;;;;;;;:::i;:::-;;;;;;;;9112:193;;;;;;;;;;-1:-1:-1;9112:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9112:193:0;1023:187:1;6988:41:0;;;;;;;;;;-1:-1:-1;6988:41:0;;;;-1:-1:-1;;;;;6988:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;6988:41:0;1215:229:1;8464:95:0;;;;;;;;;;-1:-1:-1;6084:20:0;8464:95;;;1595:25:1;;;1583:2;1568:18;8464:95:0;1449:177:1;9313:446:0;;;;;;;;;;-1:-1:-1;9313:446:0;;;;;:::i;:::-;;:::i;6926:53::-;;;;;;;;;;;;6972:6;6926:53;;7297:52;;;;;;;;;;;;;;;;8373:83;;;;;;;;;;-1:-1:-1;8373:83:0;;5757:2;2442:36:1;;2430:2;2415:18;8373:83:0;2300:184:1;6200:33:0;;;;;;;;;;;;;;;;6279:37;;;;;;;;;;;;;;;;7036:28;;;;;;;;;;-1:-1:-1;7036:28:0;;;;-1:-1:-1;;;;;7036:28:0;;;21054:273;;;;;;;;;;-1:-1:-1;21054:273:0;;;;;:::i;:::-;;:::i;:::-;;19398:101;;;;;;;;;;-1:-1:-1;19398:101:0;;;;;:::i;:::-;;:::i;14862:235::-;;;;;;;;;;;;;:::i;8567:138::-;;;;;;;;;;-1:-1:-1;8567:138:0;;;;;:::i;:::-;;:::i;3018:148::-;;;;;;;;;;;;;:::i;19538:210::-;;;;;;;;;;-1:-1:-1;19538:210:0;;;;;:::i;:::-;;:::i;14534:76::-;;;;;;;;;;;;;:::i;7185:48::-;;;;;;;;;;;;;;;;6364:33;;;;;;;;;;;;;;;;2804:79;;;;;;;;;;-1:-1:-1;2842:7:0;2869:6;-1:-1:-1;;;;;2869:6:0;2804:79;;7240:50;;;;;;;;;;;;;;;;8278:87;;;;;;;;;;-1:-1:-1;8350:7:0;;;;;;;;;;;;-1:-1:-1;;;8350:7:0;;;;8278:87;;19207:139;;;;;;;;;;-1:-1:-1;19207:139:0;;;;;:::i;:::-;;:::i;6323:34::-;;;;;;;;;;;;;;;;8713:199;;;;;;;;;;-1:-1:-1;8713:199:0;;;;;:::i;:::-;;:::i;20774:272::-;;;;;;;;;;-1:-1:-1;20774:272:0;;;;;:::i;:::-;;:::i;18503:652::-;;;;;;;;;;-1:-1:-1;18503:652:0;;;;;:::i;:::-;;:::i;6671:42::-;;;;;;;;;;-1:-1:-1;6671:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6240:32;;;;;;;;;;;;;;;;14618:236;;;;;;;;;;;;;:::i;20007:234::-;;;;;;;;;;-1:-1:-1;20007:234:0;;;;;:::i;:::-;;:::i;6404:38::-;;;;;;;;;;;;;;;;8920:184;;;;;;;;;;-1:-1:-1;8920:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;9069:18:0;;;9037:7;9069:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8920:184;19787:212;;;;;;;;;;-1:-1:-1;19787:212:0;;;;;:::i;:::-;;:::i;3174:244::-;;;;;;;;;;-1:-1:-1;3174:244:0;;;;;:::i;:::-;;:::i;9112:193::-;9214:4;9236:39;1643:10;9259:7;9268:6;9236:8;:39::i;:::-;-1:-1:-1;9293:4:0;9112:193;;;;;:::o;9313:446::-;9445:4;9462:36;9472:6;9480:9;9491:6;9462:9;:36::i;:::-;9509:220;9532:6;1643:10;9580:138;9636:6;9580:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9580:19:0;;;;;;:11;:19;;;;;;;;1643:10;9580:33;;;;;;;;;;:37;:138::i;:::-;9509:8;:220::i;:::-;-1:-1:-1;9747:4:0;9313:446;;;;;:::o;21054:273::-;21151:19;;-1:-1:-1;;;;;21151:19:0;1643:10;-1:-1:-1;;;;;21135:35:0;;:72;;;-1:-1:-1;21190:17:0;;-1:-1:-1;;;;;21190:17:0;1643:10;-1:-1:-1;;;;;21174:33:0;;21135:72;21127:81;;;;;;21223:9;21219:101;21238:19;;;21219:101;;;21286:9;:22;21296:8;;21305:1;21296:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21286:22:0;;;;;;;;;;;;-1:-1:-1;21286:22:0;21279:29;;-1:-1:-1;;21279:29:0;;;21259:3;;;;:::i;:::-;;;;21219:101;;;;21054:273;;:::o;19398:101::-;2931:6;;-1:-1:-1;;;;;2931:6:0;1643:10;2931:22;2923:67;;;;-1:-1:-1;;;2923:67:0;;;;;;;:::i;:::-;;;;;;;;;19465:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;19465:26:0::1;-1:-1:-1::0;;;;19465:26:0;;::::1;::::0;;;::::1;::::0;;19398:101::o;14862:235::-;14928:19;;-1:-1:-1;;;;;14928:19:0;1643:10;-1:-1:-1;;;;;14912:35:0;;:72;;;-1:-1:-1;14967:17:0;;-1:-1:-1;;;;;14967:17:0;1643:10;-1:-1:-1;;;;;14951:33:0;;14912:72;14904:81;;;;;;15025:21;15057:32;15025:21;15057:12;:32::i;:::-;14893:204;14862:235::o;8567:138::-;-1:-1:-1;;;;;8680:16:0;;8633:7;8680:16;;;:7;:16;;;;;;8660:37;;:19;:37::i;3018:148::-;2931:6;;-1:-1:-1;;;;;2931:6:0;1643:10;2931:22;2923:67;;;;-1:-1:-1;;;2923:67:0;;;;;;;:::i;:::-;3125:1:::1;3109:6:::0;;3088:40:::1;::::0;-1:-1:-1;;;;;3109:6:0;;::::1;::::0;3088:40:::1;::::0;3125:1;;3088:40:::1;3156:1;3139:19:::0;;-1:-1:-1;;;;;;3139:19:0::1;::::0;;3018:148::o;19538:210::-;2931:6;;-1:-1:-1;;;;;2931:6:0;1643:10;2931:22;2923:67;;;;-1:-1:-1;;;2923:67:0;;;;;;;:::i;:::-;19636:14:::1;19646:4;6084:20;19636:14;:::i;:::-;19620:11;:31;;19612:91;;;::::0;-1:-1:-1;;;19612:91:0;;6710:2:1;19612:91:0::1;::::0;::::1;6692:21:1::0;6749:2;6729:18;;;6722:30;6788:34;6768:18;;;6761:62;-1:-1:-1;;;6839:18:1;;;6832:45;6894:19;;19612:91:0::1;6508:411:1::0;19612:91:0::1;19714:12;:26:::0;19538:210::o;14534:76::-;2931:6;;-1:-1:-1;;;;;2931:6:0;1643:10;2931:22;2923:67;;;;-1:-1:-1;;;2923:67:0;;;;;;;:::i;:::-;14584:11:::1;:18:::0;;-1:-1:-1;;;;14584:18:0::1;-1:-1:-1::0;;;14584:18:0::1;::::0;;14534:76::o;19207:139::-;2931:6;;-1:-1:-1;;;;;2931:6:0;1643:10;2931:22;2923:67;;;;-1:-1:-1;;;2923:67:0;;;;;;;:::i;:::-;19298:19:::1;:40:::0;19207:139::o;8713:199::-;8818:4;8840:42;1643:10;8864:9;8875:6;8840:9;:42::i;20774:272::-;20870:19;;-1:-1:-1;;;;;20870:19:0;1643:10;-1:-1:-1;;;;;20854:35:0;;:72;;;-1:-1:-1;20909:17:0;;-1:-1:-1;;;;;20909:17:0;1643:10;-1:-1:-1;;;;;20893:33:0;;20854:72;20846:81;;;;;;20942:9;20938:101;20957:19;;;20938:101;;;21023:4;20998:9;:22;21008:8;;21017:1;21008:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20998:22:0;;;;;;;;;;;;-1:-1:-1;20998:22:0;:29;;-1:-1:-1;;20998:29:0;;;;;;;;;;20978:3;;;;:::i;:::-;;;;20938:101;;18503:652;2931:6;;-1:-1:-1;;;;;2931:6:0;1643:10;2931:22;2923:67;;;;-1:-1:-1;;;2923:67:0;;;;;;;:::i;:::-;18751:2:::1;18730:17:::0;18700:27:::1;18716:11:::0;18700:13;:27:::1;:::i;:::-;:47;;;;:::i;:::-;:53;;18692:90;;;::::0;-1:-1:-1;;;18692:90:0;;7256:2:1;18692:90:0::1;::::0;::::1;7238:21:1::0;7295:2;7275:18;;;7268:30;7334:26;7314:18;;;7307:54;7378:18;;18692:90:0::1;7054:348:1::0;18692:90:0::1;18855:2;18833:18:::0;18801:29:::1;18818:12:::0;18801:14;:29:::1;:::i;:::-;:50;;;;:::i;:::-;:56;;18793:94;;;::::0;-1:-1:-1;;;18793:94:0;;7609:2:1;18793:94:0::1;::::0;::::1;7591:21:1::0;7648:2;7628:18;;;7621:30;7687:27;7667:18;;;7660:55;7732:18;;18793:94:0::1;7407:349:1::0;18793:94:0::1;18898:14;:30:::0;;;;18939:15:::1;:32:::0;;;;18982:12:::1;:26:::0;;;;19019:13:::1;:28:::0;19058:18:::1;:38:::0;19107:19:::1;:40:::0;18503:652::o;14618:236::-;14684:19;;-1:-1:-1;;;;;14684:19:0;1643:10;-1:-1:-1;;;;;14668:35:0;;:72;;;-1:-1:-1;14723:17:0;;-1:-1:-1;;;;;14723:17:0;1643:10;-1:-1:-1;;;;;14707:33:0;;14668:72;14660:81;;;;;;14752:23;14778:24;14796:4;14778:9;:24::i;:::-;14752:50;;14813:33;14830:15;14813:16;:33::i;20007:234::-;2931:6;;-1:-1:-1;;;;;2931:6:0;1643:10;2931:22;2923:67;;;;-1:-1:-1;;;2923:67:0;;;;;;;:::i;:::-;20124:9:::1;20120:114;20139:19:::0;;::::1;20120:114;;;20214:8;20180:18;:31;20199:8;;20208:1;20199:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20180:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;20180:31:0;:42;;-1:-1:-1;;20180:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20160:3;::::1;::::0;::::1;:::i;:::-;;;;20120:114;;;;20007:234:::0;;;:::o;19787:212::-;2931:6;;-1:-1:-1;;;;;2931:6:0;1643:10;2931:22;2923:67;;;;-1:-1:-1;;;2923:67:0;;;;;;;:::i;:::-;19904:4:::1;19890:11;6084:20;19900:1;19890:11;:::i;:::-;:18;;;;:::i;:::-;19872:13;:37;;19864:86;;;::::0;-1:-1:-1;;;19864:86:0;;8136:2:1;19864:86:0::1;::::0;::::1;8118:21:1::0;8175:2;8155:18;;;8148:30;8214:34;8194:18;;;8187:62;-1:-1:-1;;;8265:18:1;;;8258:34;8309:19;;19864:86:0::1;7934:400:1::0;19864:86:0::1;19961:14;:30:::0;19787:212::o;3174:244::-;2931:6;;-1:-1:-1;;;;;2931:6:0;1643:10;2931:22;2923:67;;;;-1:-1:-1;;;2923:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3263:22:0;::::1;3255:73;;;::::0;-1:-1:-1;;;3255:73:0;;8541:2:1;3255:73:0::1;::::0;::::1;8523:21:1::0;8580:2;8560:18;;;8553:30;8619:34;8599:18;;;8592:62;-1:-1:-1;;;8670:18:1;;;8663:36;8716:19;;3255:73:0::1;8339:402:1::0;3255:73:0::1;3365:6;::::0;;3344:38:::1;::::0;-1:-1:-1;;;;;3344:38:0;;::::1;::::0;3365:6;::::1;::::0;3344:38:::1;::::0;::::1;3393:6;:17:::0;;-1:-1:-1;;;;;;3393:17:0::1;-1:-1:-1::0;;;;;3393:17:0;;;::::1;::::0;;;::::1;::::0;;3174:244::o;10450:369::-;-1:-1:-1;;;;;10577:19:0;;10569:68;;;;-1:-1:-1;;;10569:68:0;;8948:2:1;10569:68:0;;;8930:21:1;8987:2;8967:18;;;8960:30;9026:34;9006:18;;;8999:62;-1:-1:-1;;;9077:18:1;;;9070:34;9121:19;;10569:68:0;8746:400:1;10569:68:0;-1:-1:-1;;;;;10656:21:0;;10648:68;;;;-1:-1:-1;;;10648:68:0;;9353:2:1;10648:68:0;;;9335:21:1;9392:2;9372:18;;;9365:30;9431:34;9411:18;;;9404:62;-1:-1:-1;;;9482:18:1;;;9475:32;9524:19;;10648:68:0;9151:398:1;10648:68:0;-1:-1:-1;;;;;10727:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10779:32;;1595:25:1;;;10779:32:0;;1568:18:1;10779:32:0;;;;;;;10450:369;;;:::o;10827:3101::-;-1:-1:-1;;;;;10949:18:0;;10941:68;;;;-1:-1:-1;;;10941:68:0;;9756:2:1;10941:68:0;;;9738:21:1;9795:2;9775:18;;;9768:30;9834:34;9814:18;;;9807:62;-1:-1:-1;;;9885:18:1;;;9878:35;9930:19;;10941:68:0;9554:401:1;10941:68:0;-1:-1:-1;;;;;11028:16:0;;11020:64;;;;-1:-1:-1;;;11020:64:0;;10162:2:1;11020:64:0;;;10144:21:1;10201:2;10181:18;;;10174:30;10240:34;10220:18;;;10213:62;-1:-1:-1;;;10291:18:1;;;10284:33;10334:19;;11020:64:0;9960:399:1;11020:64:0;11112:1;11103:6;:10;11095:64;;;;-1:-1:-1;;;11095:64:0;;10566:2:1;11095:64:0;;;10548:21:1;10605:2;10585:18;;;10578:30;10644:34;10624:18;;;10617:62;-1:-1:-1;;;10695:18:1;;;10688:39;10744:19;;11095:64:0;10364:405:1;11095:64:0;2842:7;2869:6;-1:-1:-1;;;;;11176:15:0;;;2869:6;;11176:15;;;;:32;;-1:-1:-1;2842:7:0;2869:6;-1:-1:-1;;;;;11195:13:0;;;2869:6;;11195:13;;11176:32;:52;;;;-1:-1:-1;;;;;;11213:15:0;;;;;;:9;:15;;;;;;;;11212:16;11176:52;:70;;;;-1:-1:-1;;;;;;11233:13:0;;;;;;:9;:13;;;;;;;;11232:14;11176:70;11172:2030;;;11303:11;;-1:-1:-1;;;11303:11:0;;;;11298:144;;-1:-1:-1;;;;;11343:15:0;;;;;;:9;:15;;;;;;;;11335:91;;;;-1:-1:-1;;;11335:91:0;;10976:2:1;11335:91:0;;;10958:21:1;11015:2;10995:18;;;10988:30;11054:34;11034:18;;;11027:62;11125:33;11105:18;;;11098:61;11176:19;;11335:91:0;10774:427:1;11335:91:0;11476:12;;11466:6;:22;;11458:63;;;;-1:-1:-1;;;11458:63:0;;11408:2:1;11458:63:0;;;11390:21:1;11447:2;11427:18;;;11420:30;11486;11466:18;;;11459:58;11534:18;;11458:63:0;11206:352:1;11458:63:0;11547:13;;-1:-1:-1;;;;;11541:19:0;;;11547:13;;11541:19;11538:146;;11614:14;;11605:6;11589:13;11599:2;11589:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11581:87;;;;-1:-1:-1;;;11581:87:0;;11765:2:1;11581:87:0;;;11747:21:1;11804:2;11784:18;;;11777:30;11843:34;11823:18;;;11816:62;-1:-1:-1;;;11894:18:1;;;11887:33;11937:19;;11581:87:0;11563:399:1;11581:87:0;11700:28;11731:24;11749:4;11731:9;:24::i;:::-;11809:19;;11700:55;;-1:-1:-1;11785:43:0;;;;;;;11849:18;;-1:-1:-1;11861:6:0;;-1:-1:-1;;;11861:6:0;;;;11860:7;11849:18;:43;;;;-1:-1:-1;11879:13:0;;-1:-1:-1;;;;;11871:21:0;;;11879:13;;11871:21;;11849:43;:58;;;;-1:-1:-1;11896:11:0;;-1:-1:-1;;;11896:11:0;;;;11849:58;:87;;;;-1:-1:-1;;;;;;11912:24:0;;;;;;:18;:24;;;;;;;;11911:25;11849:87;:114;;;;-1:-1:-1;;;;;;11941:22:0;;;;;;:18;:22;;;;;;;;11940:23;11849:114;11845:1346;;;12012:19;;:24;;12034:2;12012:24;:::i;:::-;11988:20;:48;11984:144;;12084:19;;:24;;12106:2;12084:24;:::i;:::-;12061:47;;11984:144;12205:23;12294:1;12278:13;;12255:19;;12232:20;:42;;;;:::i;:::-;12231:60;;;;:::i;:::-;:64;;;;:::i;:::-;12205:90;-1:-1:-1;12316:26:0;12345:41;:20;12205:90;12345:24;:41::i;:::-;12316:70;-1:-1:-1;12443:21:0;12493:36;12316:70;12493:16;:36::i;:::-;12558:18;12579:44;:21;12605:17;12579:25;:44::i;:::-;12558:65;;12644:20;12667:73;12726:13;;12667:54;12682:38;12700:19;;12682:13;;:17;;:38;;;;:::i;:::-;12667:10;;:14;:54::i;:::-;:58;;:73::i;:::-;12644:96;-1:-1:-1;12769:23:0;12795:28;12644:96;12795:10;:28;:::i;:::-;12769:54;;12866:1;12848:15;:19;:42;;;;;12889:1;12871:15;:19;12848:42;12844:137;;;12915:46;12928:15;12945;12915:12;:46::i;:::-;13028:21;13074:22;;13070:106;;13121:35;13134:21;13121:12;:35::i;:::-;11965:1226;;;;;;;11845:1346;11248:1954;;11172:2030;-1:-1:-1;;;;;13278:24:0;;13214:12;13278:24;;;:18;:24;;;;;;13229:4;;13278:24;;;:50;;-1:-1:-1;;;;;;13306:22:0;;;;;;:18;:22;;;;;;;;13278:50;13277:102;;;-1:-1:-1;13342:13:0;;-1:-1:-1;;;;;13334:21:0;;;13342:13;;13334:21;;;;:44;;-1:-1:-1;13365:13:0;;-1:-1:-1;;;;;13359:19:0;;;13365:13;;13359:19;;13334:44;13273:594;;;-1:-1:-1;13406:5:0;13273:594;;;13489:13;;-1:-1:-1;;;;;13481:21:0;;;13489:13;;13481:21;:55;;;;-1:-1:-1;13520:15:0;;-1:-1:-1;;;;;13506:30:0;;;13520:15;;13506:30;;13481:55;13478:162;;;13569:14;;13557:9;:26;13612:12;;13602:7;:22;13478:162;13699:13;;-1:-1:-1;;;;;13693:19:0;;;13699:13;;13693:19;:55;;;;-1:-1:-1;13732:15:0;;-1:-1:-1;;;;;13716:32:0;;;13732:15;;13716:32;;13693:55;13689:165;;;13781:15;;13769:9;:27;13825:13;;13815:7;:23;13689:165;13879:41;13894:4;13900:2;13904:6;13912:7;13879:14;:41::i;3782:224::-;3902:7;3938:12;3930:6;;;;3922:29;;;;-1:-1:-1;;;3922:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3962:9:0;3974:5;3978:1;3974;:5;:::i;:::-;3962:17;3782:224;-1:-1:-1;;;;;3782:224:0:o;14427:99::-;14484:17;;:34;;-1:-1:-1;;;;;14484:17:0;;;;:34;;;;;14511:6;;14484:17;:34;:17;:34;14511:6;14484:17;:34;;;;;;;;;;;;;;;;;;;;;14427:99;:::o;9767:323::-;9862:7;9920;;9909;:18;;9887:110;;;;-1:-1:-1;;;9887:110:0;;12302:2:1;9887:110:0;;;12284:21:1;12341:2;12321:18;;;12314:30;12380:34;12360:18;;;12353:62;-1:-1:-1;;;12431:18:1;;;12424:40;12481:19;;9887:110:0;12100:406:1;9887:110:0;10008:19;10030:10;:8;:10::i;:::-;10008:32;-1:-1:-1;10058:24:0;:7;10008:32;10058:11;:24::i;:::-;10051:31;9767:323;-1:-1:-1;;;9767:323:0:o;13936:483::-;7443:6;:13;;-1:-1:-1;;;;7443:13:0;-1:-1:-1;;;7443:13:0;;;14038:16:::1;::::0;;14052:1:::1;14038:16:::0;;;;;::::1;::::0;;-1:-1:-1;;14038:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14038:16:0::1;14014:40;;14083:4;14065;14070:1;14065:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14065:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;14109:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;14109:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;14065:7;;14109:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14099:4;14104:1;14099:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14099:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;14174:15:::1;::::0;14142:62:::1;::::0;14159:4:::1;::::0;14174:15:::1;14192:11:::0;14142:8:::1;:62::i;:::-;14215:15;::::0;:196:::1;::::0;-1:-1:-1;;;14215:196:0;;-1:-1:-1;;;;;14215:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;14296:11;;14215:15:::1;::::0;14338:4;;14365::::1;::::0;14385:15:::1;::::0;14215:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;7479:6:0;:14;;-1:-1:-1;;;;7479:14:0;;;-1:-1:-1;;;;13936:483:0:o;3638:136::-;3696:7;3723:43;3727:1;3730;3723:43;;;;;;;;;;;;;;;;;:3;:43::i;4014:246::-;4072:7;4096:1;4101;4096:6;4092:47;;-1:-1:-1;4126:1:0;4119:8;;4092:47;4149:9;4161:5;4165:1;4161;:5;:::i;:::-;4149:17;-1:-1:-1;4194:1:0;4185:5;4189:1;4149:17;4185:5;:::i;:::-;:10;4177:56;;;;-1:-1:-1;;;4177:56:0;;14086:2:1;4177:56:0;;;14068:21:1;14125:2;14105:18;;;14098:30;14164:34;14144:18;;;14137:62;-1:-1:-1;;;14215:18:1;;;14208:31;14256:19;;4177:56:0;13884:397:1;4268:132:0;4326:7;4353:39;4357:1;4360;4353:39;;;;;;;;;;;;;;;;;:3;:39::i;20249:517::-;20429:15;;20397:62;;20414:4;;-1:-1:-1;;;;;20429:15:0;20447:11;20397:8;:62::i;:::-;20502:15;;:256;;-1:-1:-1;;;20502:256:0;;20574:4;20502:256;;;14627:34:1;14677:18;;;14670:34;;;20502:15:0;14720:18:1;;;14713:34;;;14763:18;;;14756:34;6972:6:0;14806:19:1;;;14799:44;20732:15:0;14859:19:1;;;14852:35;-1:-1:-1;;;;;20502:15:0;;;;:31;;20541:9;;14561:19:1;;20502:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20249:517;;:::o;15105:282::-;15261:7;15256:28;;15270:14;:12;:14::i;:::-;15295:44;15313:6;15321:9;15332:6;15295:17;:44::i;:::-;15355:7;15350:29;;15364:15;10381:17;;10369:9;:29;10419:15;;10409:7;:25;10325:117;18066:164;18108:7;18129:15;18146;18165:19;:17;:19::i;:::-;18128:56;;-1:-1:-1;18128:56:0;-1:-1:-1;18202:20:0;18128:56;;18202:11;:20::i;:::-;18195:27;;;;18066:164;:::o;4408:223::-;4528:7;4563:12;4556:5;4548:28;;;;-1:-1:-1;;;4548:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4587:9:0;4599:5;4603:1;4599;:5;:::i;10098:219::-;10145:9;;:14;:30;;;;-1:-1:-1;10163:7:0;;:12;10145:30;10141:43;;;10098:219::o;10141:43::-;10216:9;;;10196:17;:29;10254:7;;;10236:15;:25;-1:-1:-1;10274:13:0;;;;10298:11;10098:219::o;15395:610::-;15542:15;15572:23;15610:12;15637:23;15675:12;15702:13;15729:19;15740:7;15729:10;:19::i;:::-;-1:-1:-1;;;;;15777:15:0;;;;;;:7;:15;;;;;;15527:221;;-1:-1:-1;15527:221:0;;-1:-1:-1;15527:221:0;;-1:-1:-1;15527:221:0;-1:-1:-1;15527:221:0;-1:-1:-1;15527:221:0;-1:-1:-1;15777:28:0;;15527:221;15777:19;:28::i;:::-;-1:-1:-1;;;;;15759:15:0;;;;;;;:7;:15;;;;;;:46;;;;15837:18;;;;;;;:39;;15860:15;15837:22;:39::i;:::-;-1:-1:-1;;;;;15816:18:0;;;;;;:7;:18;;;;;:60;15887:16;15897:5;15887:9;:16::i;:::-;15914:23;15926:4;15932;15914:11;:23::i;:::-;15970:9;-1:-1:-1;;;;;15953:44:0;15962:6;-1:-1:-1;;;;;15953:44:0;;15981:15;15953:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;15953:44:0;;;;;;;;15516:489;;;;;;15395:610;;;:::o;18238:257::-;18336:7;;18289;;;;6084:20;18404;18336:7;6084:20;18404:11;:20::i;:::-;18394:7;:30;18390:61;;;-1:-1:-1;;18434:7:0;;;6084:20;;-1:-1:-1;18238:257:0;-1:-1:-1;18238:257:0:o;18390:61::-;18470:7;;18479;;-1:-1:-1;18238:257:0;-1:-1:-1;18238:257:0:o;16424:615::-;16524:7;16546;16568;16590;16612;16634;16670:23;16695:12;16709:13;16739:40;16751:7;16760:9;;16771:7;;16739:11;:40::i;:::-;16669:110;;;;;;16790:19;16812:10;:8;:10::i;:::-;16790:32;;16834:15;16851:23;16876:12;16905:46;16917:7;16926:4;16932:5;16939:11;16905;:46::i;:::-;16833:118;;-1:-1:-1;16833:118:0;-1:-1:-1;16833:118:0;-1:-1:-1;17002:15:0;;-1:-1:-1;17019:4:0;;-1:-1:-1;17025:5:0;;-1:-1:-1;;;;;16424:615:0;;;;;;;:::o;3451:179::-;3509:7;;3541:5;3545:1;3541;:5;:::i;:::-;3529:17;;3570:1;3565;:6;;3557:46;;;;-1:-1:-1;;;3557:46:0;;15411:2:1;3557:46:0;;;15393:21:1;15450:2;15430:18;;;15423:30;15489:29;15469:18;;;15462:57;15536:18;;3557:46:0;15209:351:1;16013:211:0;16066:19;16088:10;:8;:10::i;:::-;16066:32;-1:-1:-1;16109:13:0;16125:22;:5;16066:32;16125:9;:22::i;:::-;16199:4;16183:22;;;;:7;:22;;;;;;16109:38;;-1:-1:-1;16183:33:0;;16109:38;16183:26;:33::i;:::-;16174:4;16158:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;16013:211:0:o;16232:147::-;16310:7;;:17;;16322:4;16310:11;:17::i;:::-;16300:7;:27;16351:10;;:20;;16366:4;16351:14;:20::i;:::-;16338:10;:33;-1:-1:-1;;16232:147:0:o;17047:469::-;17216:7;;;;17310:30;17336:3;17310:21;:7;17322:8;17310:11;:21::i;:30::-;17295:45;-1:-1:-1;17351:13:0;17367:28;17391:3;17367:19;:7;17379:6;17367:11;:19::i;:28::-;17351:44;-1:-1:-1;17406:23:0;17432:28;17351:44;17432:17;:7;17444:4;17432:11;:17::i;:::-;:21;;:28::i;:::-;17406:54;17496:4;;-1:-1:-1;17502:5:0;;-1:-1:-1;17047:469:0;;-1:-1:-1;;;;;17047:469:0:o;17524:534::-;17718:7;;;;17815:24;:7;17827:11;17815;:24::i;:::-;17797:42;-1:-1:-1;17850:12:0;17865:21;:4;17874:11;17865:8;:21::i;:::-;17850:36;-1:-1:-1;17897:13:0;17913:22;:5;17923:11;17913:9;:22::i;:::-;17897:38;-1:-1:-1;17946:23:0;17972:28;17897:38;17972:17;:7;17984:4;17972:11;:17::i;:28::-;18019:7;;;;-1:-1:-1;18045:4:0;;-1:-1:-1;17524:534:0;;-1:-1:-1;;;;;;;17524:534:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2489:367::-;2552:8;2562:6;2616:3;2609:4;2601:6;2597:17;2593:27;2583:55;;2634:1;2631;2624:12;2583:55;-1:-1:-1;2657:20:1;;2700:18;2689:30;;2686:50;;;2732:1;2729;2722:12;2686:50;2769:4;2761:6;2757:17;2745:29;;2829:3;2822:4;2812:6;2809:1;2805:14;2797:6;2793:27;2789:38;2786:47;2783:67;;;2846:1;2843;2836:12;2783:67;2489:367;;;;;:::o;2861:437::-;2947:6;2955;3008:2;2996:9;2987:7;2983:23;2979:32;2976:52;;;3024:1;3021;3014:12;2976:52;3064:9;3051:23;3097:18;3089:6;3086:30;3083:50;;;3129:1;3126;3119:12;3083:50;3168:70;3230:7;3221:6;3210:9;3206:22;3168:70;:::i;:::-;3257:8;;3142:96;;-1:-1:-1;2861:437:1;-1:-1:-1;;;;2861:437:1:o;3303:160::-;3368:20;;3424:13;;3417:21;3407:32;;3397:60;;3453:1;3450;3443:12;3397:60;3303:160;;;:::o;3468:180::-;3524:6;3577:2;3565:9;3556:7;3552:23;3548:32;3545:52;;;3593:1;3590;3583:12;3545:52;3616:26;3632:9;3616:26;:::i;3653:247::-;3712:6;3765:2;3753:9;3744:7;3740:23;3736:32;3733:52;;;3781:1;3778;3771:12;3733:52;3820:9;3807:23;3839:31;3864:5;3839:31;:::i;3905:180::-;3964:6;4017:2;4005:9;3996:7;3992:23;3988:32;3985:52;;;4033:1;4030;4023:12;3985:52;-1:-1:-1;4056:23:1;;3905:180;-1:-1:-1;3905:180:1:o;4090:523::-;4194:6;4202;4210;4218;4226;4234;4287:3;4275:9;4266:7;4262:23;4258:33;4255:53;;;4304:1;4301;4294:12;4255:53;-1:-1:-1;;4327:23:1;;;4397:2;4382:18;;4369:32;;-1:-1:-1;4448:2:1;4433:18;;4420:32;;4499:2;4484:18;;4471:32;;-1:-1:-1;4550:3:1;4535:19;;4522:33;;-1:-1:-1;4602:3:1;4587:19;4574:33;;-1:-1:-1;4090:523:1;-1:-1:-1;4090:523:1:o;4618:505::-;4710:6;4718;4726;4779:2;4767:9;4758:7;4754:23;4750:32;4747:52;;;4795:1;4792;4785:12;4747:52;4835:9;4822:23;4868:18;4860:6;4857:30;4854:50;;;4900:1;4897;4890:12;4854:50;4939:70;5001:7;4992:6;4981:9;4977:22;4939:70;:::i;:::-;5028:8;;-1:-1:-1;4913:96:1;-1:-1:-1;5082:35:1;;-1:-1:-1;5113:2:1;5098:18;;5082:35;:::i;:::-;5072:45;;4618:505;;;;;:::o;5128:388::-;5196:6;5204;5257:2;5245:9;5236:7;5232:23;5228:32;5225:52;;;5273:1;5270;5263:12;5225:52;5312:9;5299:23;5331:31;5356:5;5331:31;:::i;:::-;5381:5;-1:-1:-1;5438:2:1;5423:18;;5410:32;5451:33;5410:32;5451:33;:::i;:::-;5503:7;5493:17;;;5128:388;;;;;:::o;5521:127::-;5582:10;5577:3;5573:20;5570:1;5563:31;5613:4;5610:1;5603:15;5637:4;5634:1;5627:15;5653:127;5714:10;5709:3;5705:20;5702:1;5695:31;5745:4;5742:1;5735:15;5769:4;5766:1;5759:15;5785:135;5824:3;5845:17;;;5842:43;;5865:18;;:::i;:::-;-1:-1:-1;5912:1:1;5901:13;;5785:135::o;5925:356::-;6127:2;6109:21;;;6146:18;;;6139:30;6205:34;6200:2;6185:18;;6178:62;6272:2;6257:18;;5925:356::o;6286:217::-;6326:1;6352;6342:132;;6396:10;6391:3;6387:20;6384:1;6377:31;6431:4;6428:1;6421:15;6459:4;6456:1;6449:15;6342:132;-1:-1:-1;6488:9:1;;6286:217::o;6924:125::-;6989:9;;;7010:10;;;7007:36;;;7023:18;;:::i;7761:168::-;7834:9;;;7865;;7882:15;;;7876:22;;7862:37;7852:71;;7903:18;;:::i;11967:128::-;12034:9;;;12055:11;;;12052:37;;;12069:18;;:::i;12643:251::-;12713:6;12766:2;12754:9;12745:7;12741:23;12737:32;12734:52;;;12782:1;12779;12772:12;12734:52;12814:9;12808:16;12833:31;12858:5;12833:31;:::i;12899:980::-;13161:4;13209:3;13198:9;13194:19;13240:6;13229:9;13222:25;13266:2;13304:6;13299:2;13288:9;13284:18;13277:34;13347:3;13342:2;13331:9;13327:18;13320:31;13371:6;13406;13400:13;13437:6;13429;13422:22;13475:3;13464:9;13460:19;13453:26;;13514:2;13506:6;13502:15;13488:29;;13535:1;13545:195;13559:6;13556:1;13553:13;13545:195;;;13624:13;;-1:-1:-1;;;;;13620:39:1;13608:52;;13715:15;;;;13680:12;;;;13656:1;13574:9;13545:195;;;-1:-1:-1;;;;;;;13796:32:1;;;;13791:2;13776:18;;13769:60;-1:-1:-1;;;13860:3:1;13845:19;13838:35;13757:3;12899:980;-1:-1:-1;;;12899:980:1:o;14898:306::-;14986:6;14994;15002;15055:2;15043:9;15034:7;15030:23;15026:32;15023:52;;;15071:1;15068;15061:12;15023:52;15100:9;15094:16;15084:26;;15150:2;15139:9;15135:18;15129:25;15119:35;;15194:2;15183:9;15179:18;15173:25;15163:35;;14898:306;;;;;:::o

Swarm Source

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