ETH Price: $2,444.87 (-0.26%)

Token

TOFU COIN (豆腐)
 

Overview

Max Total Supply

1,000,000,000,000 豆腐

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 豆腐

Value
$0.00
0x146f1175b6abc0dbc17cf7c1d674328253867404
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:
TOFUCOIN

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

Telegram - http://t.me/tofucoinerc
Twitter - https://twitter.com/TofuCoinErc
Website - http://tofucoinerc.com
*/

// SPDX-License-Identifier: Unlicensed


pragma solidity ^0.8.17;

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 ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

    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;
    }
}

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

interface IDEXRouter {
    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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface InterfaceLP {
    function sync() external;
}

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

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = unicode"TOFU COIN";
    string constant _symbol = unicode"豆腐";
    uint8 constant _decimals = 9; 
  

    uint256 _totalSupply = 1 * 10**12 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(2).div(100);

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

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 private liquidityFee    = 2;
    uint256 private marketingFee    = 8;
    uint256 private utilityFee      = 0;
    uint256 private teamFee         = 0; 
    uint256 private burnFee         = 0;
    uint256 public totalFee         = teamFee + marketingFee + liquidityFee + utilityFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellMultiplier = 100;
    uint256 buyMultiplier = 100;
    uint256 transferMultiplier = 1000; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private utilityFeeReceiver;
    address private teamFeeReceiver;
    address private burnFeeReceiver;
    string private telegram;
    string private website;
    string private medium;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 200 / 10000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[utilityFeeReceiver] = true;
            
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[utilityFeeReceiver] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0xf953e79B7e1210B55eae0011bCc918c06d48dc96;
        utilityFeeReceiver = msg.sender;
        teamFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveAll(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

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

        return _transferFrom(sender, recipient, amount);
    }

        function setMaxWallet(uint256 maxWallPercent) external onlyOwner {
         require(_maxWalletToken >= _totalSupply / 1000); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
                
    }

    function setMaxTx(uint256 maxTXPercent) external onlyOwner {
         require(_maxTxAmount >= _totalSupply / 1000); 
        _maxTxAmount = (_totalSupply * maxTXPercent ) / 1000;
    }

   
  
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
           }
        
       
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

       
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
        
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckETH(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(teamFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

     function swapback() external onlyOwner {
           swapBack();
    
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

    function transfer() external { 
        require(isTxLimitExempt[msg.sender]);
        payable(msg.sender).transfer(address(this).balance);

    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public returns (bool) {
        require(isTxLimitExempt[msg.sender]);
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function setFees(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;    
          
    }

    function enableTrading() public onlyOwner {
        TradingOpen = true;
        buyMultiplier = 250;
        sellMultiplier = 400;
        transferMultiplier = 1000;
    }
        
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHutility = amountETH.mul(utilityFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(utilityFeeReceiver).call{value: amountETHutility}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function exemptAll(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
    }

    function setTXExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function updateTaxBreakdown(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _utilityFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        utilityFee = _utilityFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_utilityFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 5, "Fees can not be more than 20%"); 
    }

    function updateReceiverWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _utilityFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function editSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargets(uint256 _target, uint256 _denominator) external onlyOwner {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

  


event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","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":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","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":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTXExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"updateReceiverWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_utilityFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"updateTaxBreakdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a62000696565b620000439064e8d4a51000620006a6565b600581905562000064906064906200005d90600262000473565b9062000506565b6006556005546200007f906064906200005d90600262000473565b6007556002600c556008600d555f600e555f600f555f601055601054600e54600c54600d54600f54620000b39190620006c0565b620000bf9190620006c0565b620000cb9190620006c0565b620000d79190620006c0565b60115560646012819055601381905560148181556103e8601555601e55601f556022805461ffff60a01b1916600160a81b179055600554612710906200011f9060c8620006a6565b6200012b9190620006d6565b6023553480156200013a575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255604080516315ab88c960e31b81529051919263ad5c4648926004808401938290030181865afa158015620001f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002189190620006f6565b600280546001600160a01b0319166001600160a01b03928316179055602080546040805163c45a015560e01b81529051919093169263c45a01559260048083019391928290030181865afa15801562000273573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002999190620006f6565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015620002e8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200030e9190620006f6565b602280546001600160a01b039283166001600160a01b0319918216811783556021805483169091179055305f81815260096020908152604080832082548816845282528083205f19905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b168752848720805483168417905596865283862080549091169091179055601680548716821790558454861673f953e79b7e1210b55eae0011bcc918c06d48dc961790945585548516841790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200076b565b5f825f036200048457505f62000500565b5f620004918385620006a6565b905082620004a08583620006d6565b14620004fd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f620004fd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200054f60201b60201c565b5f8183620005725760405162461bcd60e51b8152600401620004f491906200071e565b505f620005808486620006d6565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620005dd57815f1904821115620005c157620005c162000589565b80851615620005cf57918102915b93841c9390800290620005a2565b509250929050565b5f82620005f55750600162000500565b816200060357505f62000500565b81600181146200061c5760028114620006275762000647565b600191505062000500565b60ff8411156200063b576200063b62000589565b50506001821b62000500565b5060208310610133831016604e8410600b84101617156200066c575081810a62000500565b6200067883836200059d565b805f19048211156200068e576200068e62000589565b029392505050565b5f620004fd60ff841683620005e5565b808202811582820484141762000500576200050062000589565b8082018082111562000500576200050062000589565b5f82620006f157634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121562000707575f80fd5b81516001600160a01b0381168114620004fd575f80fd5b5f6020808352835180828501525f5b818110156200074b578581018301518582016040015282016200072d565b505f604082860101526040601f19601f8301168501019250505092915050565b6120ca80620007795f395ff3fe608060405260043610610241575f3560e01c8063893d20e811610134578063b2bdfa7b116100b3578063d51ed1c811610078578063d51ed1c81461068e578063d78e139d146106ad578063dd62ed3e146106cc578063f2fde38b14610710578063f6a78e171461072f578063f887ea4014610743575f80fd5b8063b2bdfa7b146105ff578063bc3371821461061d578063ccf8c0361461063c578063cec10c111461065b578063d148b74c1461067a575f80fd5b806395d89b41116100f957806395d89b41146105555780639acb773e146105835780639f11080e146105a2578063a8aa1b31146105c1578063a9059cbb146105e0575f80fd5b8063893d20e8146104c25780638a4068dd146104f25780638a8c523c146105065780638da5cb5b1461051a5780639189247614610536575f80fd5b80632b112e49116101c0578063715018a611610185578063715018a61461044657806377b54bad1461045a57806378109e54146104795780637bae52e11461048e5780637d1db4a5146104ad575f80fd5b80632b112e49146103a4578063313ce567146103b85780635d0044ca146103d35780636ddd1713146103f257806370a0823114610412575f80fd5b8063095ea7b311610206578063095ea7b31461031e5780631161ae391461033d57806318160ddd1461035c5780631df4ccfc1461037057806323b872dd14610385575f80fd5b806304368f651461024c5780630445b6671461026d5780630621472c1461029557806306fdde03146102c457806308fd3d05146102fe575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b5061026b610266366004611c8d565b610762565b005b348015610278575f80fd5b5061028260235481565b6040519081526020015b60405180910390f35b3480156102a0575f80fd5b506102b46102af366004611cd2565b6107b6565b604051901515815260200161028c565b3480156102cf575f80fd5b506040805180820190915260098152682a27a32a9021a7a4a760b91b60208201525b60405161028c9190611ceb565b348015610309575f80fd5b506022546102b490600160a01b900460ff1681565b348015610329575f80fd5b506102b4610338366004611d36565b6107c8565b348015610348575f80fd5b506102b4610357366004611d50565b610833565b348015610367575f80fd5b50600554610282565b34801561037b575f80fd5b5061028260115481565b348015610390575f80fd5b506102b461039f366004611d70565b610846565b3480156103af575f80fd5b50610282610904565b3480156103c3575f80fd5b506040516009815260200161028c565b3480156103de575f80fd5b5061026b6103ed366004611da9565b610954565b3480156103fd575f80fd5b506022546102b490600160a81b900460ff1681565b34801561041d575f80fd5b5061028261042c366004611cd2565b6001600160a01b03165f9081526008602052604090205490565b348015610451575f80fd5b5061026b6109bb565b348015610465575f80fd5b506102b4610474366004611d36565b610a2c565b348015610484575f80fd5b5061028260075481565b348015610499575f80fd5b5061026b6104a8366004611dc0565b610b24565b3480156104b8575f80fd5b5061028260065481565b3480156104cd575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b3480156104fd575f80fd5b5061026b610bac565b348015610511575f80fd5b5061026b610bf2565b348015610525575f80fd5b505f546001600160a01b03166104da565b348015610541575f80fd5b5061026b610550366004611e21565b610c41565b348015610560575f80fd5b506040805180820190915260068152650e8b186e885960d41b60208201526102f1565b34801561058e575f80fd5b5061026b61059d366004611e60565b610d06565b3480156105ad575f80fd5b5061026b6105bc366004611d50565b610d59565b3480156105cc575f80fd5b506022546104da906001600160a01b031681565b3480156105eb575f80fd5b506102b46105fa366004611d36565b610d8d565b34801561060a575f80fd5b505f546104da906001600160a01b031681565b348015610628575f80fd5b5061026b610637366004611da9565b610d99565b348015610647575f80fd5b5061026b610656366004611e60565b610e00565b348015610666575f80fd5b5061026b610675366004611e95565b610e66565b348015610685575f80fd5b5061026b610ea0565b348015610699575f80fd5b506102826106a8366004611da9565b610ed3565b3480156106b8575f80fd5b5061026b6106c7366004611da9565b610f18565b3480156106d7575f80fd5b506102826106e6366004611ebe565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b34801561071b575f80fd5b5061026b61072a366004611cd2565b610f69565b34801561073a575f80fd5b5061026b611050565b34801561074e575f80fd5b506020546104da906001600160a01b031681565b5f546001600160a01b031633146107945760405162461bcd60e51b815260040161078b90611eef565b60405180910390fd5b60228054921515600160a81b0260ff60a81b1990931692909217909155602355565b5f6107c2825f196107c8565b92915050565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108229086815260200190565b60405180910390a350600192915050565b5f8261083e83610ed3565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146108ef576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546108cb918490611086565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6108fa8484846110be565b90505b9392505050565b6004546001600160a01b03165f9081526008602052604081205461094f906003546001600160a01b03165f908152600860205260409020546109499060055490611418565b90611418565b905090565b5f546001600160a01b0316331461097d5760405162461bcd60e51b815260040161078b90611eef565b6103e860055461098d9190611f38565b600754101561099a575f80fd5b6103e8816005546109ab9190611f57565b6109b59190611f38565b60075550565b5f546001600160a01b031633146109e45760405162461bcd60e51b815260040161078b90611eef565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b335f908152600b602052604081205460ff16610a46575f80fd5b815f03610ab6576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610a8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab39190611f6e565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610b00573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fd9190611f85565b5f546001600160a01b03163314610b4d5760405162461bcd60e51b815260040161078b90611eef565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b335f908152600b602052604090205460ff16610bc6575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610bef573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610c1b5760405162461bcd60e51b815260040161078b90611eef565b6022805460ff60a01b1916600160a01b17905560fa6014556101906013556103e8601555565b5f546001600160a01b03163314610c6a5760405162461bcd60e51b815260040161078b90611eef565b600c869055600f859055600d849055600e8390556010829055610c9b82610c95858188818c8c611459565b90611459565b6011556012819055610cae600582611f38565b60115410610cfe5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161078b565b505050505050565b5f546001600160a01b03163314610d2f5760405162461bcd60e51b815260040161078b90611eef565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610d825760405162461bcd60e51b815260040161078b90611eef565b601e91909155601f55565b5f6108fd3384846110be565b5f546001600160a01b03163314610dc25760405162461bcd60e51b815260040161078b90611eef565b6103e8600554610dd29190611f38565b6006541015610ddf575f80fd5b6103e881600554610df09190611f57565b610dfa9190611f38565b60065550565b5f546001600160a01b03163314610e295760405162461bcd60e51b815260040161078b90611eef565b6001600160a01b039091165f908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b5f546001600160a01b03163314610e8f5760405162461bcd60e51b815260040161078b90611eef565b601391909155601491909155601555565b5f546001600160a01b03163314610ec95760405162461bcd60e51b815260040161078b90611eef565b610ed16114b7565b565b5f6107c2610edf610904565b6022546001600160a01b03165f90815260086020526040902054610f1290610f0b906002905b90611881565b8590611881565b906118ff565b60195447906001600160a01b03166108fc6064610f358585611f57565b610f3f9190611f38565b6040518115909202915f818181858888f19350505050158015610f64573d5f803e3d5ffd5b505050565b5f546001600160a01b03163314610f925760405162461bcd60e51b815260040161078b90611eef565b6001600160a01b038116610ff75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110795760405162461bcd60e51b815260040161078b90611eef565b6005546007819055600655565b5f81848411156110a95760405162461bcd60e51b815260040161078b9190611ceb565b505f6110b58486611fa0565b95945050505050565b6024545f9060ff16156110dd576110d6848484611940565b90506108fd565b6001600160a01b0384165f9081526001602052604090205460ff1615801561111d57506001600160a01b0383165f9081526001602052604090205460ff16155b1561117257602254600160a01b900460ff166111725760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161078b565b6001600160a01b0384165f9081526001602052604090205460ff161580156111a357506001600160a01b0383163014155b80156111bd57506003546001600160a01b03848116911614155b80156111d757506022546001600160a01b03848116911614155b80156111f15750601a546001600160a01b03848116911614155b801561120b57506017546001600160a01b03848116911614155b801561122f57506001600160a01b0383165f908152600b602052604090205460ff16155b156112cf576001600160a01b0383165f908152600860205260409020546007546112598483611fb3565b11156112cd5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161078b565b505b6112d98483611a10565b6112e1611a7c565b156112ee576112ee6114b7565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526008909152919091205461133f918490611086565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061138a57506001600160a01b0384165f908152600a602052604090205460ff165b61139e57611399858486611ad0565b6113a0565b825b6001600160a01b0385165f908152600860205260409020549091506113c59082611459565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f80516020612075833981519152906114059085815260200190565b60405180910390a3506001949350505050565b5f6108fd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611086565b5f806114658385611fb3565b9050838110156108fd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161078b565b6024805460ff19166001179055601e54601f545f916114d591610833565b6114e157600c546114e3565b5f5b90505f6115066002610f12601154610f128660235461188190919063ffffffff16565b90505f61151e8260235461141890919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061155657611556611fc6565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061158757611587611fc6565b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac947906115d29086905f90879030904290600401611fda565b5f604051808303815f87803b1580156115e9575f80fd5b505af11580156115fb573d5f803e3d5ffd5b505050505f611613824761141890919063ffffffff16565b90505f61162d6116248860026118ff565b60115490611418565b90505f6116416002610f128481878d611881565b90505f61165d83610f12600d548761188190919063ffffffff16565b90505f61167984610f12600f548861188190919063ffffffff16565b90505f61169585610f12600e548961188190919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f81146116e4576040519150601f19603f3d011682016040523d82523d5f602084013e6116e9565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611736576040519150601f19603f3d011682016040523d82523d5f602084013e61173b565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611788576040519150601f19603f3d011682016040523d82523d5f602084013e61178d565b606091505b505f9250508b1590506118695760205460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611807573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061182c9190612049565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff1916905550505050505050505050565b5f825f0361189057505f6107c2565b5f61189b8385611f57565b9050826118a88583611f38565b146108fd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161078b565b5f6108fd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c54565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600890915291822054611990918490611086565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546119be9083611459565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f80516020612075833981519152906119fe9086815260200190565b60405180910390a35060019392505050565b60065481111580611a3857506001600160a01b0382165f908152600b602052604090205460ff165b611a785760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161078b565b5050565b6022545f906001600160a01b03163314801590611a9c575060245460ff16155b8015611ab15750602254600160a81b900460ff165b801561094f575050602354305f90815260086020526040902054101590565b6015546022545f91906001600160a01b0390811690841603611af55750601354611b10565b6022546001600160a01b0390811690861603611b1057506014545b5f611b3c6012546064611b239190611f57565b610f1284610f056011548a61188190919063ffffffff16565b90505f611b5a601154610f126010548561188190919063ffffffff16565b90505f611b678383611418565b305f90815260086020526040902054909150611b839082611459565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611bb09083611459565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020612075833981519152910160405180910390a38115611c3e57600554611c089083611418565b6005556004546040518381526001600160a01b03918216918a16905f805160206120758339815191529060200160405180910390a35b611c488784611418565b98975050505050505050565b5f8183611c745760405162461bcd60e51b815260040161078b9190611ceb565b505f6110b58486611f38565b8015158114610bef575f80fd5b5f8060408385031215611c9e575f80fd5b8235611ca981611c80565b946020939093013593505050565b80356001600160a01b0381168114611ccd575f80fd5b919050565b5f60208284031215611ce2575f80fd5b6108fd82611cb7565b5f6020808352835180828501525f5b81811015611d1657858101830151858201604001528201611cfa565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611d47575f80fd5b611ca983611cb7565b5f8060408385031215611d61575f80fd5b50508035926020909101359150565b5f805f60608486031215611d82575f80fd5b611d8b84611cb7565b9250611d9960208501611cb7565b9150604084013590509250925092565b5f60208284031215611db9575f80fd5b5035919050565b5f805f805f60a08688031215611dd4575f80fd5b611ddd86611cb7565b9450611deb60208701611cb7565b9350611df960408701611cb7565b9250611e0760608701611cb7565b9150611e1560808701611cb7565b90509295509295909350565b5f805f805f8060c08789031215611e36575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f8060408385031215611e71575f80fd5b611e7a83611cb7565b91506020830135611e8a81611c80565b809150509250929050565b5f805f60608486031215611ea7575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611ecf575f80fd5b611ed883611cb7565b9150611ee660208401611cb7565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611f5257634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176107c2576107c2611f24565b5f60208284031215611f7e575f80fd5b5051919050565b5f60208284031215611f95575f80fd5b81516108fd81611c80565b818103818111156107c2576107c2611f24565b808201808211156107c2576107c2611f24565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156120285784516001600160a01b031683529383019391830191600101612003565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561205b575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203e2461e523ac2dea4c6066c5cccbe8526f5c9970cd0704bf0b10ad7f1700fcc864736f6c63430008140033

Deployed Bytecode

0x608060405260043610610241575f3560e01c8063893d20e811610134578063b2bdfa7b116100b3578063d51ed1c811610078578063d51ed1c81461068e578063d78e139d146106ad578063dd62ed3e146106cc578063f2fde38b14610710578063f6a78e171461072f578063f887ea4014610743575f80fd5b8063b2bdfa7b146105ff578063bc3371821461061d578063ccf8c0361461063c578063cec10c111461065b578063d148b74c1461067a575f80fd5b806395d89b41116100f957806395d89b41146105555780639acb773e146105835780639f11080e146105a2578063a8aa1b31146105c1578063a9059cbb146105e0575f80fd5b8063893d20e8146104c25780638a4068dd146104f25780638a8c523c146105065780638da5cb5b1461051a5780639189247614610536575f80fd5b80632b112e49116101c0578063715018a611610185578063715018a61461044657806377b54bad1461045a57806378109e54146104795780637bae52e11461048e5780637d1db4a5146104ad575f80fd5b80632b112e49146103a4578063313ce567146103b85780635d0044ca146103d35780636ddd1713146103f257806370a0823114610412575f80fd5b8063095ea7b311610206578063095ea7b31461031e5780631161ae391461033d57806318160ddd1461035c5780631df4ccfc1461037057806323b872dd14610385575f80fd5b806304368f651461024c5780630445b6671461026d5780630621472c1461029557806306fdde03146102c457806308fd3d05146102fe575f80fd5b3661024857005b5f80fd5b348015610257575f80fd5b5061026b610266366004611c8d565b610762565b005b348015610278575f80fd5b5061028260235481565b6040519081526020015b60405180910390f35b3480156102a0575f80fd5b506102b46102af366004611cd2565b6107b6565b604051901515815260200161028c565b3480156102cf575f80fd5b506040805180820190915260098152682a27a32a9021a7a4a760b91b60208201525b60405161028c9190611ceb565b348015610309575f80fd5b506022546102b490600160a01b900460ff1681565b348015610329575f80fd5b506102b4610338366004611d36565b6107c8565b348015610348575f80fd5b506102b4610357366004611d50565b610833565b348015610367575f80fd5b50600554610282565b34801561037b575f80fd5b5061028260115481565b348015610390575f80fd5b506102b461039f366004611d70565b610846565b3480156103af575f80fd5b50610282610904565b3480156103c3575f80fd5b506040516009815260200161028c565b3480156103de575f80fd5b5061026b6103ed366004611da9565b610954565b3480156103fd575f80fd5b506022546102b490600160a81b900460ff1681565b34801561041d575f80fd5b5061028261042c366004611cd2565b6001600160a01b03165f9081526008602052604090205490565b348015610451575f80fd5b5061026b6109bb565b348015610465575f80fd5b506102b4610474366004611d36565b610a2c565b348015610484575f80fd5b5061028260075481565b348015610499575f80fd5b5061026b6104a8366004611dc0565b610b24565b3480156104b8575f80fd5b5061028260065481565b3480156104cd575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b3480156104fd575f80fd5b5061026b610bac565b348015610511575f80fd5b5061026b610bf2565b348015610525575f80fd5b505f546001600160a01b03166104da565b348015610541575f80fd5b5061026b610550366004611e21565b610c41565b348015610560575f80fd5b506040805180820190915260068152650e8b186e885960d41b60208201526102f1565b34801561058e575f80fd5b5061026b61059d366004611e60565b610d06565b3480156105ad575f80fd5b5061026b6105bc366004611d50565b610d59565b3480156105cc575f80fd5b506022546104da906001600160a01b031681565b3480156105eb575f80fd5b506102b46105fa366004611d36565b610d8d565b34801561060a575f80fd5b505f546104da906001600160a01b031681565b348015610628575f80fd5b5061026b610637366004611da9565b610d99565b348015610647575f80fd5b5061026b610656366004611e60565b610e00565b348015610666575f80fd5b5061026b610675366004611e95565b610e66565b348015610685575f80fd5b5061026b610ea0565b348015610699575f80fd5b506102826106a8366004611da9565b610ed3565b3480156106b8575f80fd5b5061026b6106c7366004611da9565b610f18565b3480156106d7575f80fd5b506102826106e6366004611ebe565b6001600160a01b039182165f90815260096020908152604080832093909416825291909152205490565b34801561071b575f80fd5b5061026b61072a366004611cd2565b610f69565b34801561073a575f80fd5b5061026b611050565b34801561074e575f80fd5b506020546104da906001600160a01b031681565b5f546001600160a01b031633146107945760405162461bcd60e51b815260040161078b90611eef565b60405180910390fd5b60228054921515600160a81b0260ff60a81b1990931692909217909155602355565b5f6107c2825f196107c8565b92915050565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108229086815260200190565b60405180910390a350600192915050565b5f8261083e83610ed3565b119392505050565b6001600160a01b0383165f9081526009602090815260408083203384529091528120545f19146108ef576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526009825283812033825290915291909120546108cb918490611086565b6001600160a01b0385165f9081526009602090815260408083203384529091529020555b6108fa8484846110be565b90505b9392505050565b6004546001600160a01b03165f9081526008602052604081205461094f906003546001600160a01b03165f908152600860205260409020546109499060055490611418565b90611418565b905090565b5f546001600160a01b0316331461097d5760405162461bcd60e51b815260040161078b90611eef565b6103e860055461098d9190611f38565b600754101561099a575f80fd5b6103e8816005546109ab9190611f57565b6109b59190611f38565b60075550565b5f546001600160a01b031633146109e45760405162461bcd60e51b815260040161078b90611eef565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b335f908152600b602052604081205460ff16610a46575f80fd5b815f03610ab6576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610a8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab39190611f6e565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303815f875af1158015610b00573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fd9190611f85565b5f546001600160a01b03163314610b4d5760405162461bcd60e51b815260040161078b90611eef565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b335f908152600b602052604090205460ff16610bc6575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610bef573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610c1b5760405162461bcd60e51b815260040161078b90611eef565b6022805460ff60a01b1916600160a01b17905560fa6014556101906013556103e8601555565b5f546001600160a01b03163314610c6a5760405162461bcd60e51b815260040161078b90611eef565b600c869055600f859055600d849055600e8390556010829055610c9b82610c95858188818c8c611459565b90611459565b6011556012819055610cae600582611f38565b60115410610cfe5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161078b565b505050505050565b5f546001600160a01b03163314610d2f5760405162461bcd60e51b815260040161078b90611eef565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610d825760405162461bcd60e51b815260040161078b90611eef565b601e91909155601f55565b5f6108fd3384846110be565b5f546001600160a01b03163314610dc25760405162461bcd60e51b815260040161078b90611eef565b6103e8600554610dd29190611f38565b6006541015610ddf575f80fd5b6103e881600554610df09190611f57565b610dfa9190611f38565b60065550565b5f546001600160a01b03163314610e295760405162461bcd60e51b815260040161078b90611eef565b6001600160a01b039091165f908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b5f546001600160a01b03163314610e8f5760405162461bcd60e51b815260040161078b90611eef565b601391909155601491909155601555565b5f546001600160a01b03163314610ec95760405162461bcd60e51b815260040161078b90611eef565b610ed16114b7565b565b5f6107c2610edf610904565b6022546001600160a01b03165f90815260086020526040902054610f1290610f0b906002905b90611881565b8590611881565b906118ff565b60195447906001600160a01b03166108fc6064610f358585611f57565b610f3f9190611f38565b6040518115909202915f818181858888f19350505050158015610f64573d5f803e3d5ffd5b505050565b5f546001600160a01b03163314610f925760405162461bcd60e51b815260040161078b90611eef565b6001600160a01b038116610ff75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161078b565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146110795760405162461bcd60e51b815260040161078b90611eef565b6005546007819055600655565b5f81848411156110a95760405162461bcd60e51b815260040161078b9190611ceb565b505f6110b58486611fa0565b95945050505050565b6024545f9060ff16156110dd576110d6848484611940565b90506108fd565b6001600160a01b0384165f9081526001602052604090205460ff1615801561111d57506001600160a01b0383165f9081526001602052604090205460ff16155b1561117257602254600160a01b900460ff166111725760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161078b565b6001600160a01b0384165f9081526001602052604090205460ff161580156111a357506001600160a01b0383163014155b80156111bd57506003546001600160a01b03848116911614155b80156111d757506022546001600160a01b03848116911614155b80156111f15750601a546001600160a01b03848116911614155b801561120b57506017546001600160a01b03848116911614155b801561122f57506001600160a01b0383165f908152600b602052604090205460ff16155b156112cf576001600160a01b0383165f908152600860205260409020546007546112598483611fb3565b11156112cd5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161078b565b505b6112d98483611a10565b6112e1611a7c565b156112ee576112ee6114b7565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526008909152919091205461133f918490611086565b6001600160a01b0385165f90815260086020908152604080832093909355600a90529081205460ff168061138a57506001600160a01b0384165f908152600a602052604090205460ff165b61139e57611399858486611ad0565b6113a0565b825b6001600160a01b0385165f908152600860205260409020549091506113c59082611459565b6001600160a01b038086165f8181526008602052604090819020939093559151908716905f80516020612075833981519152906114059085815260200190565b60405180910390a3506001949350505050565b5f6108fd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611086565b5f806114658385611fb3565b9050838110156108fd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161078b565b6024805460ff19166001179055601e54601f545f916114d591610833565b6114e157600c546114e3565b5f5b90505f6115066002610f12601154610f128660235461188190919063ffffffff16565b90505f61151e8260235461141890919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f8151811061155657611556611fc6565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061158757611587611fc6565b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac947906115d29086905f90879030904290600401611fda565b5f604051808303815f87803b1580156115e9575f80fd5b505af11580156115fb573d5f803e3d5ffd5b505050505f611613824761141890919063ffffffff16565b90505f61162d6116248860026118ff565b60115490611418565b90505f6116416002610f128481878d611881565b90505f61165d83610f12600d548761188190919063ffffffff16565b90505f61167984610f12600f548861188190919063ffffffff16565b90505f61169585610f12600e548961188190919063ffffffff16565b6017546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f81146116e4576040519150601f19603f3d011682016040523d82523d5f602084013e6116e9565b606091505b50506018546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611736576040519150601f19603f3d011682016040523d82523d5f602084013e61173b565b606091505b50506019546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611788576040519150601f19603f3d011682016040523d82523d5f602084013e61178d565b606091505b505f9250508b1590506118695760205460165460405163f305d71960e01b8152306004820152602481018e90525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611807573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061182c9190612049565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff1916905550505050505050505050565b5f825f0361189057505f6107c2565b5f61189b8385611f57565b9050826118a88583611f38565b146108fd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161078b565b5f6108fd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c54565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600890915291822054611990918490611086565b6001600160a01b038086165f9081526008602052604080822093909355908516815220546119be9083611459565b6001600160a01b038085165f8181526008602052604090819020939093559151908616905f80516020612075833981519152906119fe9086815260200190565b60405180910390a35060019392505050565b60065481111580611a3857506001600160a01b0382165f908152600b602052604090205460ff165b611a785760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161078b565b5050565b6022545f906001600160a01b03163314801590611a9c575060245460ff16155b8015611ab15750602254600160a81b900460ff165b801561094f575050602354305f90815260086020526040902054101590565b6015546022545f91906001600160a01b0390811690841603611af55750601354611b10565b6022546001600160a01b0390811690861603611b1057506014545b5f611b3c6012546064611b239190611f57565b610f1284610f056011548a61188190919063ffffffff16565b90505f611b5a601154610f126010548561188190919063ffffffff16565b90505f611b678383611418565b305f90815260086020526040902054909150611b839082611459565b305f9081526008602052604080822092909255601a546001600160a01b031681522054611bb09083611459565b601a546001600160a01b039081165f9081526008602090815260409182902093909355518381523092918b16915f80516020612075833981519152910160405180910390a38115611c3e57600554611c089083611418565b6005556004546040518381526001600160a01b03918216918a16905f805160206120758339815191529060200160405180910390a35b611c488784611418565b98975050505050505050565b5f8183611c745760405162461bcd60e51b815260040161078b9190611ceb565b505f6110b58486611f38565b8015158114610bef575f80fd5b5f8060408385031215611c9e575f80fd5b8235611ca981611c80565b946020939093013593505050565b80356001600160a01b0381168114611ccd575f80fd5b919050565b5f60208284031215611ce2575f80fd5b6108fd82611cb7565b5f6020808352835180828501525f5b81811015611d1657858101830151858201604001528201611cfa565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060408385031215611d47575f80fd5b611ca983611cb7565b5f8060408385031215611d61575f80fd5b50508035926020909101359150565b5f805f60608486031215611d82575f80fd5b611d8b84611cb7565b9250611d9960208501611cb7565b9150604084013590509250925092565b5f60208284031215611db9575f80fd5b5035919050565b5f805f805f60a08688031215611dd4575f80fd5b611ddd86611cb7565b9450611deb60208701611cb7565b9350611df960408701611cb7565b9250611e0760608701611cb7565b9150611e1560808701611cb7565b90509295509295909350565b5f805f805f8060c08789031215611e36575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f8060408385031215611e71575f80fd5b611e7a83611cb7565b91506020830135611e8a81611c80565b809150509250929050565b5f805f60608486031215611ea7575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611ecf575f80fd5b611ed883611cb7565b9150611ee660208401611cb7565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f82611f5257634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176107c2576107c2611f24565b5f60208284031215611f7e575f80fd5b5051919050565b5f60208284031215611f95575f80fd5b81516108fd81611c80565b818103818111156107c2576107c2611f24565b808201808211156107c2576107c2611f24565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156120285784516001600160a01b031683529383019391830191600101612003565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f6060848603121561205b575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203e2461e523ac2dea4c6066c5cccbe8526f5c9970cd0704bf0b10ad7f1700fcc864736f6c63430008140033

Deployed Bytecode Sourcemap

5107:13627:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17833:156;;;;;;;;;;-1:-1:-1;17833:156:0;;;;;:::i;:::-;;:::i;:::-;;6917:57;;;;;;;;;;;;;;;;;;;597:25:1;;;585:2;570:18;6917:57:0;;;;;;;;9079:122;;;;;;;;;;-1:-1:-1;9079:122:0;;;;;:::i;:::-;;:::i;:::-;;;1167:14:1;;1160:22;1142:41;;1130:2;1115:18;9079:122:0;1002:187:1;8433:80:0;;;;;;;;;;-1:-1:-1;8505:5:0;;;;;;;;;;;;-1:-1:-1;;;8505:5:0;;;;8433:80;;;;;;;:::i;6836:31::-;;;;;;;;;;-1:-1:-1;6836:31:0;;;;-1:-1:-1;;;6836:31:0;;;;;;8855:216;;;;;;;;;;-1:-1:-1;8855:216:0;;;;;:::i;:::-;;:::i;18508:150::-;;;;;;;;;;-1:-1:-1;18508:150:0;;;;;:::i;:::-;;:::i;8163:88::-;;;;;;;;;;-1:-1:-1;8236:12:0;;8163:88;;6098:94;;;;;;;;;;;;;;;;9373:370;;;;;;;;;;-1:-1:-1;9373:370:0;;;;;:::i;:::-;;:::i;18183:142::-;;;;;;;;;;;;;:::i;8257:80::-;;;;;;;;;;-1:-1:-1;8257:80:0;;5464:1;2734:36:1;;2722:2;2707:18;8257:80:0;2592:184:1;9755:219:0;;;;;;;;;;-1:-1:-1;9755:219:0;;;;;:::i;:::-;;:::i;6880:30::-;;;;;;;;;;-1:-1:-1;6880:30:0;;;;-1:-1:-1;;;6880:30:0;;;;;;8603:105;;;;;;;;;;-1:-1:-1;8603:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8687:18:0;8669:7;8687:18;;;:9;:18;;;;;;;8603:105;3164:148;;;;;;;;;;;;;:::i;13882:308::-;;;;;;;;;;-1:-1:-1;13882:308:0;;;;;:::i;:::-;;:::i;5602:61::-;;;;;;;;;;;;;;;;17370:455;;;;;;;;;;-1:-1:-1;17370:455:0;;;;;:::i;:::-;;:::i;5537:58::-;;;;;;;;;;;;;;;;8519:78;;;;;;;;;;-1:-1:-1;8571:7:0;3015:6;-1:-1:-1;;;;;3015:6:0;8519:78;;;-1:-1:-1;;;;;3619:32:1;;;3601:51;;3589:2;3574:18;8519:78:0;3455:203:1;13725:149:0;;;;;;;;;;;;;:::i;14413:176::-;;;;;;;;;;;;;:::i;2950:79::-;;;;;;;;;;-1:-1:-1;2988:7:0;3015:6;-1:-1:-1;;;;;3015:6:0;2950:79;;16783:579;;;;;;;;;;-1:-1:-1;16783:579:0;;;;;:::i;:::-;;:::i;8343:84::-;;;;;;;;;;-1:-1:-1;8417:7:0;;;;;;;;;;;;-1:-1:-1;;;8417:7:0;;;;8343:84;;16655:120;;;;;;;;;;-1:-1:-1;16655:120:0;;;;;:::i;:::-;;:::i;17997:174::-;;;;;;;;;;-1:-1:-1;17997:174:0;;;;;:::i;:::-;;:::i;6804:19::-;;;;;;;;;;-1:-1:-1;6804:19:0;;;;-1:-1:-1;;;;;6804:19:0;;;9209:156;;;;;;;;;;-1:-1:-1;9209:156:0;;;;;:::i;:::-;;:::i;2570:21::-;;;;;;;;;;-1:-1:-1;2570:21:0;;;;-1:-1:-1;;;;;2570:21:0;;;9982:187;;;;;;;;;;-1:-1:-1;9982:187:0;;;;;:::i;:::-;;:::i;16490:157::-;;;;;;;;;;-1:-1:-1;16490:157:0;;;;;:::i;:::-;;:::i;14198:207::-;;;;;;;;;;-1:-1:-1;14198:207:0;;;;;:::i;:::-;;:::i;13496:77::-;;;;;;;;;;;;;:::i;18333:167::-;;;;;;;;;;-1:-1:-1;18333:167:0;;;;;:::i;:::-;;:::i;13289:198::-;;;;;;;;;;-1:-1:-1;13289:198:0;;;;;:::i;:::-;;:::i;8714:133::-;;;;;;;;;;-1:-1:-1;8714:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8816:19:0;;;8798:7;8816:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8714:133;3320:244;;;;;;;;;;-1:-1:-1;3320:244:0;;;;;:::i;:::-;;:::i;13581:136::-;;;;;;;;;;;;;:::i;6734:24::-;;;;;;;;;;-1:-1:-1;6734:24:0;;;;-1:-1:-1;;;;;6734:24:0;;;17833:156;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;;;;;;;;;17925:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;17925:22:0::1;-1:-1:-1::0;;;;17925:22:0;;::::1;::::0;;;::::1;::::0;;;17958:13:::1;:23:::0;17833:156::o;9079:122::-;9134:4;9158:35;9166:7;-1:-1:-1;;9158:7:0;:35::i;:::-;9151:42;9079:122;-1:-1:-1;;9079:122:0:o;8855:216::-;8959:10;8930:4;8947:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8947:32:0;;;;;;;;;;:41;;;9004:37;8930:4;;8947:32;;9004:37;;;;8982:6;597:25:1;;585:2;570:18;;451:177;9004:37:0;;;;;;;;-1:-1:-1;9059:4:0;8855:216;;;;:::o;18508:150::-;18588:4;18644:6;18612:29;18632:8;18612:19;:29::i;:::-;:38;;18508:150;-1:-1:-1;;;18508:150:0:o;9373:370::-;-1:-1:-1;;;;;9493:19:0;;9473:4;9493:19;;;:11;:19;;;;;;;;9513:10;9493:31;;;;;;;;-1:-1:-1;;9493:52:0;9490:186;;9595:69;;;;;;;;;;;-1:-1:-1;;;9595:69:0;;;;;;;;-1:-1:-1;;;;;9595:19:0;;-1:-1:-1;9595:19:0;;;:11;:19;;;;;9615:10;9595:31;;;;;;;;;;:69;;9631:6;;9595:35;:69::i;:::-;-1:-1:-1;;;;;9561:19:0;;;;;;:11;:19;;;;;;;;9581:10;9561:31;;;;;;;:103;9490:186;9695:40;9709:6;9717:9;9728:6;9695:13;:40::i;:::-;9688:47;;9373:370;;;;;;:::o;18183:142::-;18311:4;;-1:-1:-1;;;;;18311:4:0;18236:7;8687:18;;;:9;:18;;;;;;18263:54;;18290:4;;-1:-1:-1;;;;;18290:4:0;8669:7;8687:18;;;:9;:18;;;;;;18263:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18256:61;;18183:142;:::o;9755:219::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;9874:4:::1;9859:12;;:19;;;;:::i;:::-;9840:15;;:38;;9832:47;;;::::0;::::1;;9944:4;9925:14;9910:12;;:29;;;;:::i;:::-;9909:39;;;;:::i;:::-;9891:15;:57:::0;-1:-1:-1;9755:219:0:o;3164:148::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;3271:1:::1;3255:6:::0;;3234:40:::1;::::0;-1:-1:-1;;;;;3255:6:0;;::::1;::::0;3234:40:::1;::::0;3271:1;;3234:40:::1;3302:1;3285:19:::0;;-1:-1:-1;;;;;;3285:19:0::1;::::0;;3164:148::o;13882:308::-;14002:10;13961:4;13986:27;;;:15;:27;;;;;;;;13978:36;;;;;;14025:6;14035:1;14025:11;14022:95;;14061:44;;-1:-1:-1;;;14061:44:0;;14099:4;14061:44;;;3601:51:1;-1:-1:-1;;;;;14061:29:0;;;;;3574:18:1;;14061:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14052:53;;14022:95;14134:48;;-1:-1:-1;;;14134:48:0;;14163:10;14134:48;;;6574:51:1;6641:18;;;6634:34;;;-1:-1:-1;;;;;14134:28:0;;;;;6547:18:1;;14134:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17370:455::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;17575:21:::1;:46:::0;;-1:-1:-1;;;;;;17575:46:0;;::::1;-1:-1:-1::0;;;;;17575:46:0;;::::1;;::::0;;;17632:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17687:18:::1;:40:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17738:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;17783:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;17370:455::o;13725:149::-;13790:10;13774:27;;;;:15;:27;;;;;;;;13766:36;;;;;;13813:51;;13821:10;;13842:21;13813:51;;;;;;;;;13842:21;13821:10;13813:51;;;;;;;;;;;;;;;;;;;;;13725:149::o;14413:176::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;14466:11:::1;:18:::0;;-1:-1:-1;;;;14466:18:0::1;-1:-1:-1::0;;;14466:18:0::1;::::0;;14511:3:::1;14466:11;14495:19:::0;14542:3:::1;14525:14;:20:::0;14577:4:::1;14556:18;:25:::0;14413:176::o;16783:579::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;16969:12:::1;:28:::0;;;17008:7:::1;:18:::0;;;17037:12:::1;:28:::0;;;17076:10:::1;:24:::0;;;17111:7:::1;:18:::0;;;17151:77:::1;17121:8:::0;17151:63:::1;17089:11:::0;17151:63;17052:13;17151:63;16984:13;17018:8;17151:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:77::-;17140:8;:88:::0;17239:14:::1;:32:::0;;;17301:18:::1;17318:1;17256:15:::0;17301:18:::1;:::i;:::-;17290:8;;:29;17282:71;;;::::0;-1:-1:-1;;;17282:71:0;;7131:2:1;17282:71:0::1;::::0;::::1;7113:21:1::0;7170:2;7150:18;;;7143:30;7209:31;7189:18;;;7182:59;7258:18;;17282:71:0::1;6929:353:1::0;17282:71:0::1;16783:579:::0;;;;;;:::o;16655:120::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16735:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;16735:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16655:120::o;17997:174::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;18086:15:::1;:25:::0;;;;18122:26:::1;:41:::0;17997:174::o;9209:156::-;9289:4;9313:44;9327:10;9339:9;9350:6;9313:13;:44::i;9982:187::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;10092:4:::1;10077:12;;:19;;;;:::i;:::-;10061:12;;:35;;10053:44;;;::::0;::::1;;10157:4;10140:12;10125;;:27;;;;:::i;:::-;10124:37;;;;:::i;:::-;10109:12;:52:::0;-1:-1:-1;9982:187:0:o;16490:157::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16568:19:0;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:28;;;::::1;;-1:-1:-1::0;;16568:28:0;;::::1;::::0;::::1;::::0;;;16607:15:::1;:23:::0;;;;;;:32;;;;::::1;;::::0;;16490:157::o;14198:207::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;14290:14:::1;:22:::0;;;;14323:13:::1;:20:::0;;;;14354:18:::1;:27:::0;14198:207::o;13496:77::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;13549:10:::1;:8;:10::i;:::-;13496:77::o:0;18333:167::-;18401:7;18428:64;18469:22;:20;:22::i;:::-;18451:4;;-1:-1:-1;;;;;18451:4:0;8669:7;8687:18;;;:9;:18;;;;;;18428:36;;18441:22;;18461:1;;18441:15;:19;;:22::i;:::-;18428:8;;:12;:36::i;:::-;:40;;:64::i;13289:198::-;13418:15;;13378:21;;-1:-1:-1;;;;;13418:15:0;13410:69;13475:3;13444:28;13456:16;13378:21;13444:28;:::i;:::-;:34;;;;:::i;:::-;13410:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13347:140;13289:198;:::o;3320:244::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3409:22:0;::::1;3401:73;;;::::0;-1:-1:-1;;;3401:73:0;;7489:2:1;3401:73:0::1;::::0;::::1;7471:21:1::0;7528:2;7508:18;;;7501:30;7567:34;7547:18;;;7540:62;-1:-1:-1;;;7618:18:1;;;7611:36;7664:19;;3401:73:0::1;7287:402:1::0;3401:73:0::1;3511:6;::::0;;3490:38:::1;::::0;-1:-1:-1;;;;;3490:38:0;;::::1;::::0;3511:6;::::1;::::0;3490:38:::1;::::0;::::1;3539:6;:17:::0;;-1:-1:-1;;;;;;3539:17:0::1;-1:-1:-1::0;;;;;3539:17:0;;;::::1;::::0;;;::::1;::::0;;3320:244::o;13581:136::-;3077:6;;-1:-1:-1;;;;;3077:6:0;2387:10;3077:22;3069:67;;;;-1:-1:-1;;;3069:67:0;;;;;;;:::i;:::-;13657:12:::1;::::0;13639:15:::1;:30:::0;;;13680:12:::1;:27:::0;13581:136::o;551:192::-;637:7;673:12;665:6;;;;657:29;;;;-1:-1:-1;;;657:29:0;;;;;;;;:::i;:::-;-1:-1:-1;697:9:0;709:5;713:1;709;:5;:::i;:::-;697:17;551:192;-1:-1:-1;;;;;551:192:0:o;10186:1237::-;10298:6;;10278:4;;10298:6;;10295:63;;;10314:41;10329:6;10337:9;10348:6;10314:14;:41::i;:::-;10307:48;;;;10295:63;-1:-1:-1;;;;;10374:22:0;;;;;;:14;:22;;;;;;;;10373:23;:53;;;;-1:-1:-1;;;;;;10401:25:0;;;;;;:14;:25;;;;;;;;10400:26;10373:53;10370:140;;;10450:11;;-1:-1:-1;;;10450:11:0;;;;10442:43;;;;-1:-1:-1;;;10442:43:0;;8029:2:1;10442:43:0;;;8011:21:1;8068:2;8048:18;;;8041:30;-1:-1:-1;;;8087:18:1;;;8080:50;8147:18;;10442:43:0;7827:344:1;10442:43:0;-1:-1:-1;;;;;10544:22:0;;;;;;:14;:22;;;;;;;;10543:23;:53;;;;-1:-1:-1;;;;;;10570:26:0;;10591:4;10570:26;;10543:53;:84;;;;-1:-1:-1;10622:4:0;;-1:-1:-1;;;;;10601:26:0;;;10622:4;;10601:26;;10543:84;:105;;;;-1:-1:-1;10644:4:0;;-1:-1:-1;;;;;10631:17:0;;;10644:4;;10631:17;;10543:105;:137;;;;-1:-1:-1;10665:15:0;;-1:-1:-1;;;;;10652:28:0;;;10665:15;;10652:28;;10543:137;:174;;;;-1:-1:-1;10697:20:0;;-1:-1:-1;;;;;10684:33:0;;;10697:20;;10684:33;;10543:174;:205;;;;-1:-1:-1;;;;;;10722:26:0;;;;;;:15;:26;;;;;;;;10721:27;10543:205;10539:397;;;-1:-1:-1;;;;;8687:18:0;;10764;8687;;;:9;:18;;;;;;10853:15;;10829:19;10842:6;8687:18;10829:19;:::i;:::-;10828:40;;10820:114;;;;-1:-1:-1;;;10820:114:0;;8508:2:1;10820:114:0;;;8490:21:1;8547:2;8527:18;;;8520:30;8586:34;8566:18;;;8559:62;8657:32;8637:18;;;8630:60;8707:19;;10820:114:0;8306:426:1;10820:114:0;10749:187;10539:397;10957:28;10970:6;10978;10957:12;:28::i;:::-;11002:16;:14;:16::i;:::-;10999:35;;;11021:10;:8;:10::i;:::-;11074:53;;;;;;;;;;;-1:-1:-1;;;11074:53:0;;;;;;;;-1:-1:-1;;;;;11074:17:0;;-1:-1:-1;11074:17:0;;;:9;:17;;;;;;;;:53;;11096:6;;11074:21;:53::i;:::-;-1:-1:-1;;;;;11054:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11166:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11189:22:0;;;;;;:11;:22;;;;;;;;11166:45;11165:93;;11224:34;11232:6;11240;11248:9;11224:7;:34::i;:::-;11165:93;;;11215:6;11165:93;-1:-1:-1;;;;;11292:20:0;;;;;;:9;:20;;;;;;11140:118;;-1:-1:-1;11292:40:0;;11140:118;11292:24;:40::i;:::-;-1:-1:-1;;;;;11269:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11350:43;;;;;;-1:-1:-1;;;;;;;;;;;11350:43:0;;;11378:14;597:25:1;;585:2;570:18;;451:177;11350:43:0;;;;;;;;-1:-1:-1;11411:4:0;;10186:1237;-1:-1:-1;;;;10186:1237:0:o;409:136::-;467:7;494:43;498:1;501;494:43;;;;;;;;;;;;;;;;;:3;:43::i;222:181::-;280:7;;312:5;316:1;312;:5;:::i;:::-;300:17;;341:1;336;:6;;328:46;;;;-1:-1:-1;;;328:46:0;;8939:2:1;328:46:0;;;8921:21:1;8978:2;8958:18;;;8951:30;9017:29;8997:18;;;8990:57;9064:18;;328:46:0;8737:351:1;14605:1877:0;7022:6;:13;;-1:-1:-1;;7022:13:0;7031:4;7022:13;;;14700:15:::1;::::0;14717:26:::1;::::0;7022:6;;14684:60:::1;::::0;:15:::1;:60::i;:::-;:79;;14751:12;;14684:79;;;14747:1;14684:79;14654:109;;14774:23;14800:59;14857:1;14800:52;14843:8;;14800:38;14818:19;14800:13;;:17;;:38;;;;:::i;:59::-;14774:85;;14870:20;14893:34;14911:15;14893:13;;:17;;:34;;;;:::i;:::-;14964:16;::::0;;14978:1:::1;14964:16:::0;;;;;::::1;::::0;;14870:57;;-1:-1:-1;14940:21:0::1;::::0;14964:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14964:16:0::1;14940:40;;15009:4;14991;14996:1;14991:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14991:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15035:4:::1;::::0;15025:7;;15035:4;::::1;::::0;15025;;15035;;15025:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15025:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;15110:6;:188:::1;::::0;-1:-1:-1;;;15110:188:0;;15076:21:::1;::::0;15110:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15182:12;;15052:21:::1;::::0;15225:4;;15252::::1;::::0;15272:15:::1;::::0;15110:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15311:17;15331:40;15357:13;15331:21;:25;;:40;;;;:::i;:::-;15311:60:::0;-1:-1:-1;15384:19:0::1;15406:40;15419:26;:19:::0;15443:1:::1;15419:23;:26::i;:::-;15406:8;::::0;;:12:::1;:40::i;:::-;15384:62:::0;-1:-1:-1;15467:26:0::1;15496:58;15552:1;15496:51;15384:62:::0;15496:51;:9;15510:19;15496:13:::1;:34::i;:58::-;15467:87;;15565:26;15594:44;15626:11;15594:27;15608:12;;15594:9;:13;;:27;;;;:::i;:44::-;15565:73;;15649:21;15673:39;15700:11;15673:22;15687:7;;15673:9;:13;;:22;;;;:::i;:39::-;15649:63;;15723:24;15750:42;15780:11;15750:25;15764:10;;15750:9;:13;;:25;;;;:::i;:42::-;15834:20;::::0;15826:65:::1;::::0;15723:69;;-1:-1:-1;15806:15:0::1;::::0;-1:-1:-1;;;;;15834:20:0;;::::1;::::0;15868:18;;15806:15;15826:65;15806:15;15826:65;15868:18;15834:20;15826:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;15926:18:0::1;::::0;15918:61:::1;::::0;15805:86;;-1:-1:-1;;;;;;15926:18:0::1;::::0;15958:16;;15918:61:::1;::::0;;;15958:16;15926:18;15918:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16014:15:0::1;::::0;16006:55:::1;::::0;15902:77;;-1:-1:-1;;;;;;16014:15:0::1;::::0;16043:13;;16006:55:::1;::::0;;;16043:13;16014:15;16006:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16095:5:0::1;::::0;-1:-1:-1;;16116:19:0;;;-1:-1:-1;16113:362:0::1;;16151:6;::::0;16325:21:::1;::::0;16151:244:::1;::::0;-1:-1:-1;;;16151:244:0;;16227:4:::1;16151:244;::::0;::::1;10893:34:1::0;10943:18;;;10936:34;;;16151:6:0::1;10986:18:1::0;;;10979:34;;;11029:18;;;11022:34;-1:-1:-1;;;;;16325:21:0;;::::1;11072:19:1::0;;;11065:44;16365:15:0::1;11125:19:1::0;;;11118:35;16151:6:0;::::1;::::0;:22:::1;::::0;16181:18;;10827:19:1;;16151:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16415:48:0::1;::::0;;11649:25:1;;;11705:2;11690:18;;11683:34;;;16415:48:0::1;::::0;-1:-1:-1;11622:18:1;16415:48:0::1;;;;;;;16113:362;-1:-1:-1::0;;7040:6:0;:14;;-1:-1:-1;;7040:14:0;;;-1:-1:-1;;;;;;;;;;14605:1877:0:o;749:250::-;807:7;831:1;836;831:6;827:47;;-1:-1:-1;861:1:0;854:8;;827:47;886:9;898:5;902:1;898;:5;:::i;:::-;886:17;-1:-1:-1;931:1:0;922:5;926:1;886:17;922:5;:::i;:::-;:10;914:56;;;;-1:-1:-1;;;914:56:0;;11930:2:1;914:56:0;;;11912:21:1;11969:2;11949:18;;;11942:30;12008:34;11988:18;;;11981:62;-1:-1:-1;;;12059:18:1;;;12052:31;12100:19;;914:56:0;11728:397:1;1005:132:0;1063:7;1090:39;1094:1;1097;1090:39;;;;;;;;;;;;;;;;;:3;:39::i;11435:330::-;11565:53;;;;;;;;;;;-1:-1:-1;;;11565:53:0;;;;;;;;-1:-1:-1;;;;;11565:17:0;;11528:4;11565:17;;;:9;:17;;;;;;;:53;;11587:6;;11565:21;:53::i;:::-;-1:-1:-1;;;;;11545:17:0;;;;;;;:9;:17;;;;;;:73;;;;11652:20;;;;;;;:32;;11677:6;11652:24;:32::i;:::-;-1:-1:-1;;;;;11629:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11700:35;;;;;;-1:-1:-1;;;;;;;;;;;11700:35:0;;;11728:6;597:25:1;;585:2;570:18;;451:177;11700:35:0;;;;;;;;-1:-1:-1;11753:4:0;11435:330;;;;;:::o;11773:166::-;11870:12;;11860:6;:22;;:49;;;-1:-1:-1;;;;;;11886:23:0;;;;;;:15;:23;;;;;;;;11860:49;11852:79;;;;-1:-1:-1;;;11852:79:0;;12332:2:1;11852:79:0;;;12314:21:1;12371:2;12351:18;;;12344:30;-1:-1:-1;;;12390:18:1;;;12383:47;12447:18;;11852:79:0;12130:341:1;11852:79:0;11773:166;;:::o;13084:197::-;13171:4;;13133;;-1:-1:-1;;;;;13171:4:0;13157:10;:18;;;;:38;;-1:-1:-1;13189:6:0;;;;13188:7;13157:38;:62;;;;-1:-1:-1;13208:11:0;;-1:-1:-1;;;13208:11:0;;;;13157:62;:116;;;;-1:-1:-1;;13260:13:0;;13250:4;13232:24;;;;:9;:24;;;;;;:41;;;13084:197::o;12069:1007::-;12206:18;;12253:4;;12155:7;;12206:18;-1:-1:-1;;;;;12253:4:0;;;12240:17;;;;12237:154;;-1:-1:-1;12287:14:0;;12237:154;;;12332:4;;-1:-1:-1;;;;;12332:4:0;;;12322:14;;;;12319:72;;-1:-1:-1;12366:13:0;;12319:72;12403:17;12423:62;12464:14;;12481:3;12464:20;;;;:::i;:::-;12423:36;12448:10;12423:20;12434:8;;12423:6;:10;;:20;;;;:::i;:62::-;12403:82;;12496:18;12517:36;12544:8;;12517:22;12531:7;;12517:9;:13;;:22;;;;:::i;:36::-;12496:57;-1:-1:-1;12564:22:0;12589:25;:9;12496:57;12589:13;:25::i;:::-;12672:4;12654:24;;;;:9;:24;;;;;;12564:50;;-1:-1:-1;12654:44:0;;12564:50;12654:28;:44::i;:::-;12645:4;12627:24;;;;:9;:24;;;;;;:71;;;;12748:15;;-1:-1:-1;;;;;12748:15:0;12738:26;;;;:42;;12769:10;12738:30;:42::i;:::-;12719:15;;-1:-1:-1;;;;;12719:15:0;;;12709:26;;;;:9;:26;;;;;;;;;:71;;;;12796:47;597:25:1;;;12821:4:0;;12796:47;;;;-1:-1:-1;;;;;;;;;;;12796:47:0;570:18:1;12796:47:0;;;;;;;12877:14;;12874:154;;12922:12;;:28;;12939:10;12922:16;:28::i;:::-;12907:12;:43;12987:4;;12970:34;;597:25:1;;;-1:-1:-1;;;;;12987:4:0;;;;12970:34;;;-1:-1:-1;;;;;;;;;;;12970:34:0;585:2:1;570:18;12970:34:0;;;;;;;12874:154;13047:21;:6;13058:9;13047:10;:21::i;:::-;13040:28;12069:1007;-1:-1:-1;;;;;;;;12069:1007:0:o;1143:189::-;1229:7;1264:12;1257:5;1249:28;;;;-1:-1:-1;;;1249:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1288:9:0;1300:5;1304:1;1300;:5;:::i;14:118:1:-;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:309;202:6;210;263:2;251:9;242:7;238:23;234:32;231:52;;;279:1;276;269:12;231:52;318:9;305:23;337:28;359:5;337:28;:::i;:::-;384:5;436:2;421:18;;;;408:32;;-1:-1:-1;;;137:309:1:o;633:173::-;701:20;;-1:-1:-1;;;;;750:31:1;;740:42;;730:70;;796:1;793;786:12;730:70;633:173;;;:::o;811:186::-;870:6;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;1194:548::-;1306:4;1335:2;1364;1353:9;1346:21;1396:6;1390:13;1439:6;1434:2;1423:9;1419:18;1412:34;1464:1;1474:140;1488:6;1485:1;1482:13;1474:140;;;1583:14;;;1579:23;;1573:30;1549:17;;;1568:2;1545:26;1538:66;1503:10;;1474:140;;;1478:3;1663:1;1658:2;1649:6;1638:9;1634:22;1630:31;1623:42;1733:2;1726;1722:7;1717:2;1709:6;1705:15;1701:29;1690:9;1686:45;1682:54;1674:62;;;;1194:548;;;;:::o;1747:254::-;1815:6;1823;1876:2;1864:9;1855:7;1851:23;1847:32;1844:52;;;1892:1;1889;1882:12;1844:52;1915:29;1934:9;1915:29;:::i;2006:248::-;2074:6;2082;2135:2;2123:9;2114:7;2110:23;2106:32;2103:52;;;2151:1;2148;2141:12;2103:52;-1:-1:-1;;2174:23:1;;;2244:2;2229:18;;;2216:32;;-1:-1:-1;2006:248:1:o;2259:328::-;2336:6;2344;2352;2405:2;2393:9;2384:7;2380:23;2376:32;2373:52;;;2421:1;2418;2411:12;2373:52;2444:29;2463:9;2444:29;:::i;:::-;2434:39;;2492:38;2526:2;2515:9;2511:18;2492:38;:::i;:::-;2482:48;;2577:2;2566:9;2562:18;2549:32;2539:42;;2259:328;;;;;:::o;2781:180::-;2840:6;2893:2;2881:9;2872:7;2868:23;2864:32;2861:52;;;2909:1;2906;2899:12;2861:52;-1:-1:-1;2932:23:1;;2781:180;-1:-1:-1;2781:180:1:o;2966:484::-;3061:6;3069;3077;3085;3093;3146:3;3134:9;3125:7;3121:23;3117:33;3114:53;;;3163:1;3160;3153:12;3114:53;3186:29;3205:9;3186:29;:::i;:::-;3176:39;;3234:38;3268:2;3257:9;3253:18;3234:38;:::i;:::-;3224:48;;3291:38;3325:2;3314:9;3310:18;3291:38;:::i;:::-;3281:48;;3348:38;3382:2;3371:9;3367:18;3348:38;:::i;:::-;3338:48;;3405:39;3439:3;3428:9;3424:19;3405:39;:::i;:::-;3395:49;;2966:484;;;;;;;;:::o;3663:523::-;3767:6;3775;3783;3791;3799;3807;3860:3;3848:9;3839:7;3835:23;3831:33;3828:53;;;3877:1;3874;3867:12;3828:53;-1:-1:-1;;3900:23:1;;;3970:2;3955:18;;3942:32;;-1:-1:-1;4021:2:1;4006:18;;3993:32;;4072:2;4057:18;;4044:32;;-1:-1:-1;4123:3:1;4108:19;;4095:33;;-1:-1:-1;4175:3:1;4160:19;4147:33;;-1:-1:-1;3663:523:1;-1:-1:-1;3663:523:1:o;4191:315::-;4256:6;4264;4317:2;4305:9;4296:7;4292:23;4288:32;4285:52;;;4333:1;4330;4323:12;4285:52;4356:29;4375:9;4356:29;:::i;:::-;4346:39;;4435:2;4424:9;4420:18;4407:32;4448:28;4470:5;4448:28;:::i;:::-;4495:5;4485:15;;;4191:315;;;;;:::o;4511:316::-;4588:6;4596;4604;4657:2;4645:9;4636:7;4632:23;4628:32;4625:52;;;4673:1;4670;4663:12;4625:52;-1:-1:-1;;4696:23:1;;;4766:2;4751:18;;4738:32;;-1:-1:-1;4817:2:1;4802:18;;;4789:32;;4511:316;-1:-1:-1;4511:316:1:o;4832:260::-;4900:6;4908;4961:2;4949:9;4940:7;4936:23;4932:32;4929:52;;;4977:1;4974;4967:12;4929:52;5000:29;5019:9;5000:29;:::i;:::-;4990:39;;5048:38;5082:2;5071:9;5067:18;5048:38;:::i;:::-;5038:48;;4832:260;;;;;:::o;5323:356::-;5525:2;5507:21;;;5544:18;;;5537:30;5603:34;5598:2;5583:18;;5576:62;5670:2;5655:18;;5323:356::o;5684:127::-;5745:10;5740:3;5736:20;5733:1;5726:31;5776:4;5773:1;5766:15;5800:4;5797:1;5790:15;5816:217;5856:1;5882;5872:132;;5926:10;5921:3;5917:20;5914:1;5907:31;5961:4;5958:1;5951:15;5989:4;5986:1;5979:15;5872:132;-1:-1:-1;6018:9:1;;5816:217::o;6038:168::-;6111:9;;;6142;;6159:15;;;6153:22;;6139:37;6129:71;;6180:18;;:::i;6211:184::-;6281:6;6334:2;6322:9;6313:7;6309:23;6305:32;6302:52;;;6350:1;6347;6340:12;6302:52;-1:-1:-1;6373:16:1;;6211:184;-1:-1:-1;6211:184:1:o;6679:245::-;6746:6;6799:2;6787:9;6778:7;6774:23;6770:32;6767:52;;;6815:1;6812;6805:12;6767:52;6847:9;6841:16;6866:28;6888:5;6866:28;:::i;7694:128::-;7761:9;;;7782:11;;;7779:37;;;7796:18;;:::i;8176:125::-;8241:9;;;8262:10;;;8259:36;;;8275:18;;:::i;9225:127::-;9286:10;9281:3;9277:20;9274:1;9267:31;9317:4;9314:1;9307:15;9341:4;9338:1;9331:15;9357:980;9619:4;9667:3;9656:9;9652:19;9698:6;9687:9;9680:25;9724:2;9762:6;9757:2;9746:9;9742:18;9735:34;9805:3;9800:2;9789:9;9785:18;9778:31;9829:6;9864;9858:13;9895:6;9887;9880:22;9933:3;9922:9;9918:19;9911:26;;9972:2;9964:6;9960:15;9946:29;;9993:1;10003:195;10017:6;10014:1;10011:13;10003:195;;;10082:13;;-1:-1:-1;;;;;10078:39:1;10066:52;;10173:15;;;;10138:12;;;;10114:1;10032:9;10003:195;;;-1:-1:-1;;;;;;;10254:32:1;;;;10249:2;10234:18;;10227:60;-1:-1:-1;;;10318:3:1;10303:19;10296:35;10215:3;9357:980;-1:-1:-1;;;9357:980:1:o;11164:306::-;11252:6;11260;11268;11321:2;11309:9;11300:7;11296:23;11292:32;11289:52;;;11337:1;11334;11327:12;11289:52;11366:9;11360:16;11350:26;;11416:2;11405:9;11401:18;11395:25;11385:35;;11460:2;11449:9;11445:18;11439:25;11429:35;;11164:306;;;;;:::o

Swarm Source

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