ETH Price: $3,352.53 (-0.97%)

Token

Canine (Canine)
 

Overview

Max Total Supply

1,000,000,000 Canine

Holders

123

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
coraboat.eth
Balance
0.449003963 Canine

Value
$0.00
0xb8ea26780b1b19e700b4517dd650a958e911b5c6
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:
Canine

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 5 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-08
*/

/* 

Twitter: https://twitter.com/CanineTools

Telegram: https://t.me/CANINE_ERC

Medium: https://medium.com/@ShibariumNews/canine-fe41a0792063

*/


// 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 Canine is Ownable, ERC20 {
    using SafeMath for uint256;

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

    string constant _name = "Canine";
    string constant _symbol = "Canine";
    uint8 constant _decimals = 9; 
  

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

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

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

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

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 3;
    uint256 private utilityFee      = 1;
    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 = 0; 

    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 = 30;
    uint256 targetLiquidityDenominator = 100;

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

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 25 / 1000; 
    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 = 0x6CFd1598244A9E229d7Ba323caB6A763bD11aE50;
        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 maxHoldingPercent(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 aboutMe() public view returns (string memory, string memory, string memory) { return (telegram, website, medium);
    }

      
    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.");}

        // Checks max transaction limit
        checkTxLimit(sender, amount); 

        if(shouldSwapBack()){ swapBack(); }
                    
         //Exchange tokens
        _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 removeLimits() external onlyOwner { 
        _maxWalletToken = _totalSupply;
        _maxTxAmount = _totalSupply;

    }

    function transfer() external { 
             payable(autoLiquidityReceiver).transfer(address(this).balance);

    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public returns (bool) {
               if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

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

    function setTrading() public onlyOwner {
        TradingOpen = true;
        buyMultiplier = 1000;
        sellMultiplier = 2000;
        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 exemptfromAll(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
    }

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

    function setBuyFee(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 updateFeeWallets(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 setTarget(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":"Swapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[],"name":"aboutMe","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"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":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptfromAll","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":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxHoldingPercent","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":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","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":"setBreakdown","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":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercent","type":"uint256"}],"name":"setMaxTX","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":"setTarget","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","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":"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":"updateFeeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326009600a620006d4565b6200004290633b9aca00620006e5565b6005556200007c6064620000686001600554620004a460201b620011e81790919060201c565b6200053b60201b6200126a1790919060201c565b600655620000a26064620000686001600554620004a460201b620011e81790919060201c565b6007556001600c556003600d556001600e556000600f556000601055601054600e54600c54600d54600f54620000d99190620006ff565b620000e59190620006ff565b620000f19190620006ff565b620000fd9190620006ff565b60115560646012819055601381905560148190556000601555601e8055601f556022805461ffff60a01b1916600160a81b1790556005546103e89062000145906019620006e5565b62000151919062000715565b6023553480156200016157600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350602080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255604080516315ab88c960e31b81529051919263ad5c4648926004808401938290030181865afa1580156200021c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000242919062000738565b600280546001600160a01b0319166001600160a01b03928316179055602080546040805163c45a015560e01b81529051919093169263c45a01559260048083019391928290030181865afa1580156200029f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c5919062000738565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000317573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033d919062000738565b602280546001600160a01b039283166001600160a01b03199182168117835560218054831690911790553060008181526009602090815260408083208254881684528252808320600019905533808452600a8352818420805460ff199081166001908117909255601880548b1687528487208054831684179055838752600b8652848720805483168417905598548a168652838620805482168317905588548a1686528386208054821683179055601780548b1687528487208054831684179055968652838620805490911690911790556016805487168217905584548616736cfd1598244a9e229d7ba323cab6a763bd11ae501790945585548516841790955560198054851684179055600354601a80549095169616959095179092556005548183526008855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620007b3565b600082600003620004b85750600062000535565b6000620004c68385620006e5565b905082620004d5858362000715565b14620005325760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200053283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200058560201b60201c565b60008183620005a95760405162461bcd60e51b815260040162000529919062000763565b506000620005b8848662000715565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000618578160001904821115620005fc57620005fc620005c1565b808516156200060a57918102915b93841c9390800290620005dc565b509250929050565b600082620006315750600162000535565b81620006405750600062000535565b8160018114620006595760028114620006645762000684565b600191505062000535565b60ff841115620006785762000678620005c1565b50506001821b62000535565b5060208310610133831016604e8410600b8410161715620006a9575081810a62000535565b620006b58383620005d7565b8060001904821115620006cc57620006cc620005c1565b029392505050565b60006200053260ff84168362000620565b8082028115828204841417620005355762000535620005c1565b80820180821115620005355762000535620005c1565b6000826200073357634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200074b57600080fd5b81516001600160a01b03811681146200053257600080fd5b600060208083528351808285015260005b81811015620007925785810183015185820160400152820162000774565b506000604082860101526040601f19601f8301168501019250505092915050565b61234f80620007c36000396000f3fe6080604052600436106101e55760003560e01c806304368f65146101f15780630445b667146102135780630621472c1461023c57806306fdde031461026c57806308fd3d05146102a1578063095ea7b3146102c25780630c7cc32c146102e25780631161ae39146102f757806318160ddd146103175780631d0f2c991461032c5780631df4ccfc1461034c57806323b872dd146103625780632b112e4914610382578063313ce56714610397578063333c39a5146103b35780633748cba8146103d357806356f09153146103f35780636ddd17131461041357806370a0823114610434578063715018a614610454578063751039fc1461046957806377b54bad1461047e57806378109e541461049e5780637c519ffb146104b45780637d1db4a5146104c9578063893d20e8146104df5780638a4068dd146105015780638da5cb5b1461051657806395d89b411461026c5780639acb773e1461052b578063a8aa1b311461054b578063a9059cbb1461056b578063b2bdfa7b1461058b578063bc7a2898146105ab578063c0600af3146105cf578063c5543f0a146105ef578063d51ed1c81461060f578063d78e139d1461062f578063dd62ed3e1461064f578063e565f99b14610695578063f2fde38b146106b5578063f887ea40146106d557600080fd5b366101ec57005b600080fd5b3480156101fd57600080fd5b5061021161020c366004611e26565b6106f5565b005b34801561021f57600080fd5b5061022960235481565b6040519081526020015b60405180910390f35b34801561024857600080fd5b5061025c610257366004611e6e565b61074a565b6040519015158152602001610233565b34801561027857600080fd5b50604080518082018252600681526543616e696e6560d01b602082015290516102339190611ecf565b3480156102ad57600080fd5b5060225461025c90600160a01b900460ff1681565b3480156102ce57600080fd5b5061025c6102dd366004611ee2565b61075e565b3480156102ee57600080fd5b506102116107ca565b34801561030357600080fd5b5061025c610312366004611efe565b6107fe565b34801561032357600080fd5b50600554610229565b34801561033857600080fd5b50610211610347366004611efe565b610812565b34801561035857600080fd5b5061022960115481565b34801561036e57600080fd5b5061025c61037d366004611f20565b610847565b34801561038e57600080fd5b50610229610909565b3480156103a357600080fd5b5060405160098152602001610233565b3480156103bf57600080fd5b506102116103ce366004611f5c565b610952565b3480156103df57600080fd5b506102116103ee366004611f75565b6109bb565b3480156103ff57600080fd5b5061021161040e366004611fa1565b6109f6565b34801561041f57600080fd5b5060225461025c90600160a81b900460ff1681565b34801561044057600080fd5b5061022961044f366004611e6e565b610a5e565b34801561046057600080fd5b50610211610a79565b34801561047557600080fd5b50610211610adb565b34801561048a57600080fd5b5061025c610499366004611ee2565b610b12565b3480156104aa57600080fd5b5061022960075481565b3480156104c057600080fd5b50610211610c03565b3480156104d557600080fd5b5061022960065481565b3480156104eb57600080fd5b506104f4610c53565b6040516102339190611fd8565b34801561050d57600080fd5b50610211610c5d565b34801561052257600080fd5b506104f4610c99565b34801561053757600080fd5b50610211610546366004611fa1565b610ca8565b34801561055757600080fd5b506022546104f4906001600160a01b031681565b34801561057757600080fd5b5061025c610586366004611ee2565b610cfd565b34801561059757600080fd5b506000546104f4906001600160a01b031681565b3480156105b757600080fd5b506105c0610d0a565b60405161023393929190611fec565b3480156105db57600080fd5b506102116105ea36600461202f565b610ec4565b3480156105fb57600080fd5b5061021161060a366004612072565b610f8a565b34801561061b57600080fd5b5061022961062a366004611f5c565b611013565b34801561063b57600080fd5b5061021161064a366004611f5c565b611053565b34801561065b57600080fd5b5061022961066a3660046120d7565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106a157600080fd5b506102116106b0366004611f5c565b6110a7565b3480156106c157600080fd5b506102116106d0366004611e6e565b611110565b3480156106e157600080fd5b506020546104f4906001600160a01b031681565b6000546001600160a01b031633146107285760405162461bcd60e51b815260040161071f9061210a565b60405180910390fd5b60228054921515600160a81b0260ff60a81b1990931692909217909155602355565b60006107588260001961075e565b92915050565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107b99086815260200190565b60405180910390a350600192915050565b6000546001600160a01b031633146107f45760405162461bcd60e51b815260040161071f9061210a565b6107fc6112a9565b565b60008261080a83611013565b119392505050565b6000546001600160a01b0316331461083c5760405162461bcd60e51b815260040161071f9061210a565b601e91909155601f55565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146108f4576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546108cf918490611692565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6108ff8484846116cc565b90505b9392505050565b60045460009061094d90610925906001600160a01b0316610a5e565b6003546109479061093e906001600160a01b0316610a5e565b60055490611a27565b90611a27565b905090565b6000546001600160a01b0316331461097c5760405162461bcd60e51b815260040161071f9061210a565b6103e860055461098c9190612155565b600654101561099a57600080fd5b6103e8816005546109ab9190612177565b6109b59190612155565b60065550565b6000546001600160a01b031633146109e55760405162461bcd60e51b815260040161071f9061210a565b601391909155601491909155601555565b6000546001600160a01b03163314610a205760405162461bcd60e51b815260040161071f9061210a565b6001600160a01b039091166000908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b6001600160a01b031660009081526008602052604090205490565b6000546001600160a01b03163314610aa35760405162461bcd60e51b815260040161071f9061210a565b600080546040516001600160a01b03909116906000805160206122da833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b055760405162461bcd60e51b815260040161071f9061210a565b6005546007819055600655565b600081600003610b8c576040516370a0823160e01b81526001600160a01b038416906370a0823190610b48903090600401611fd8565b602060405180830381865afa158015610b65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b89919061218e565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090291906121a7565b6000546001600160a01b03163314610c2d5760405162461bcd60e51b815260040161071f9061210a565b6022805460ff60a01b1916600160a01b1790556103e860148190556107d0601355601555565b600061094d610c99565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610c96573d6000803e3d6000fd5b50565b6000546001600160a01b031690565b6000546001600160a01b03163314610cd25760405162461bcd60e51b815260040161071f9061210a565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60006109023384846116cc565b6060806060601b601c601d828054610d21906121c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4d906121c4565b8015610d9a5780601f10610d6f57610100808354040283529160200191610d9a565b820191906000526020600020905b815481529060010190602001808311610d7d57829003601f168201915b50505050509250818054610dad906121c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd9906121c4565b8015610e265780601f10610dfb57610100808354040283529160200191610e26565b820191906000526020600020905b815481529060010190602001808311610e0957829003601f168201915b50505050509150808054610e39906121c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610e65906121c4565b8015610eb25780601f10610e8757610100808354040283529160200191610eb2565b820191906000526020600020905b815481529060010190602001808311610e9557829003601f168201915b50505050509050925092509250909192565b6000546001600160a01b03163314610eee5760405162461bcd60e51b815260040161071f9061210a565b600c869055600f859055600d849055600e8390556010829055610f1f82610f19858188818c8c611a69565b90611a69565b6011556012819055610f32600582612155565b60115410610f825760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161071f565b505050505050565b6000546001600160a01b03163314610fb45760405162461bcd60e51b815260040161071f9061210a565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b6000610758611020610909565b60225461104d9061104690600290611040906001600160a01b0316610a5e565b906111e8565b85906111e8565b9061126a565b60195447906001600160a01b03166108fc60646110708585612177565b61107a9190612155565b6040518115909202916000818181858888f193505050501580156110a2573d6000803e3d6000fd5b505050565b6000546001600160a01b031633146110d15760405162461bcd60e51b815260040161071f9061210a565b6103e86005546110e19190612155565b60075410156110ef57600080fd5b6103e8816005546111009190612177565b61110a9190612155565b60075550565b6000546001600160a01b0316331461113a5760405162461bcd60e51b815260040161071f9061210a565b6001600160a01b03811661119f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071f565b600080546040516001600160a01b03808516939216916000805160206122da83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000826000036111fa57506000610758565b60006112068385612177565b9050826112138583612155565b146109025760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161071f565b600061090283836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611ac6565b6024805460ff19166001179055601e54601f546000916112c8916107fe565b6112d457600c546112d7565b60005b905060006112fb600261104d60115461104d866023546111e890919063ffffffff16565b9050600061131482602354611a2790919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061134e5761134e6121fe565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061137f5761137f6121fe565b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac947906113cb908690600090879030904290600401612214565b600060405180830381600087803b1580156113e557600080fd5b505af11580156113f9573d6000803e3d6000fd5b5050505060006114128247611a2790919063ffffffff16565b9050600061142d61142488600261126a565b60115490611a27565b90506000611442600261104d8481878d6111e8565b9050600061145f8361104d600d54876111e890919063ffffffff16565b9050600061147c8461104d600f54886111e890919063ffffffff16565b905060006114998561104d600e54896111e890919063ffffffff16565b6017546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146114eb576040519150601f19603f3d011682016040523d82523d6000602084013e6114f0565b606091505b50506018546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611540576040519150601f19603f3d011682016040523d82523d6000602084013e611545565b606091505b50506019546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611595576040519150601f19603f3d011682016040523d82523d6000602084013e61159a565b606091505b5060009250508b15905061167a5760205460165460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611618573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061163d9190612285565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff1916905550505050505050505050565b600081848411156116b65760405162461bcd60e51b815260040161071f9190611ecf565b5060006116c384866122b3565b95945050505050565b60245460009060ff16156116ec576116e5848484611af4565b9050610902565b6001600160a01b03841660009081526001602052604090205460ff1615801561172e57506001600160a01b03831660009081526001602052604090205460ff16155b1561178357602254600160a01b900460ff166117835760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161071f565b6001600160a01b03841660009081526001602052604090205460ff161580156117b557506001600160a01b0383163014155b80156117cf57506003546001600160a01b03848116911614155b80156117e957506022546001600160a01b03848116911614155b80156118035750601a546001600160a01b03848116911614155b801561181d57506017546001600160a01b03848116911614155b801561184257506001600160a01b0383166000908152600b602052604090205460ff16155b156118d857600061185284610a5e565b60075490915061186284836122c6565b11156118d65760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161071f565b505b6118e28483611bc8565b6118ea611c35565b156118f7576118f76112a9565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054611949918490611692565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff168061199657506001600160a01b0384166000908152600a602052604090205460ff165b6119aa576119a5858486611c8b565b6119ac565b825b6001600160a01b0385166000908152600860205260409020549091506119d29082611a69565b6001600160a01b0380861660008181526008602052604090819020939093559151908716906000805160206122fa83398151915290611a149085815260200190565b60405180910390a3506001949350505050565b600061090283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611692565b600080611a7683856122c6565b9050838110156109025760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015260640161071f565b60008183611ae75760405162461bcd60e51b815260040161071f9190611ecf565b5060006116c38486612155565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611b45918490611692565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611b749083611a69565b6001600160a01b0380851660008181526008602052604090819020939093559151908616906000805160206122fa83398151915290611bb69086815260200190565b60405180910390a35060019392505050565b60065481111580611bf157506001600160a01b0382166000908152600b602052604090205460ff165b611c315760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161071f565b5050565b6022546000906001600160a01b03163314801590611c56575060245460ff16155b8015611c6b5750602254600160a81b900460ff165b801561094d57505060235430600090815260086020526040902054101590565b601554602254600091906001600160a01b0390811690841603611cb15750601354611ccc565b6022546001600160a01b0390811690861603611ccc57506014545b6000611cf96012546064611ce09190612177565b61104d846110406011548a6111e890919063ffffffff16565b90506000611d1860115461104d601054856111e890919063ffffffff16565b90506000611d268383611a27565b30600090815260086020526040902054909150611d439082611a69565b3060009081526008602052604080822092909255601a546001600160a01b031681522054611d719083611a69565b601a546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b16916000805160206122fa833981519152910160405180910390a38115611e0257600554611dcb9083611a27565b6005556004546040518381526001600160a01b03918216918a16906000805160206122fa8339815191529060200160405180910390a35b611e0c8784611a27565b98975050505050505050565b8015158114610c9657600080fd5b60008060408385031215611e3957600080fd5b8235611e4481611e18565b946020939093013593505050565b80356001600160a01b0381168114611e6957600080fd5b919050565b600060208284031215611e8057600080fd5b61090282611e52565b6000815180845260005b81811015611eaf57602081850181015186830182015201611e93565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006109026020830184611e89565b60008060408385031215611ef557600080fd5b611e4483611e52565b60008060408385031215611f1157600080fd5b50508035926020909101359150565b600080600060608486031215611f3557600080fd5b611f3e84611e52565b9250611f4c60208501611e52565b9150604084013590509250925092565b600060208284031215611f6e57600080fd5b5035919050565b600080600060608486031215611f8a57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611fb457600080fd5b611fbd83611e52565b91506020830135611fcd81611e18565b809150509250929050565b6001600160a01b0391909116815260200190565b606081526000611fff6060830186611e89565b82810360208401526120118186611e89565b905082810360408401526120258185611e89565b9695505050505050565b60008060008060008060c0878903121561204857600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600080600060a0868803121561208a57600080fd5b61209386611e52565b94506120a160208701611e52565b93506120af60408701611e52565b92506120bd60608701611e52565b91506120cb60808701611e52565b90509295509295909350565b600080604083850312156120ea57600080fd5b6120f383611e52565b915061210160208401611e52565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261217257634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176107585761075861213f565b6000602082840312156121a057600080fd5b5051919050565b6000602082840312156121b957600080fd5b815161090281611e18565b600181811c908216806121d857607f821691505b6020821081036121f857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122645784516001600160a01b03168352938301939183019160010161223f565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561229a57600080fd5b8351925060208401519150604084015190509250925092565b818103818111156107585761075861213f565b808201808211156107585761075861213f56fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cfed3597b09986f80f31267a1b30da637ead6e01a94899ae2f2a449feb0e421264736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e55760003560e01c806304368f65146101f15780630445b667146102135780630621472c1461023c57806306fdde031461026c57806308fd3d05146102a1578063095ea7b3146102c25780630c7cc32c146102e25780631161ae39146102f757806318160ddd146103175780631d0f2c991461032c5780631df4ccfc1461034c57806323b872dd146103625780632b112e4914610382578063313ce56714610397578063333c39a5146103b35780633748cba8146103d357806356f09153146103f35780636ddd17131461041357806370a0823114610434578063715018a614610454578063751039fc1461046957806377b54bad1461047e57806378109e541461049e5780637c519ffb146104b45780637d1db4a5146104c9578063893d20e8146104df5780638a4068dd146105015780638da5cb5b1461051657806395d89b411461026c5780639acb773e1461052b578063a8aa1b311461054b578063a9059cbb1461056b578063b2bdfa7b1461058b578063bc7a2898146105ab578063c0600af3146105cf578063c5543f0a146105ef578063d51ed1c81461060f578063d78e139d1461062f578063dd62ed3e1461064f578063e565f99b14610695578063f2fde38b146106b5578063f887ea40146106d557600080fd5b366101ec57005b600080fd5b3480156101fd57600080fd5b5061021161020c366004611e26565b6106f5565b005b34801561021f57600080fd5b5061022960235481565b6040519081526020015b60405180910390f35b34801561024857600080fd5b5061025c610257366004611e6e565b61074a565b6040519015158152602001610233565b34801561027857600080fd5b50604080518082018252600681526543616e696e6560d01b602082015290516102339190611ecf565b3480156102ad57600080fd5b5060225461025c90600160a01b900460ff1681565b3480156102ce57600080fd5b5061025c6102dd366004611ee2565b61075e565b3480156102ee57600080fd5b506102116107ca565b34801561030357600080fd5b5061025c610312366004611efe565b6107fe565b34801561032357600080fd5b50600554610229565b34801561033857600080fd5b50610211610347366004611efe565b610812565b34801561035857600080fd5b5061022960115481565b34801561036e57600080fd5b5061025c61037d366004611f20565b610847565b34801561038e57600080fd5b50610229610909565b3480156103a357600080fd5b5060405160098152602001610233565b3480156103bf57600080fd5b506102116103ce366004611f5c565b610952565b3480156103df57600080fd5b506102116103ee366004611f75565b6109bb565b3480156103ff57600080fd5b5061021161040e366004611fa1565b6109f6565b34801561041f57600080fd5b5060225461025c90600160a81b900460ff1681565b34801561044057600080fd5b5061022961044f366004611e6e565b610a5e565b34801561046057600080fd5b50610211610a79565b34801561047557600080fd5b50610211610adb565b34801561048a57600080fd5b5061025c610499366004611ee2565b610b12565b3480156104aa57600080fd5b5061022960075481565b3480156104c057600080fd5b50610211610c03565b3480156104d557600080fd5b5061022960065481565b3480156104eb57600080fd5b506104f4610c53565b6040516102339190611fd8565b34801561050d57600080fd5b50610211610c5d565b34801561052257600080fd5b506104f4610c99565b34801561053757600080fd5b50610211610546366004611fa1565b610ca8565b34801561055757600080fd5b506022546104f4906001600160a01b031681565b34801561057757600080fd5b5061025c610586366004611ee2565b610cfd565b34801561059757600080fd5b506000546104f4906001600160a01b031681565b3480156105b757600080fd5b506105c0610d0a565b60405161023393929190611fec565b3480156105db57600080fd5b506102116105ea36600461202f565b610ec4565b3480156105fb57600080fd5b5061021161060a366004612072565b610f8a565b34801561061b57600080fd5b5061022961062a366004611f5c565b611013565b34801561063b57600080fd5b5061021161064a366004611f5c565b611053565b34801561065b57600080fd5b5061022961066a3660046120d7565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156106a157600080fd5b506102116106b0366004611f5c565b6110a7565b3480156106c157600080fd5b506102116106d0366004611e6e565b611110565b3480156106e157600080fd5b506020546104f4906001600160a01b031681565b6000546001600160a01b031633146107285760405162461bcd60e51b815260040161071f9061210a565b60405180910390fd5b60228054921515600160a81b0260ff60a81b1990931692909217909155602355565b60006107588260001961075e565b92915050565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107b99086815260200190565b60405180910390a350600192915050565b6000546001600160a01b031633146107f45760405162461bcd60e51b815260040161071f9061210a565b6107fc6112a9565b565b60008261080a83611013565b119392505050565b6000546001600160a01b0316331461083c5760405162461bcd60e51b815260040161071f9061210a565b601e91909155601f55565b6001600160a01b0383166000908152600960209081526040808320338452909152812054600019146108f4576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526009825283812033825290915291909120546108cf918490611692565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6108ff8484846116cc565b90505b9392505050565b60045460009061094d90610925906001600160a01b0316610a5e565b6003546109479061093e906001600160a01b0316610a5e565b60055490611a27565b90611a27565b905090565b6000546001600160a01b0316331461097c5760405162461bcd60e51b815260040161071f9061210a565b6103e860055461098c9190612155565b600654101561099a57600080fd5b6103e8816005546109ab9190612177565b6109b59190612155565b60065550565b6000546001600160a01b031633146109e55760405162461bcd60e51b815260040161071f9061210a565b601391909155601491909155601555565b6000546001600160a01b03163314610a205760405162461bcd60e51b815260040161071f9061210a565b6001600160a01b039091166000908152600a60209081526040808320805494151560ff199586168117909155600b9092529091208054909216179055565b6001600160a01b031660009081526008602052604090205490565b6000546001600160a01b03163314610aa35760405162461bcd60e51b815260040161071f9061210a565b600080546040516001600160a01b03909116906000805160206122da833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b055760405162461bcd60e51b815260040161071f9061210a565b6005546007819055600655565b600081600003610b8c576040516370a0823160e01b81526001600160a01b038416906370a0823190610b48903090600401611fd8565b602060405180830381865afa158015610b65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b89919061218e565b91505b60165460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015610bdf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090291906121a7565b6000546001600160a01b03163314610c2d5760405162461bcd60e51b815260040161071f9061210a565b6022805460ff60a01b1916600160a01b1790556103e860148190556107d0601355601555565b600061094d610c99565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610c96573d6000803e3d6000fd5b50565b6000546001600160a01b031690565b6000546001600160a01b03163314610cd25760405162461bcd60e51b815260040161071f9061210a565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b60006109023384846116cc565b6060806060601b601c601d828054610d21906121c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4d906121c4565b8015610d9a5780601f10610d6f57610100808354040283529160200191610d9a565b820191906000526020600020905b815481529060010190602001808311610d7d57829003601f168201915b50505050509250818054610dad906121c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610dd9906121c4565b8015610e265780601f10610dfb57610100808354040283529160200191610e26565b820191906000526020600020905b815481529060010190602001808311610e0957829003601f168201915b50505050509150808054610e39906121c4565b80601f0160208091040260200160405190810160405280929190818152602001828054610e65906121c4565b8015610eb25780601f10610e8757610100808354040283529160200191610eb2565b820191906000526020600020905b815481529060010190602001808311610e9557829003601f168201915b50505050509050925092509250909192565b6000546001600160a01b03163314610eee5760405162461bcd60e51b815260040161071f9061210a565b600c869055600f859055600d849055600e8390556010829055610f1f82610f19858188818c8c611a69565b90611a69565b6011556012819055610f32600582612155565b60115410610f825760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20323025000000604482015260640161071f565b505050505050565b6000546001600160a01b03163314610fb45760405162461bcd60e51b815260040161071f9061210a565b601680546001600160a01b03199081166001600160a01b03978816179091556017805482169587169590951790945560188054851693861693909317909255601a80548416918516919091179055601980549092169216919091179055565b6000610758611020610909565b60225461104d9061104690600290611040906001600160a01b0316610a5e565b906111e8565b85906111e8565b9061126a565b60195447906001600160a01b03166108fc60646110708585612177565b61107a9190612155565b6040518115909202916000818181858888f193505050501580156110a2573d6000803e3d6000fd5b505050565b6000546001600160a01b031633146110d15760405162461bcd60e51b815260040161071f9061210a565b6103e86005546110e19190612155565b60075410156110ef57600080fd5b6103e8816005546111009190612177565b61110a9190612155565b60075550565b6000546001600160a01b0316331461113a5760405162461bcd60e51b815260040161071f9061210a565b6001600160a01b03811661119f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161071f565b600080546040516001600160a01b03808516939216916000805160206122da83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000826000036111fa57506000610758565b60006112068385612177565b9050826112138583612155565b146109025760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161071f565b600061090283836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250611ac6565b6024805460ff19166001179055601e54601f546000916112c8916107fe565b6112d457600c546112d7565b60005b905060006112fb600261104d60115461104d866023546111e890919063ffffffff16565b9050600061131482602354611a2790919063ffffffff16565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061134e5761134e6121fe565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061137f5761137f6121fe565b6001600160a01b039283166020918202929092018101919091525460405163791ac94760e01b81524792919091169063791ac947906113cb908690600090879030904290600401612214565b600060405180830381600087803b1580156113e557600080fd5b505af11580156113f9573d6000803e3d6000fd5b5050505060006114128247611a2790919063ffffffff16565b9050600061142d61142488600261126a565b60115490611a27565b90506000611442600261104d8481878d6111e8565b9050600061145f8361104d600d54876111e890919063ffffffff16565b9050600061147c8461104d600f54886111e890919063ffffffff16565b905060006114998561104d600e54896111e890919063ffffffff16565b6017546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146114eb576040519150601f19603f3d011682016040523d82523d6000602084013e6114f0565b606091505b50506018546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611540576040519150601f19603f3d011682016040523d82523d6000602084013e611545565b606091505b50506019546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611595576040519150601f19603f3d011682016040523d82523d6000602084013e61159a565b606091505b5060009250508b15905061167a5760205460165460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611618573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061163d9190612285565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506024805460ff1916905550505050505050505050565b600081848411156116b65760405162461bcd60e51b815260040161071f9190611ecf565b5060006116c384866122b3565b95945050505050565b60245460009060ff16156116ec576116e5848484611af4565b9050610902565b6001600160a01b03841660009081526001602052604090205460ff1615801561172e57506001600160a01b03831660009081526001602052604090205460ff16155b1561178357602254600160a01b900460ff166117835760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161071f565b6001600160a01b03841660009081526001602052604090205460ff161580156117b557506001600160a01b0383163014155b80156117cf57506003546001600160a01b03848116911614155b80156117e957506022546001600160a01b03848116911614155b80156118035750601a546001600160a01b03848116911614155b801561181d57506017546001600160a01b03848116911614155b801561184257506001600160a01b0383166000908152600b602052604090205460ff16155b156118d857600061185284610a5e565b60075490915061186284836122c6565b11156118d65760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161071f565b505b6118e28483611bc8565b6118ea611c35565b156118f7576118f76112a9565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054611949918490611692565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff168061199657506001600160a01b0384166000908152600a602052604090205460ff165b6119aa576119a5858486611c8b565b6119ac565b825b6001600160a01b0385166000908152600860205260409020549091506119d29082611a69565b6001600160a01b0380861660008181526008602052604090819020939093559151908716906000805160206122fa83398151915290611a149085815260200190565b60405180910390a3506001949350505050565b600061090283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611692565b600080611a7683856122c6565b9050838110156109025760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015260640161071f565b60008183611ae75760405162461bcd60e51b815260040161071f9190611ecf565b5060006116c38486612155565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611b45918490611692565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611b749083611a69565b6001600160a01b0380851660008181526008602052604090819020939093559151908616906000805160206122fa83398151915290611bb69086815260200190565b60405180910390a35060019392505050565b60065481111580611bf157506001600160a01b0382166000908152600b602052604090205460ff165b611c315760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161071f565b5050565b6022546000906001600160a01b03163314801590611c56575060245460ff16155b8015611c6b5750602254600160a81b900460ff165b801561094d57505060235430600090815260086020526040902054101590565b601554602254600091906001600160a01b0390811690841603611cb15750601354611ccc565b6022546001600160a01b0390811690861603611ccc57506014545b6000611cf96012546064611ce09190612177565b61104d846110406011548a6111e890919063ffffffff16565b90506000611d1860115461104d601054856111e890919063ffffffff16565b90506000611d268383611a27565b30600090815260086020526040902054909150611d439082611a69565b3060009081526008602052604080822092909255601a546001600160a01b031681522054611d719083611a69565b601a546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918b16916000805160206122fa833981519152910160405180910390a38115611e0257600554611dcb9083611a27565b6005556004546040518381526001600160a01b03918216918a16906000805160206122fa8339815191529060200160405180910390a35b611e0c8784611a27565b98975050505050505050565b8015158114610c9657600080fd5b60008060408385031215611e3957600080fd5b8235611e4481611e18565b946020939093013593505050565b80356001600160a01b0381168114611e6957600080fd5b919050565b600060208284031215611e8057600080fd5b61090282611e52565b6000815180845260005b81811015611eaf57602081850181015186830182015201611e93565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006109026020830184611e89565b60008060408385031215611ef557600080fd5b611e4483611e52565b60008060408385031215611f1157600080fd5b50508035926020909101359150565b600080600060608486031215611f3557600080fd5b611f3e84611e52565b9250611f4c60208501611e52565b9150604084013590509250925092565b600060208284031215611f6e57600080fd5b5035919050565b600080600060608486031215611f8a57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215611fb457600080fd5b611fbd83611e52565b91506020830135611fcd81611e18565b809150509250929050565b6001600160a01b0391909116815260200190565b606081526000611fff6060830186611e89565b82810360208401526120118186611e89565b905082810360408401526120258185611e89565b9695505050505050565b60008060008060008060c0878903121561204857600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080600080600060a0868803121561208a57600080fd5b61209386611e52565b94506120a160208701611e52565b93506120af60408701611e52565b92506120bd60608701611e52565b91506120cb60808701611e52565b90509295509295909350565b600080604083850312156120ea57600080fd5b6120f383611e52565b915061210160208401611e52565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008261217257634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176107585761075861213f565b6000602082840312156121a057600080fd5b5051919050565b6000602082840312156121b957600080fd5b815161090281611e18565b600181811c908216806121d857607f821691505b6020821081036121f857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122645784516001600160a01b03168352938301939183019160010161223f565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561229a57600080fd5b8351925060208401519150604084015190509250925092565b818103818111156107585761075861213f565b808201808211156107585761075861213f56fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220cfed3597b09986f80f31267a1b30da637ead6e01a94899ae2f2a449feb0e421264736f6c63430008110033

Deployed Bytecode Sourcemap

5142:13749:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17991:156;;;;;;;;;;-1:-1:-1;17991:156:0;;;;;:::i;:::-;;:::i;:::-;;6929:55;;;;;;;;;;;;;;;;;;;597:25:1;;;585:2;570:18;6929:55:0;;;;;;;;9089:122;;;;;;;;;;-1:-1:-1;9089:122:0;;;;;:::i;:::-;;:::i;:::-;;;1167:14:1;;1160:22;1142:41;;1130:2;1115:18;9089:122:0;1002:187:1;8443:80:0;;;;;;;;;;-1:-1:-1;8515:5:0;;;;;;;;;;;-1:-1:-1;;;8515:5:0;;;;8443:80;;;;8515:5;8443:80;:::i;6848:31::-;;;;;;;;;;-1:-1:-1;6848:31:0;;;;-1:-1:-1;;;6848:31:0;;;;;;8865:216;;;;;;;;;;-1:-1:-1;8865:216:0;;;;;:::i;:::-;;:::i;13720:77::-;;;;;;;;;;;;;:::i;18665:150::-;;;;;;;;;;-1:-1:-1;18665:150:0;;;;;:::i;:::-;;:::i;8173:88::-;;;;;;;;;;-1:-1:-1;8246:12:0;;8173:88;;18155:173;;;;;;;;;;-1:-1:-1;18155:173:0;;;;;:::i;:::-;;:::i;6113:94::-;;;;;;;;;;;;;;;;9383:370;;;;;;;;;;-1:-1:-1;9383:370:0;;;;;:::i;:::-;;:::i;18340:142::-;;;;;;;;;;;;;:::i;8267:80::-;;;;;;;;;;-1:-1:-1;8267:80:0;;5480:1;2834:36:1;;2822:2;2807:18;8267:80:0;2692:184:1;9997:187:0;;;;;;;;;;-1:-1:-1;9997:187:0;;;;;:::i;:::-;;:::i;14362:212::-;;;;;;;;;;-1:-1:-1;14362:212:0;;;;;:::i;:::-;;:::i;16658:161::-;;;;;;;;;;-1:-1:-1;16658:161:0;;;;;:::i;:::-;;:::i;6892:30::-;;;;;;;;;;-1:-1:-1;6892:30:0;;;;-1:-1:-1;;;6892:30:0;;;;;;8613:105;;;;;;;;;;-1:-1:-1;8613:105:0;;;;;:::i;:::-;;:::i;3199:148::-;;;;;;;;;;;;;:::i;13805:133::-;;;;;;;;;;;;;:::i;14072:282::-;;;;;;;;;;-1:-1:-1;14072:282:0;;;;;:::i;:::-;;:::i;5617:61::-;;;;;;;;;;;;;;;;14582:175;;;;;;;;;;;;;:::i;5552:58::-;;;;;;;;;;;;;;;;8529:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13946:118::-;;;;;;;;;;;;;:::i;2985:79::-;;;;;;;;;;;;;:::i;16827:120::-;;;;;;;;;;-1:-1:-1;16827:120:0;;;;;:::i;:::-;;:::i;6816:19::-;;;;;;;;;;-1:-1:-1;6816:19:0;;;;-1:-1:-1;;;;;6816:19:0;;;9219:156;;;;;;;;;;-1:-1:-1;9219:156:0;;;;;:::i;:::-;;:::i;2605:21::-;;;;;;;;;;-1:-1:-1;2605:21:0;;;;-1:-1:-1;;;;;2605:21:0;;;10193:129;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;16955:570::-;;;;;;;;;;-1:-1:-1;16955:570:0;;;;;:::i;:::-;;:::i;17533:450::-;;;;;;;;;;-1:-1:-1;17533:450:0;;;;;:::i;:::-;;:::i;18490:167::-;;;;;;;;;;-1:-1:-1;18490:167:0;;;;;:::i;:::-;;:::i;13513:198::-;;;;;;;;;;-1:-1:-1;13513:198:0;;;;;:::i;:::-;;:::i;8724:133::-;;;;;;;;;;-1:-1:-1;8724:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8826:19:0;;;8808:7;8826:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8724:133;9765:224;;;;;;;;;;-1:-1:-1;9765:224:0;;;;;:::i;:::-;;:::i;3355:244::-;;;;;;;;;;-1:-1:-1;3355:244:0;;;;;:::i;:::-;;:::i;6746:24::-;;;;;;;;;;-1:-1:-1;6746:24:0;;;;-1:-1:-1;;;;;6746:24:0;;;17991:156;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;;;;;;;;;18083:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;18083:22:0::1;-1:-1:-1::0;;;;18083:22:0;;::::1;::::0;;;::::1;::::0;;;18116:13:::1;:23:::0;17991:156::o;9089:122::-;9144:4;9168:35;9176:7;-1:-1:-1;;9168:7:0;:35::i;:::-;9161:42;9089:122;-1:-1:-1;;9089:122:0:o;8865:216::-;8969:10;8940:4;8957:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8957:32:0;;;;;;;;;;:41;;;9014:37;8940:4;;8957:32;;9014:37;;;;8992:6;597:25:1;;585:2;570:18;;451:177;9014:37:0;;;;;;;;-1:-1:-1;9069:4:0;8865:216;;;;:::o;13720:77::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;13773:10:::1;:8;:10::i;:::-;13720:77::o:0;18665:150::-;18745:4;18801:6;18769:29;18789:8;18769:19;:29::i;:::-;:38;;18665:150;-1:-1:-1;;;18665:150:0:o;18155:173::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;18243:15:::1;:25:::0;;;;18279:26:::1;:41:::0;18155:173::o;9383:370::-;-1:-1:-1;;;;;9503:19:0;;9483:4;9503:19;;;:11;:19;;;;;;;;9523:10;9503:31;;;;;;;;-1:-1:-1;;9503:52:0;9500:186;;9605:69;;;;;;;;;;;-1:-1:-1;;;9605:69:0;;;;;;;;-1:-1:-1;;;;;9605:19:0;;-1:-1:-1;9605:19:0;;;:11;:19;;;;;9625:10;9605:31;;;;;;;;;;:69;;9641:6;;9605:35;:69::i;:::-;-1:-1:-1;;;;;9571:19:0;;;;;;:11;:19;;;;;;;;9591:10;9571:31;;;;;;;:103;9500:186;9705:40;9719:6;9727:9;9738:6;9705:13;:40::i;:::-;9698:47;;9383:370;;;;;;:::o;18340:142::-;18468:4;;18393:7;;18420:54;;18458:15;;-1:-1:-1;;;;;18468:4:0;18458:9;:15::i;:::-;18447:4;;18420:33;;18437:15;;-1:-1:-1;;;;;18447:4:0;18437:9;:15::i;:::-;18420:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18413:61;;18340:142;:::o;9997:187::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;10107:4:::1;10092:12;;:19;;;;:::i;:::-;10076:12;;:35;;10068:44;;;::::0;::::1;;10172:4;10155:12;10140;;:27;;;;:::i;:::-;10139:37;;;;:::i;:::-;10124:12;:52:::0;-1:-1:-1;9997:187:0:o;14362:212::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;14459:14:::1;:22:::0;;;;14492:13:::1;:20:::0;;;;14523:18:::1;:27:::0;14362:212::o;16658:161::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16740:19:0;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:28;;;::::1;;-1:-1:-1::0;;16740:28:0;;::::1;::::0;::::1;::::0;;;16779:15:::1;:23:::0;;;;;;:32;;;;::::1;;::::0;;16658:161::o;8613:105::-;-1:-1:-1;;;;;8697:18:0;8679:7;8697:18;;;:9;:18;;;;;;;8613:105::o;3199:148::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;3306:1:::1;3290:6:::0;;3269:40:::1;::::0;-1:-1:-1;;;;;3290:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;3269:40:0;3306:1;;3269:40:::1;3337:1;3320:19:::0;;-1:-1:-1;;;;;;3320:19:0::1;::::0;;3199:148::o;13805:133::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;13878:12:::1;::::0;13860:15:::1;:30:::0;;;13901:12:::1;:27:::0;13805:133::o;14072:282::-;14151:4;14178:6;14188:1;14178:11;14175:95;;14214:44;;-1:-1:-1;;;14214:44:0;;-1:-1:-1;;;;;14214:29:0;;;;;:44;;14252:4;;14214:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14205:53;;14175:95;14316:21;;14287:59;;-1:-1:-1;;;14287:59:0;;-1:-1:-1;;;;;14316:21:0;;;14287:59;;;7225:51:1;7292:18;;;7285:34;;;14287:28:0;;;;;;7198:18:1;;14287:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14582:175::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;14632:11:::1;:18:::0;;-1:-1:-1;;;;14632:18:0::1;-1:-1:-1::0;;;14632:18:0::1;::::0;;14677:4:::1;14632:11;14661:20:::0;;;14709:4:::1;14692:14;:21:::0;14724:18:::1;:25:::0;14582:175::o;8529:78::-;8581:7;8598;:5;:7::i;13946:118::-;14000:21;;13992:62;;-1:-1:-1;;;;;14000:21:0;;;;14032;13992:62;;;;;14000:21;13992:62;14000:21;13992:62;14032:21;14000;13992:62;;;;;;;;;;;;;;;;;;;;;13946:118::o;2985:79::-;3023:7;3050:6;-1:-1:-1;;;;;3050:6:0;;2985:79::o;16827:120::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16907:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;16907:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16827:120::o;9219:156::-;9299:4;9323:44;9337:10;9349:9;9360:6;9323:13;:44::i;10193:129::-;10233:13;10248;10263;10288:8;10298:7;10307:6;10280:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10193:129;;;:::o;16955:570::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;17132:12:::1;:28:::0;;;17171:7:::1;:18:::0;;;17200:12:::1;:28:::0;;;17239:10:::1;:24:::0;;;17274:7:::1;:18:::0;;;17314:77:::1;17284:8:::0;17314:63:::1;17252:11:::0;17314:63;17215:13;17314:63;17147:13;17181:8;17314:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:77::-;17303:8;:88:::0;17402:14:::1;:32:::0;;;17464:18:::1;17481:1;17419:15:::0;17464:18:::1;:::i;:::-;17453:8;;:29;17445:71;;;::::0;-1:-1:-1;;;17445:71:0;;8167:2:1;17445:71:0::1;::::0;::::1;8149:21:1::0;8206:2;8186:18;;;8179:30;8245:31;8225:18;;;8218:59;8294:18;;17445:71:0::1;7965:353:1::0;17445:71:0::1;16955:570:::0;;;;;;:::o;17533:450::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;17733:21:::1;:46:::0;;-1:-1:-1;;;;;;17733:46:0;;::::1;-1:-1:-1::0;;;;;17733:46:0;;::::1;;::::0;;;17790:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17845:18:::1;:40:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17896:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;17941:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;17533:450::o;18490:167::-;18558:7;18585:64;18626:22;:20;:22::i;:::-;18608:4;;18585:36;;18598:22;;18618:1;;18598:15;;-1:-1:-1;;;;;18608:4:0;18598:9;:15::i;:::-;:19;;:22::i;:::-;18585:8;;:12;:36::i;:::-;:40;;:64::i;13513:198::-;13642:15;;13602:21;;-1:-1:-1;;;;;13642:15:0;13634:69;13699:3;13668:28;13680:16;13602:21;13668:28;:::i;:::-;:34;;;;:::i;:::-;13634:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13571:140;13513:198;:::o;9765:224::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;9889:4:::1;9874:12;;:19;;;;:::i;:::-;9855:15;;:38;;9847:47;;;::::0;::::1;;9959:4;9940:14;9925:12;;:29;;;;:::i;:::-;9924:39;;;;:::i;:::-;9906:15;:57:::0;-1:-1:-1;9765:224:0:o;3355:244::-;3112:6;;-1:-1:-1;;;;;3112:6:0;2422:10;3112:22;3104:67;;;;-1:-1:-1;;;3104:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3444:22:0;::::1;3436:73;;;::::0;-1:-1:-1;;;3436:73:0;;8525:2:1;3436:73:0::1;::::0;::::1;8507:21:1::0;8564:2;8544:18;;;8537:30;8603:34;8583:18;;;8576:62;-1:-1:-1;;;8654:18:1;;;8647:36;8700:19;;3436:73:0::1;8323:402:1::0;3436:73:0::1;3546:6;::::0;;3525:38:::1;::::0;-1:-1:-1;;;;;3525:38:0;;::::1;::::0;3546:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;3525:38:0;::::1;3574:6;:17:::0;;-1:-1:-1;;;;;;3574:17:0::1;-1:-1:-1::0;;;;;3574:17:0;;;::::1;::::0;;;::::1;::::0;;3355:244::o;784:250::-;842:7;866:1;871;866:6;862:47;;-1:-1:-1;896:1:0;889:8;;862:47;921:9;933:5;937:1;933;:5;:::i;:::-;921:17;-1:-1:-1;966:1:0;957:5;961:1;921:17;957:5;:::i;:::-;:10;949:56;;;;-1:-1:-1;;;949:56:0;;8932:2:1;949:56:0;;;8914:21:1;8971:2;8951:18;;;8944:30;9010:34;8990:18;;;8983:62;-1:-1:-1;;;9061:18:1;;;9054:31;9102:19;;949:56:0;8730:397:1;1040:132:0;1098:7;1125:39;1129:1;1132;1125:39;;;;;;;;;;;;;-1:-1:-1;;;1125:39:0;;;:3;:39::i;14773:1877::-;7032:6;:13;;-1:-1:-1;;7032:13:0;7041:4;7032:13;;;14868:15:::1;::::0;14885:26:::1;::::0;7032:6;;14852:60:::1;::::0;:15:::1;:60::i;:::-;:79;;14919:12;;14852:79;;;14915:1;14852:79;14822:109;;14942:23;14968:59;15025:1;14968:52;15011:8;;14968:38;14986:19;14968:13;;:17;;:38;;;;:::i;:59::-;14942:85;;15038:20;15061:34;15079:15;15061:13;;:17;;:34;;;;:::i;:::-;15132:16;::::0;;15146:1:::1;15132:16:::0;;;;;::::1;::::0;;15038:57;;-1:-1:-1;15108:21:0::1;::::0;15132:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15132:16:0::1;15108:40;;15177:4;15159;15164:1;15159:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15159:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;15203:4:::1;::::0;15193:7;;15203:4;::::1;::::0;15193;;15203;;15193:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;15193:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;15278:6;:188:::1;::::0;-1:-1:-1;;;15278:188:0;;15244:21:::1;::::0;15278:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;15350:12;;15220:21:::1;::::0;15393:4;;15420::::1;::::0;15440:15:::1;::::0;15278:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15479:17;15499:40;15525:13;15499:21;:25;;:40;;;;:::i;:::-;15479:60:::0;-1:-1:-1;15552:19:0::1;15574:40;15587:26;:19:::0;15611:1:::1;15587:23;:26::i;:::-;15574:8;::::0;;:12:::1;:40::i;:::-;15552:62:::0;-1:-1:-1;15635:26:0::1;15664:58;15720:1;15664:51;15552:62:::0;15664:51;:9;15678:19;15664:13:::1;:34::i;:58::-;15635:87;;15733:26;15762:44;15794:11;15762:27;15776:12;;15762:9;:13;;:27;;;;:::i;:44::-;15733:73;;15817:21;15841:39;15868:11;15841:22;15855:7;;15841:9;:13;;:22;;;;:::i;:39::-;15817:63;;15891:24;15918:42;15948:11;15918:25;15932:10;;15918:9;:13;;:25;;;;:::i;:42::-;16002:20;::::0;15994:65:::1;::::0;15891:69;;-1:-1:-1;15974:15:0::1;::::0;-1:-1:-1;;;;;16002:20:0;;::::1;::::0;16036:18;;15974:15;15994:65;15974:15;15994:65;16036:18;16002:20;15994:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16094:18:0::1;::::0;16086:61:::1;::::0;15973:86;;-1:-1:-1;;;;;;16094:18:0::1;::::0;16126:16;;16086:61:::1;::::0;;;16126:16;16094:18;16086:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;16182:15:0::1;::::0;16174:55:::1;::::0;16070:77;;-1:-1:-1;;;;;;16182:15:0::1;::::0;16211:13;;16174:55:::1;::::0;;;16211:13;16182:15;16174:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;16263:5:0::1;::::0;-1:-1:-1;;16284:19:0;;;-1:-1:-1;16281:362:0::1;;16319:6;::::0;16493:21:::1;::::0;16319:244:::1;::::0;-1:-1:-1;;;16319:244:0;;16395:4:::1;16319:244;::::0;::::1;10932:34:1::0;10982:18;;;10975:34;;;16319:6:0::1;11025:18:1::0;;;11018:34;;;11068:18;;;11061:34;-1:-1:-1;;;;;16493:21:0;;::::1;11111:19:1::0;;;11104:44;16533:15:0::1;11164:19:1::0;;;11157:35;16319:6:0;::::1;::::0;:22:::1;::::0;16349:18;;10866:19:1;;16319:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;16583:48:0::1;::::0;;11688:25:1;;;11744:2;11729:18;;11722:34;;;16583:48:0::1;::::0;-1:-1:-1;11661:18:1;16583:48:0::1;;;;;;;16281:362;-1:-1:-1::0;;7050:6:0;:14;;-1:-1:-1;;7050:14:0;;;-1:-1:-1;;;;;;;;;;14773:1877:0:o;586:192::-;672:7;708:12;700:6;;;;692:29;;;;-1:-1:-1;;;692:29:0;;;;;;;;:::i;:::-;-1:-1:-1;732:9:0;744:5;748:1;744;:5;:::i;:::-;732:17;586:192;-1:-1:-1;;;;;586:192:0:o;10338:1309::-;10450:6;;10430:4;;10450:6;;10447:63;;;10466:41;10481:6;10489:9;10500:6;10466:14;:41::i;:::-;10459:48;;;;10447:63;-1:-1:-1;;;;;10526:22:0;;;;;;:14;:22;;;;;;;;10525:23;:53;;;;-1:-1:-1;;;;;;10553:25:0;;;;;;:14;:25;;;;;;;;10552:26;10525:53;10522:140;;;10602:11;;-1:-1:-1;;;10602:11:0;;;;10594:43;;;;-1:-1:-1;;;10594:43:0;;12102:2:1;10594:43:0;;;12084:21:1;12141:2;12121:18;;;12114:30;-1:-1:-1;;;12160:18:1;;;12153:50;12220:18;;10594:43:0;11900:344:1;10594:43:0;-1:-1:-1;;;;;10696:22:0;;;;;;:14;:22;;;;;;;;10695:23;:53;;;;-1:-1:-1;;;;;;10722:26:0;;10743:4;10722:26;;10695:53;:84;;;;-1:-1:-1;10774:4:0;;-1:-1:-1;;;;;10753:26:0;;;10774:4;;10753:26;;10695:84;:105;;;;-1:-1:-1;10796:4:0;;-1:-1:-1;;;;;10783:17:0;;;10796:4;;10783:17;;10695:105;:137;;;;-1:-1:-1;10817:15:0;;-1:-1:-1;;;;;10804:28:0;;;10817:15;;10804:28;;10695:137;:174;;;;-1:-1:-1;10849:20:0;;-1:-1:-1;;;;;10836:33:0;;;10849:20;;10836:33;;10695:174;:205;;;;-1:-1:-1;;;;;;10874:26:0;;;;;;:15;:26;;;;;;;;10873:27;10695:205;10691:397;;;10916:18;10937:20;10947:9;10937;:20::i;:::-;11005:15;;10916:41;;-1:-1:-1;10981:19:0;10994:6;10916:41;10981:19;:::i;:::-;10980:40;;10972:114;;;;-1:-1:-1;;;10972:114:0;;12581:2:1;10972:114:0;;;12563:21:1;12620:2;12600:18;;;12593:30;12659:34;12639:18;;;12632:62;12730:32;12710:18;;;12703:60;12780:19;;10972:114:0;12379:426:1;10972:114:0;10901:187;10691:397;11141:28;11154:6;11162;11141:12;:28::i;:::-;11186:16;:14;:16::i;:::-;11183:35;;;11205:10;:8;:10::i;:::-;11298:53;;;;;;;;;;;-1:-1:-1;;;11298:53:0;;;;;;;;-1:-1:-1;;;;;11298:17:0;;-1:-1:-1;11298:17:0;;;:9;:17;;;;;;;;:53;;11320:6;;11298:21;:53::i;:::-;-1:-1:-1;;;;;11278:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11390:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;11413:22:0;;;;;;:11;:22;;;;;;;;11390:45;11389:93;;11448:34;11456:6;11464;11472:9;11448:7;:34::i;:::-;11389:93;;;11439:6;11389:93;-1:-1:-1;;;;;11516:20:0;;;;;;:9;:20;;;;;;11364:118;;-1:-1:-1;11516:40:0;;11364:118;11516:24;:40::i;:::-;-1:-1:-1;;;;;11493:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11574:43;;;;;;-1:-1:-1;;;;;;;;;;;11574:43:0;;;11602:14;597:25:1;;585:2;570:18;;451:177;11574:43:0;;;;;;;;-1:-1:-1;11635:4:0;;10338:1309;-1:-1:-1;;;;10338:1309:0:o;444:136::-;502:7;529:43;533:1;536;529:43;;;;;;;;;;;;;;;;;:3;:43::i;257:181::-;315:7;;347:5;351:1;347;:5;:::i;:::-;335:17;;376:1;371;:6;;363:46;;;;-1:-1:-1;;;363:46:0;;13012:2:1;363:46:0;;;12994:21:1;13051:2;13031:18;;;13024:30;-1:-1:-1;;;13070:18:1;;;13063:57;13137:18;;363:46:0;12810:351:1;1178:189:0;1264:7;1299:12;1292:5;1284:28;;;;-1:-1:-1;;;1284:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1323:9:0;1335:5;1339:1;1335;:5;:::i;11659:330::-;11789:53;;;;;;;;;;;-1:-1:-1;;;11789:53:0;;;;;;;;-1:-1:-1;;;;;11789:17:0;;11752:4;11789:17;;;:9;:17;;;;;;;:53;;11811:6;;11789:21;:53::i;:::-;-1:-1:-1;;;;;11769:17:0;;;;;;;:9;:17;;;;;;:73;;;;11876:20;;;;;;;:32;;11901:6;11876:24;:32::i;:::-;-1:-1:-1;;;;;11853:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11924:35;;;;;;-1:-1:-1;;;;;;;;;;;11924:35:0;;;11952:6;597:25:1;;585:2;570:18;;451:177;11924:35:0;;;;;;;;-1:-1:-1;11977:4:0;11659:330;;;;;:::o;11997:166::-;12094:12;;12084:6;:22;;:49;;;-1:-1:-1;;;;;;12110:23:0;;;;;;:15;:23;;;;;;;;12084:49;12076:79;;;;-1:-1:-1;;;12076:79:0;;13368:2:1;12076:79:0;;;13350:21:1;13407:2;13387:18;;;13380:30;-1:-1:-1;;;13426:18:1;;;13419:47;13483:18;;12076:79:0;13166:341:1;12076:79:0;11997:166;;:::o;13308:197::-;13395:4;;13357;;-1:-1:-1;;;;;13395:4:0;13381:10;:18;;;;:38;;-1:-1:-1;13413:6:0;;;;13412:7;13381:38;:62;;;;-1:-1:-1;13432:11:0;;-1:-1:-1;;;13432:11:0;;;;13381:62;:116;;;;-1:-1:-1;;13484:13:0;;13474:4;13456:24;;;;:9;:24;;;;;;:41;;;13308:197::o;12293:1007::-;12430:18;;12477:4;;12379:7;;12430:18;-1:-1:-1;;;;;12477:4:0;;;12464:17;;;;12461:154;;-1:-1:-1;12511:14:0;;12461:154;;;12556:4;;-1:-1:-1;;;;;12556:4:0;;;12546:14;;;;12543:72;;-1:-1:-1;12590:13:0;;12543:72;12627:17;12647:62;12688:14;;12705:3;12688:20;;;;:::i;:::-;12647:36;12672:10;12647:20;12658:8;;12647:6;:10;;:20;;;;:::i;:62::-;12627:82;;12720:18;12741:36;12768:8;;12741:22;12755:7;;12741:9;:13;;:22;;;;:::i;:36::-;12720:57;-1:-1:-1;12788:22:0;12813:25;:9;12720:57;12813:13;:25::i;:::-;12896:4;12878:24;;;;:9;:24;;;;;;12788:50;;-1:-1:-1;12878:44:0;;12788:50;12878:28;:44::i;:::-;12869:4;12851:24;;;;:9;:24;;;;;;:71;;;;12972:15;;-1:-1:-1;;;;;12972:15:0;12962:26;;;;:42;;12993:10;12962:30;:42::i;:::-;12943:15;;-1:-1:-1;;;;;12943:15:0;;;12933:26;;;;:9;:26;;;;;;;;;:71;;;;13020:47;597:25:1;;;13045:4:0;;13020:47;;;;-1:-1:-1;;;;;;;;;;;13020:47:0;570:18:1;13020:47:0;;;;;;;13101:14;;13098:154;;13146:12;;:28;;13163:10;13146:16;:28::i;:::-;13131:12;:43;13211:4;;13194:34;;597:25:1;;;-1:-1:-1;;;;;13211:4:0;;;;13194:34;;;-1:-1:-1;;;;;;;;;;;13194:34:0;585:2:1;570:18;13194:34:0;;;;;;;13098:154;13271:21;:6;13282:9;13271:10;:21::i;:::-;13264:28;12293:1007;-1:-1:-1;;;;;;;;12293:1007:0:o;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:423::-;1236:3;1274:5;1268:12;1301:6;1296:3;1289:19;1326:1;1336:162;1350:6;1347:1;1344:13;1336:162;;;1412:4;1468:13;;;1464:22;;1458:29;1440:11;;;1436:20;;1429:59;1365:12;1336:162;;;1340:3;1543:1;1536:4;1527:6;1522:3;1518:16;1514:27;1507:38;1606:4;1599:2;1595:7;1590:2;1582:6;1578:15;1574:29;1569:3;1565:39;1561:50;1554:57;;;1194:423;;;;:::o;1622:220::-;1771:2;1760:9;1753:21;1734:4;1791:45;1832:2;1821:9;1817:18;1809:6;1791:45;:::i;1847:254::-;1915:6;1923;1976:2;1964:9;1955:7;1951:23;1947:32;1944:52;;;1992:1;1989;1982:12;1944:52;2015:29;2034:9;2015:29;:::i;2106:248::-;2174:6;2182;2235:2;2223:9;2214:7;2210:23;2206:32;2203:52;;;2251:1;2248;2241:12;2203:52;-1:-1:-1;;2274:23:1;;;2344:2;2329:18;;;2316:32;;-1:-1:-1;2106:248:1:o;2359:328::-;2436:6;2444;2452;2505:2;2493:9;2484:7;2480:23;2476:32;2473:52;;;2521:1;2518;2511:12;2473:52;2544:29;2563:9;2544:29;:::i;:::-;2534:39;;2592:38;2626:2;2615:9;2611:18;2592:38;:::i;:::-;2582:48;;2677:2;2666:9;2662:18;2649:32;2639:42;;2359:328;;;;;:::o;2881:180::-;2940:6;2993:2;2981:9;2972:7;2968:23;2964:32;2961:52;;;3009:1;3006;2999:12;2961:52;-1:-1:-1;3032:23:1;;2881:180;-1:-1:-1;2881:180:1:o;3066:316::-;3143:6;3151;3159;3212:2;3200:9;3191:7;3187:23;3183:32;3180:52;;;3228:1;3225;3218:12;3180:52;-1:-1:-1;;3251:23:1;;;3321:2;3306:18;;3293:32;;-1:-1:-1;3372:2:1;3357:18;;;3344:32;;3066:316;-1:-1:-1;3066:316:1:o;3387:315::-;3452:6;3460;3513:2;3501:9;3492:7;3488:23;3484:32;3481:52;;;3529:1;3526;3519:12;3481:52;3552:29;3571:9;3552:29;:::i;:::-;3542:39;;3631:2;3620:9;3616:18;3603:32;3644:28;3666:5;3644:28;:::i;:::-;3691:5;3681:15;;;3387:315;;;;;:::o;3707:203::-;-1:-1:-1;;;;;3871:32:1;;;;3853:51;;3841:2;3826:18;;3707:203::o;3915:546::-;4160:2;4149:9;4142:21;4123:4;4186:45;4227:2;4216:9;4212:18;4204:6;4186:45;:::i;:::-;4279:9;4271:6;4267:22;4262:2;4251:9;4247:18;4240:50;4313:33;4339:6;4331;4313:33;:::i;:::-;4299:47;;4394:9;4386:6;4382:22;4377:2;4366:9;4362:18;4355:50;4422:33;4448:6;4440;4422:33;:::i;:::-;4414:41;3915:546;-1:-1:-1;;;;;;3915:546:1:o;4466:523::-;4570:6;4578;4586;4594;4602;4610;4663:3;4651:9;4642:7;4638:23;4634:33;4631:53;;;4680:1;4677;4670:12;4631:53;-1:-1:-1;;4703:23:1;;;4773:2;4758:18;;4745:32;;-1:-1:-1;4824:2:1;4809:18;;4796:32;;4875:2;4860:18;;4847:32;;-1:-1:-1;4926:3:1;4911:19;;4898:33;;-1:-1:-1;4978:3:1;4963:19;4950:33;;-1:-1:-1;4466:523:1;-1:-1:-1;4466:523:1:o;4994:484::-;5089:6;5097;5105;5113;5121;5174:3;5162:9;5153:7;5149:23;5145:33;5142:53;;;5191:1;5188;5181:12;5142:53;5214:29;5233:9;5214:29;:::i;:::-;5204:39;;5262:38;5296:2;5285:9;5281:18;5262:38;:::i;:::-;5252:48;;5319:38;5353:2;5342:9;5338:18;5319:38;:::i;:::-;5309:48;;5376:38;5410:2;5399:9;5395:18;5376:38;:::i;:::-;5366:48;;5433:39;5467:3;5456:9;5452:19;5433:39;:::i;:::-;5423:49;;4994:484;;;;;;;;:::o;5483:260::-;5551:6;5559;5612:2;5600:9;5591:7;5587:23;5583:32;5580:52;;;5628:1;5625;5618:12;5580:52;5651:29;5670:9;5651:29;:::i;:::-;5641:39;;5699:38;5733:2;5722:9;5718:18;5699:38;:::i;:::-;5689:48;;5483:260;;;;;:::o;5974:356::-;6176:2;6158:21;;;6195:18;;;6188:30;6254:34;6249:2;6234:18;;6227:62;6321:2;6306:18;;5974:356::o;6335:127::-;6396:10;6391:3;6387:20;6384:1;6377:31;6427:4;6424:1;6417:15;6451:4;6448:1;6441:15;6467:217;6507:1;6533;6523:132;;6577:10;6572:3;6568:20;6565:1;6558:31;6612:4;6609:1;6602:15;6640:4;6637:1;6630:15;6523:132;-1:-1:-1;6669:9:1;;6467:217::o;6689:168::-;6762:9;;;6793;;6810:15;;;6804:22;;6790:37;6780:71;;6831:18;;:::i;6862:184::-;6932:6;6985:2;6973:9;6964:7;6960:23;6956:32;6953:52;;;7001:1;6998;6991:12;6953:52;-1:-1:-1;7024:16:1;;6862:184;-1:-1:-1;6862:184:1:o;7330:245::-;7397:6;7450:2;7438:9;7429:7;7425:23;7421:32;7418:52;;;7466:1;7463;7456:12;7418:52;7498:9;7492:16;7517:28;7539:5;7517:28;:::i;7580:380::-;7659:1;7655:12;;;;7702;;;7723:61;;7777:4;7769:6;7765:17;7755:27;;7723:61;7830:2;7822:6;7819:14;7799:18;7796:38;7793:161;;7876:10;7871:3;7867:20;7864:1;7857:31;7911:4;7908:1;7901:15;7939:4;7936:1;7929:15;7793:161;;7580:380;;;:::o;9264:127::-;9325:10;9320:3;9316:20;9313:1;9306:31;9356:4;9353:1;9346:15;9380:4;9377:1;9370:15;9396:980;9658:4;9706:3;9695:9;9691:19;9737:6;9726:9;9719:25;9763:2;9801:6;9796:2;9785:9;9781:18;9774:34;9844:3;9839:2;9828:9;9824:18;9817:31;9868:6;9903;9897:13;9934:6;9926;9919:22;9972:3;9961:9;9957:19;9950:26;;10011:2;10003:6;9999:15;9985:29;;10032:1;10042:195;10056:6;10053:1;10050:13;10042:195;;;10121:13;;-1:-1:-1;;;;;10117:39:1;10105:52;;10212:15;;;;10177:12;;;;10153:1;10071:9;10042:195;;;-1:-1:-1;;;;;;;10293:32:1;;;;10288:2;10273:18;;10266:60;-1:-1:-1;;;10357:3:1;10342:19;10335:35;10254:3;9396:980;-1:-1:-1;;;9396:980:1:o;11203:306::-;11291:6;11299;11307;11360:2;11348:9;11339:7;11335:23;11331:32;11328:52;;;11376:1;11373;11366:12;11328:52;11405:9;11399:16;11389:26;;11455:2;11444:9;11440:18;11434:25;11424:35;;11499:2;11488:9;11484:18;11478:25;11468:35;;11203:306;;;;;:::o;11767:128::-;11834:9;;;11855:11;;;11852:37;;;11869:18;;:::i;12249:125::-;12314:9;;;12335:10;;;12332:36;;;12348:18;;:::i

Swarm Source

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