ETH Price: $2,527.12 (-0.04%)

Token

Red Flag AI (RFAI)
 

Overview

Max Total Supply

100,000,000 RFAI

Holders

35

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
250,000 RFAI

Value
$0.00
0x8b90e7133ac7baff72671ff430f74e3855f2086b
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:
RFAI

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.10;
 
/**
 * ERC20 standard interface
 */
 
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);
}
 
/**
 * Basic access control mechanism
 */
 
abstract contract Ownable {
    address internal owner;
    address private _previousOwner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor(address _owner) {
        owner = _owner;
    }
 
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!YOU ARE NOT THE OWNER"); _;
    }
 
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(owner, address(0));
        owner = address(0);
    }
}
 
/**
 * Router Interfaces
 */
 
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;
}
 
/**
 * Token Contract Code
 */
 
contract RFAI is ERC20, Ownable {
    // -- Mappings --
    mapping(address => bool) public _blacklisted;
    mapping(address => bool) private _whitelisted;
    mapping(address => bool) public _automatedMarketMakers;
    mapping(address => bool) private _isLimitless;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
 
    // -- Basic Token Information --
    string constant _name = "Red Flag AI";
    string constant _symbol = "RFAI";
    uint8 constant _decimals = 18;
    uint256 private _totalSupply = 100_000_000 * 10 ** _decimals;
 
 
    // -- Transaction & Wallet Limits --
    uint256 public maxBuyPercentage;
    uint256 public maxSellPercentage;
    uint256 public maxWalletPercentage;
 
    uint256 private maxBuyAmount;
    uint256 private maxSellAmount;
    uint256 private maxWalletAmount;
 
    // -- Contract Variables --
    address[] private sniperList;
    uint256 tokenTax;
    uint256 transferFee;
    uint256 private targetLiquidity = 50;
 
    // -- Fee Structs --
    struct BuyFee {
        uint256 liquidityFee;
        uint256 developerFee;
        uint256 marketingFee;
        uint256 total;
    }
 
    struct SellFee {
        uint256 liquidityFee;
        uint256 developerFee;
        uint256 marketingFee;
        uint256 total;
    }
 
    BuyFee public buyFee;
    SellFee public sellFee;
 
    // -- Addresses --
    address public _exchangeRouterAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
 
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;
 
    address public developerReceiver = (msg.sender);
    address public marketingReceiver = (msg.sender);
 
    IDEXRouter public router;
    address public pair;
 
    // -- Misc Variables --
    bool public antiSniperMode = true;  // AntiSniper active at launch by default
    bool private _addingLP;
    bool private inSwap;
    bool private _initialDistributionFinished;
 
    // -- Swap Variables --
    bool public swapEnabled = true;
    uint256 private swapThreshold = _totalSupply / 1000;
 
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor () Ownable(msg.sender) {
 
        // Initialize Uniswap Pair
        router = IDEXRouter(_exchangeRouterAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        _automatedMarketMakers[pair]=true;
 
        // Set Initial Buy Fees -- Base 1000 Set 10 for 1%
        buyFee.liquidityFee = 0; 
        buyFee.developerFee = 10; 
        buyFee.marketingFee = 50;

        buyFee.total = buyFee.liquidityFee + buyFee.developerFee + buyFee.marketingFee;
 
        // Set Initial Sell Fees -- Base 1000 Set 10 for 1%
        sellFee.liquidityFee = 0; 
        sellFee.developerFee = 120; 
        sellFee.marketingFee = 130;

        sellFee.total = sellFee.liquidityFee + sellFee.developerFee + sellFee.marketingFee;
 
        // Set Initial Buy, Sell & Wallet Limits -- Base 1000 Set 10 for 1%
        maxBuyPercentage = 10; 
        maxBuyAmount = _totalSupply /1000 * maxBuyPercentage;

        maxSellPercentage = 10; 
        maxSellAmount = _totalSupply /1000 * maxSellPercentage;

        maxWalletPercentage = 10; 
        maxWalletAmount = _totalSupply /1000 * maxWalletPercentage;
 
        // Exclude from fees & limits
        _isLimitless[owner] = _isLimitless[address(this)] = true;
 
        // Mint _totalSupply to owner address
        _balances[owner] = _totalSupply;
        emit Transfer(address(0x0), owner, _totalSupply);
    }
 
 
    ///////////////////////////////////////// -- Setter Functions -- /////////////////////////////////////////
 
        // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerSetLimits(uint256 _maxBuyPercentage, uint256 _maxSellPercentage, uint256 _maxWalletPercentage) external onlyOwner {
        maxBuyPercentage = _maxBuyPercentage;           
        maxBuyAmount = _totalSupply /1000 * maxBuyPercentage;

        maxSellPercentage = _maxSellPercentage;         
        maxSellAmount = _totalSupply /1000 * maxSellPercentage;

        maxWalletPercentage= _maxWalletPercentage;      
        maxWalletAmount = _totalSupply /1000 * maxWalletPercentage;
    }
 
    function tokenLive() external onlyOwner {
        _initialDistributionFinished = true;
    }
 
    function ownerSetLimitlessAddress(address _addr, bool _status) external onlyOwner {
        _isLimitless[_addr] = _status;
    }
 
    function ownerSetSwapBackSettings(bool _enabled, uint256 _percentageBase1000) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _totalSupply / 1000 * _percentageBase1000;
    }
 
    function ownerSetTargetLiquidity(uint256 target) external onlyOwner {
        targetLiquidity = target;
    }
       // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerUpdateBuyFees (uint256 _liquidityFee, uint256 _developerFee, uint256 _marketingFee) external onlyOwner {
        buyFee.liquidityFee = _liquidityFee;
        buyFee.developerFee = _developerFee;
        buyFee.marketingFee = _marketingFee;
        buyFee.total = buyFee.liquidityFee + buyFee.developerFee + buyFee.marketingFee;
    }
        // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerUpdateSellFees (uint256 _liquidityFee, uint256 _developerFee, uint256 _marketingFee) external onlyOwner {
        sellFee.liquidityFee = _liquidityFee;
        sellFee.developerFee = _developerFee;
        sellFee.marketingFee = _marketingFee;
        sellFee.total = sellFee.liquidityFee + sellFee.developerFee + sellFee.marketingFee;
    }
        // Use 10 to set 1% -- Base 1000 for easier fine adjust
    function ownerUpdateTransferFee (uint256 _transferFee) external onlyOwner {
        transferFee = _transferFee;
    }
 
    function ownerSetReceivers (address _developer, address _marketing) external onlyOwner {
        developerReceiver = _developer;
        marketingReceiver = _marketing;
    }
 
    function ownerAirDropWallets(address[] memory airdropWallets, uint256[] memory amounts) external onlyOwner{
        require(airdropWallets.length < 100, "Can only airdrop 100 wallets per txn due to gas limits");
        for(uint256 i = 0; i < airdropWallets.length; i++){
            address wallet = airdropWallets[i];
            uint256 amount = (amounts[i] * 10**_decimals);
            _transfer(msg.sender, wallet, amount);
        }
    }
 
    function reverseSniper(address sniper) external onlyOwner {
        _blacklisted[sniper] = false;
    }
 
    function addNewMarketMaker(address newAMM) external onlyOwner {
        _automatedMarketMakers[newAMM]=true;
        _isLimitless[newAMM]=true;
    }
 
    function controlAntiSniperMode(bool value) external onlyOwner {
        antiSniperMode = value;
    }
 
    function clearStuckBalance() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(owner).transfer(contractETHBalance);
    }
 
    function clearStuckToken(address _token) public onlyOwner {
        uint256 _contractBalance = ERC20(_token).balanceOf(address(this));
        payable(developerReceiver).transfer(_contractBalance);
    }
    ///////////////////////////////////////// -- Getter Functions -- /////////////////////////////////////////
 
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }
 
    function showSniperList() public view returns(address[] memory){
        return sniperList;
    }
 
    function showSniperListLength() public view returns(uint256){
        return sniperList.length;
    }
 
    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy * (balanceOf(pair) * (2)) / (getCirculatingSupply());
    }
 
    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
 
    ///////////////////////////////////////// -- Internal Functions -- /////////////////////////////////////////
 
    function _transfer(address sender,address recipient,uint256 amount) private {
        require(sender!=address(0)&&recipient!=address(0),"Cannot be address(0).");
        bool isBuy=_automatedMarketMakers[sender];
        bool isSell=_automatedMarketMakers[recipient];
        bool isExcluded=_isLimitless[sender]||_isLimitless[recipient]||_addingLP;
 
        if(isExcluded)_transferExcluded(sender,recipient,amount);
        else { require(_initialDistributionFinished);
            // Punish for Snipers
            if(antiSniperMode)_punishSnipers(sender,recipient,amount);
            // Buy Tokens
            else if(isBuy)_buyTokens(sender,recipient,amount);
            // Sell Tokens
            else if(isSell) {
                // Swap & Liquify
                if (shouldSwapBack()) {swapBack();}
                _sellTokens(sender,recipient,amount);
            } else {
                // P2P Transfer
                require(!_blacklisted[sender]&&!_blacklisted[recipient]);
                require(balanceOf(recipient)+amount<=maxWalletAmount, "Total amount exceed wallet limit");
                _P2PTransfer(sender,recipient,amount);
            }
        }
    }
 
    function _punishSnipers(address sender,address recipient,uint256 amount) private {
        require(!_blacklisted[recipient]);
        require(amount <= maxBuyAmount, "Buy exceeds limit");
        tokenTax = amount*20/100;
        _blacklisted[recipient]=true;
        sniperList.push(address(recipient));
        _transferIncluded(sender,recipient,amount,tokenTax);
    }
 
    function _buyTokens(address sender,address recipient,uint256 amount) private {
        require(!_blacklisted[recipient]);
        require(amount <= maxBuyAmount, "Buy exceeds limit");
        require(balanceOf(recipient)+amount<=maxWalletAmount, "Total amount exceed wallet limit");
        if(!_whitelisted[recipient]){
        tokenTax = amount*buyFee.total/1000;}
        else tokenTax = 0;
        _transferIncluded(sender,recipient,amount,tokenTax);
    }
    function _sellTokens(address sender,address recipient,uint256 amount) private {
        require(!_blacklisted[sender]);
        require(amount <= maxSellAmount);
        if(!_whitelisted[sender]){
        tokenTax = amount*sellFee.total/1000;}
        else tokenTax = 0;
        _transferIncluded(sender,recipient,amount,tokenTax);
    }
 
    function _P2PTransfer(address sender,address recipient,uint256 amount) private {
        tokenTax = amount * transferFee/1000;
        if( tokenTax > 0) {_transferIncluded(sender,recipient,amount,tokenTax);}
        else {_transferExcluded(sender,recipient,amount);}
    }
 
    function _transferExcluded(address sender,address recipient,uint256 amount) private {
        _updateBalance(sender,_balances[sender]-amount);
        _updateBalance(recipient,_balances[recipient]+amount);
        emit Transfer(sender,recipient,amount);
    }
 
    function _transferIncluded(address sender,address recipient,uint256 amount,uint256 taxAmount) private {
        uint256 newAmount = amount-tokenTax;
        _updateBalance(sender,_balances[sender]-amount);
        _updateBalance(address(this),_balances[address(this)]+taxAmount);
        _updateBalance(recipient,_balances[recipient]+newAmount);
        emit Transfer(sender,recipient,newAmount);
        emit Transfer(sender,address(this),taxAmount);
    }
 
    function _updateBalance(address account,uint256 newBalance) private {
        _balances[account] = newBalance;
    }
 
    function shouldSwapBack() private view returns (bool) {
        return
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }   
 
    function swapBack() private swapping {
        uint256 toSwap = balanceOf(address(this));
 
        uint256 totalLPTokens=toSwap*(sellFee.liquidityFee + buyFee.liquidityFee)/(sellFee.total + buyFee.total);
        uint256 tokensLeft=toSwap-totalLPTokens;
        uint256 LPTokens=totalLPTokens/2;
        uint256 LPETHTokens=totalLPTokens-LPTokens;
        toSwap=tokensLeft+LPETHTokens;
        uint256 oldETH=address(this).balance;
        _swapTokensForETH(toSwap);
        uint256 newETH=address(this).balance-oldETH;
        uint256 LPETH=(newETH*LPETHTokens)/toSwap;
        _addLiquidity(LPTokens,LPETH);
        uint256 remainingETH=address(this).balance-oldETH;
        _distributeETH(remainingETH);
    }
 
    function _distributeETH(uint256 remainingETH) private {
        uint256 marketingFee = (buyFee.marketingFee + sellFee.marketingFee);
        uint256 developerFee = (buyFee.developerFee + sellFee.developerFee);
        uint256 totalFee = (marketingFee + developerFee);
 
        uint256 amountETHmarketing = remainingETH * (marketingFee) / (totalFee);
        uint256 amountETHdeveloper = remainingETH * (developerFee) / (totalFee);
 
        if(amountETHdeveloper > 0){
        (bool developerSuccess, /* bytes memory data */) = payable(developerReceiver).call{value: amountETHdeveloper, gas: 30000}("");
        require(developerSuccess, "receiver rejected ETH transfer"); }
 
        if(amountETHmarketing > 0){
        (bool marketingSuccess, /* bytes memory data */) = payable(marketingReceiver).call{value: amountETHmarketing, gas: 30000}("");
        require(marketingSuccess, "receiver rejected ETH transfer"); }
    }
 
    function _swapTokensForETH(uint256 amount) private {
        address[] memory path=new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function _addLiquidity(uint256 amountTokens,uint256 amountETH) private {
        _addingLP=true;
        router.addLiquidityETH{value: amountETH}(
            address(this),
            amountTokens,
            0,
            0,
            developerReceiver,
            block.timestamp
        );
        _addingLP=false;
    }
 
/**
 * IERC20
 */
 
    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 transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        uint256 allowance_ = _allowances[sender][msg.sender];
        require(allowance_ >= amount);
 
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        _transfer(sender, recipient, amount);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":[{"internalType":"address","name":"","type":"address"}],"name":"_automatedMarketMakers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_exchangeRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAMM","type":"address"}],"name":"addNewMarketMaker","outputs":[],"stateMutability":"nonpayable","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":[],"name":"antiSniperMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"developerFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"controlAntiSniperMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developerReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"airdropWallets","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"ownerAirDropWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ownerSetLimitlessAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuyPercentage","type":"uint256"},{"internalType":"uint256","name":"_maxSellPercentage","type":"uint256"},{"internalType":"uint256","name":"_maxWalletPercentage","type":"uint256"}],"name":"ownerSetLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_developer","type":"address"},{"internalType":"address","name":"_marketing","type":"address"}],"name":"ownerSetReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_percentageBase1000","type":"uint256"}],"name":"ownerSetSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"}],"name":"ownerSetTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developerFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"ownerUpdateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_developerFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"ownerUpdateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_transferFee","type":"uint256"}],"name":"ownerUpdateTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sniper","type":"address"}],"name":"reverseSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"developerFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSniperList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSniperListLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tokenLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000514565b62000022906305f5e1006200052c565b60088190556032601255601b8054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031991821617909155601c8054339083168117909155601d8054909216179055601f805464ff000000ff60a01b19167801000000010000000000000000000000000000000000000000179055620000a7906103e8906200054e565b602055348015620000b757600080fd5b5060008054336001600160a01b031991821617909155601b54601e80546001600160a01b039092169190921681179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014a919062000571565b6001600160a01b031663c9c65396601e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d2919062000571565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200021f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000245919062000571565b601f80546001600160a01b0319166001600160a01b03928316178155306000908152600760209081526040808320601e5486168452825280832060001990559254909316815260049092528120805460ff191660011790556013819055600a60148190556032601581905591620002bd91906200059c565b620002c991906200059c565b60165560006017819055607860188190556082601981905591620002ee91906200059c565b620002fa91906200059c565b601a55600a600981905560085462000316906103e8906200054e565b6200032291906200052c565b600c55600a8080556008546200033c906103e8906200054e565b6200034891906200052c565b600d55600a600b81905560085462000364906103e8906200054e565b6200037091906200052c565b600e553060009081526005602090815260408083208054600160ff19918216811790925584546001600160a01b039081168652838620805490921690921790556008548454821685526006845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620005b7565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004565781600019048211156200043a576200043a620003ff565b808516156200044857918102915b93841c93908002906200041a565b509250929050565b6000826200046f575060016200050e565b816200047e575060006200050e565b8160018114620004975760028114620004a257620004c2565b60019150506200050e565b60ff841115620004b657620004b6620003ff565b50506001821b6200050e565b5060208310610133831016604e8410600b8410161715620004e7575081810a6200050e565b620004f3838362000415565b80600019048211156200050a576200050a620003ff565b0290505b92915050565b60006200052560ff8416836200045e565b9392505050565b6000816000190483118215151615620005495762000549620003ff565b500290565b6000826200056c57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200058457600080fd5b81516001600160a01b03811681146200052557600080fd5b60008219821115620005b257620005b2620003ff565b500190565b61257a80620005c76000396000f3fe60806040526004361061028c5760003560e01c806370a082311161015a578063a5949bcf116100c1578063dca3cef11161007a578063dca3cef11461081c578063dd62ed3e1461083c578063e065099714610882578063e5a772d214610898578063f2fde38b146108b8578063f887ea40146108d857600080fd5b8063a5949bcf14610766578063a8aa1b3114610786578063a9059cbb146107a6578063b46ba24b146107c6578063b704a9f6146107e6578063d51ed1c8146107fc57600080fd5b80638ca42e4e116101135780638ca42e4e146106a45780638ee41ca8146106c4578063951fbf6d146106e457806395d89b41146106f95780639b0ad05c146107265780639be953b31461074657600080fd5b806370a08231146105e1578063715018a6146106015780637a6d69b41461061657806383bd84851461064657806387cfc49314610666578063893d20e81461068657600080fd5b80632f54bf6e116101fe57806353cd6210116101b757806353cd621014610534578063599ca3971461055557806359d3cac21461056b5780636390aeeb1461058b5780636dc53a0a146105a05780636ddd1713146105c057600080fd5b80632f54bf6e14610471578063313ce567146104a0578063364333f4146104bc57806347062402146104d15780634c5d8710146104f457806352aae9dd1461051457600080fd5b806318160ddd1161025057806318160ddd146103805780631ca0b1d01461039f57806323b872dd146103c15780632b112e49146103e15780632b14ca56146103f65780632d3b40471461043957600080fd5b806306fdde0314610298578063095ea7b3146102de5780630c5b1d931461030e5780630cb23d86146103305780631161ae391461036057600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b5060408051808201909152600b81526a52656420466c616720414960a81b60208201525b6040516102d59190611ebc565b60405180910390f35b3480156102ea57600080fd5b506102fe6102f9366004611f29565b6108f8565b60405190151581526020016102d5565b34801561031a57600080fd5b5061032e610329366004611f6a565b610965565b005b34801561033c57600080fd5b506102fe61034b366004611f9f565b60046020526000908152604090205460ff1681565b34801561036c57600080fd5b506102fe61037b366004611fc3565b6109c3565b34801561038c57600080fd5b506008545b6040519081526020016102d5565b3480156103ab57600080fd5b506103b46109d7565b6040516102d59190612029565b3480156103cd57600080fd5b506102fe6103dc36600461203c565b610a39565b3480156103ed57600080fd5b50610391610b00565b34801561040257600080fd5b50601754601854601954601a546104199392919084565b6040805194855260208501939093529183015260608201526080016102d5565b34801561044557600080fd5b50601b54610459906001600160a01b031681565b6040516001600160a01b0390911681526020016102d5565b34801561047d57600080fd5b506102fe61048c366004611f9f565b6000546001600160a01b0391821691161490565b3480156104ac57600080fd5b50604051601281526020016102d5565b3480156104c857600080fd5b5061032e610b33565b3480156104dd57600080fd5b506013546014546015546016546104199392919084565b34801561050057600080fd5b5061032e61050f36600461207d565b610b9c565b34801561052057600080fd5b5061032e61052f3660046120a9565b610c37565b34801561054057600080fd5b50601f546102fe90600160a01b900460ff1681565b34801561056157600080fd5b50610391600b5481565b34801561057757600080fd5b5061032e61058636600461207d565b610c66565b34801561059757600080fd5b50600f54610391565b3480156105ac57600080fd5b50601c54610459906001600160a01b031681565b3480156105cc57600080fd5b50601f546102fe90600160c01b900460ff1681565b3480156105ed57600080fd5b506103916105fc366004611f9f565b610cbc565b34801561060d57600080fd5b5061032e610cd7565b34801561062257600080fd5b506102fe610631366004611f9f565b60026020526000908152604090205460ff1681565b34801561065257600080fd5b5061032e6106613660046120c2565b610d4b565b34801561067257600080fd5b5061032e610681366004611f9f565b610d93565b34801561069257600080fd5b506000546001600160a01b0316610459565b3480156106b057600080fd5b5061032e6106bf3660046120a9565b610dde565b3480156106d057600080fd5b5061032e6106df3660046120dd565b610e0d565b3480156106f057600080fd5b5061032e610e71565b34801561070557600080fd5b506040805180820190915260048152635246414960e01b60208201526102c8565b34801561073257600080fd5b5061032e6107413660046121cf565b610eb0565b34801561075257600080fd5b5061032e610761366004611f9f565b610fcf565b34801561077257600080fd5b50601d54610459906001600160a01b031681565b34801561079257600080fd5b50601f54610459906001600160a01b031681565b3480156107b257600080fd5b506102fe6107c1366004611f29565b61109f565b3480156107d257600080fd5b5061032e6107e136600461207d565b6110b5565b3480156107f257600080fd5b50610391600a5481565b34801561080857600080fd5b506103916108173660046120a9565b61110b565b34801561082857600080fd5b5061032e610837366004612291565b611149565b34801561084857600080fd5b50610391610857366004612291565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561088e57600080fd5b5061039160095481565b3480156108a457600080fd5b5061032e6108b3366004611f9f565b6111a1565b3480156108c457600080fd5b5061032e6108d3366004611f9f565b611207565b3480156108e457600080fd5b50601e54610459906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109539086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146109985760405162461bcd60e51b815260040161098f906122ca565b60405180910390fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000826109cf8361110b565b119392505050565b6060600f805480602002602001604051908101604052809291908181526020018280548015610a2f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a11575b5050505050905090565b6001600160a01b038316600090815260076020908152604080832033845290915281205482811015610a6a57600080fd5b6001600160a01b038516600090815260076020908152604080832033845290915290205460001914610aea576001600160a01b0385166000908152600760209081526040808320338452909152902054610ac5908490612310565b6001600160a01b03861660009081526007602090815260408083203384529091529020555b610af58585856112f1565b506001949350505050565b6000610b0c6000610cbc565b610b1761dead610cbc565b600854610b249190612310565b610b2e9190612310565b905090565b6000546001600160a01b03163314610b5d5760405162461bcd60e51b815260040161098f906122ca565b6000805460405147926001600160a01b039092169183156108fc02918491818181858888f19350505050158015610b98573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610bc65760405162461bcd60e51b815260040161098f906122ca565b60098390556008548390610bdd906103e890612327565b610be79190612349565b600c55600a8290556008548290610c01906103e890612327565b610c0b9190612349565b600d55600b8190556008548190610c25906103e890612327565b610c2f9190612349565b600e55505050565b6000546001600160a01b03163314610c615760405162461bcd60e51b815260040161098f906122ca565b601255565b6000546001600160a01b03163314610c905760405162461bcd60e51b815260040161098f906122ca565b60178390556018829055601981905580610caa8385612368565b610cb49190612368565b601a55505050565b6001600160a01b031660009081526006602052604090205490565b6000546001600160a01b03163314610d015760405162461bcd60e51b815260040161098f906122ca565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d755760405162461bcd60e51b815260040161098f906122ca565b601f8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610dbd5760405162461bcd60e51b815260040161098f906122ca565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b03163314610e085760405162461bcd60e51b815260040161098f906122ca565b601155565b6000546001600160a01b03163314610e375760405162461bcd60e51b815260040161098f906122ca565b601f805460ff60c01b1916600160c01b841515021790556008548190610e60906103e890612327565b610e6a9190612349565b6020555050565b6000546001600160a01b03163314610e9b5760405162461bcd60e51b815260040161098f906122ca565b601f805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610eda5760405162461bcd60e51b815260040161098f906122ca565b6064825110610f4a5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161098f565b60005b8251811015610fca576000838281518110610f6a57610f6a612380565b6020026020010151905060006012600a610f84919061247a565b848481518110610f9657610f96612380565b6020026020010151610fa89190612349565b9050610fb53383836112f1565b50508080610fc290612489565b915050610f4d565b505050565b6000546001600160a01b03163314610ff95760405162461bcd60e51b815260040161098f906122ca565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611040573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106491906124a4565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610fca573d6000803e3d6000fd5b60006110ac3384846112f1565b50600192915050565b6000546001600160a01b031633146110df5760405162461bcd60e51b815260040161098f906122ca565b601383905560148290556015819055806110f98385612368565b6111039190612368565b601655505050565b6000611115610b00565b601f5461112a906001600160a01b0316610cbc565b611135906002612349565b61113f9084612349565b61095f9190612327565b6000546001600160a01b031633146111735760405162461bcd60e51b815260040161098f906122ca565b601c80546001600160a01b039384166001600160a01b031991821617909155601d8054929093169116179055565b6000546001600160a01b031633146111cb5760405162461bcd60e51b815260040161098f906122ca565b6001600160a01b031660009081526004602090815260408083208054600160ff1991821681179092556005909352922080549091169091179055565b6000546001600160a01b031633146112315760405162461bcd60e51b815260040161098f906122ca565b6001600160a01b0381166112965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383161580159061131157506001600160a01b03821615155b6113555760405162461bcd60e51b815260206004820152601560248201527421b0b73737ba1031329030b2323932b9b99418149760591b604482015260640161098f565b6001600160a01b03808416600081815260046020908152604080832054948716835280832054938352600590915281205460ff938416939283169216806113b457506001600160a01b03851660009081526005602052604090205460ff165b806113c85750601f54600160a81b900460ff165b905080156113e0576113db86868661150d565b611505565b601f54600160b81b900460ff166113f657600080fd5b601f54600160a01b900460ff1615611413576113db8686866115cf565b8215611424576113db8686866116cc565b811561144a576114326117f4565b1561143f5761143f61183c565b6113db868686611937565b6001600160a01b03861660009081526002602052604090205460ff1615801561148c57506001600160a01b03851660009081526002602052604090205460ff16155b61149557600080fd5b600e54846114a287610cbc565b6114ac9190612368565b11156114fa5760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d6974604482015260640161098f565b61150586868661199d565b505050505050565b6001600160a01b038316600090815260066020526040902054611553908490611537908490612310565b6001600160a01b03909116600090815260066020526040902055565b6001600160a01b03821660009081526006602052604090205461157d908390611537908490612368565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115c291815260200190565b60405180910390a3505050565b6001600160a01b03821660009081526002602052604090205460ff16156115f557600080fd5b600c5481111561163b5760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b604482015260640161098f565b6064611648826014612349565b6116529190612327565b60109081556001600160a01b0383166000818152600260205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b031916909117905554610fca908490849084906119db565b6001600160a01b03821660009081526002602052604090205460ff16156116f257600080fd5b600c548111156117385760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b604482015260640161098f565b600e548161174584610cbc565b61174f9190612368565b111561179d5760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d6974604482015260640161098f565b6001600160a01b03821660009081526003602052604090205460ff166117e0576016546103e8906117ce9083612349565b6117d89190612327565b6010556117e6565b60006010555b610fca8383836010546119db565b601f54600090600160b01b900460ff1615801561181a5750601f54600160c01b900460ff165b8015610b2e575050602080543060009081526006909252604090912054101590565b601f805460ff60b01b1916600160b01b179055600061185a30610cbc565b601654601a549192506000916118709190612368565b6013546017546118809190612368565b61188a9084612349565b6118949190612327565b905060006118a28284612310565b905060006118b1600284612327565b905060006118bf8285612310565b90506118cb8184612368565b9450476118d786611af6565b60006118e38247612310565b90506000876118f28584612349565b6118fc9190612327565b90506119088582611c2f565b60006119148447612310565b905061191f81611ceb565b5050601f805460ff60b01b1916905550505050505050565b6001600160a01b03831660009081526002602052604090205460ff161561195d57600080fd5b600d5481111561196c57600080fd5b6001600160a01b03831660009081526003602052604090205460ff166117e057601a546103e8906117ce9083612349565b6103e8601154826119ae9190612349565b6119b89190612327565b6010819055156119d057610fca8383836010546119db565b610fca83838361150d565b6000601054836119eb9190612310565b6001600160a01b038616600090815260066020526040902054909150611a18908690611537908690612310565b30600081815260066020526040902054611a389190611537908590612368565b6001600160a01b038416600090815260066020526040902054611a62908590611537908490612368565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611aa791815260200190565b60405180910390a360405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b2b57611b2b612380565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba891906124bd565b81600181518110611bbb57611bbb612380565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b815291169063791ac94790611c019085906000908690309042906004016124da565b600060405180830381600087803b158015611c1b57600080fd5b505af1158015611505573d6000803e3d6000fd5b601f805460ff60a81b1916600160a81b179055601e54601c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611cb2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cd79190612516565b5050601f805460ff60a81b19169055505050565b601954601554600091611cfd91612368565b601854601454919250600091611d139190612368565b90506000611d218284612368565b9050600081611d308587612349565b611d3a9190612327565b9050600082611d498588612349565b611d539190612327565b90508015611e0557601c546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114611dad576040519150601f19603f3d011682016040523d82523d6000602084013e611db2565b606091505b5050905080611e035760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161098f565b505b811561150557601d546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114611e5d576040519150601f19603f3d011682016040523d82523d6000602084013e611e62565b606091505b5050905080611eb35760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161098f565b50505050505050565b600060208083528351808285015260005b81811015611ee957858101830151858201604001528201611ecd565b81811115611efb576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611f2657600080fd5b50565b60008060408385031215611f3c57600080fd5b8235611f4781611f11565b946020939093013593505050565b80358015158114611f6557600080fd5b919050565b60008060408385031215611f7d57600080fd5b8235611f8881611f11565b9150611f9660208401611f55565b90509250929050565b600060208284031215611fb157600080fd5b8135611fbc81611f11565b9392505050565b60008060408385031215611fd657600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101561201e5781516001600160a01b031687529582019590820190600101611ff9565b509495945050505050565b602081526000611fbc6020830184611fe5565b60008060006060848603121561205157600080fd5b833561205c81611f11565b9250602084013561206c81611f11565b929592945050506040919091013590565b60008060006060848603121561209257600080fd5b505081359360208301359350604090920135919050565b6000602082840312156120bb57600080fd5b5035919050565b6000602082840312156120d457600080fd5b611fbc82611f55565b600080604083850312156120f057600080fd5b611f4783611f55565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612138576121386120f9565b604052919050565b600067ffffffffffffffff82111561215a5761215a6120f9565b5060051b60200190565b600082601f83011261217557600080fd5b8135602061218a61218583612140565b61210f565b82815260059290921b840181019181810190868411156121a957600080fd5b8286015b848110156121c457803583529183019183016121ad565b509695505050505050565b600080604083850312156121e257600080fd5b823567ffffffffffffffff808211156121fa57600080fd5b818501915085601f83011261220e57600080fd5b8135602061221e61218583612140565b82815260059290921b8401810191818101908984111561223d57600080fd5b948201945b8386101561226457853561225581611f11565b82529482019490820190612242565b9650508601359250508082111561227a57600080fd5b5061228785828601612164565b9150509250929050565b600080604083850312156122a457600080fd5b82356122af81611f11565b915060208301356122bf81611f11565b809150509250929050565b60208082526016908201527510aca7aa9020a922902727aa102a24229027aba722a960511b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015612322576123226122fa565b500390565b60008261234457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612363576123636122fa565b500290565b6000821982111561237b5761237b6122fa565b500190565b634e487b7160e01b600052603260045260246000fd5b600181815b808511156123d15781600019048211156123b7576123b76122fa565b808516156123c457918102915b93841c939080029061239b565b509250929050565b6000826123e85750600161095f565b816123f55750600061095f565b816001811461240b576002811461241557612431565b600191505061095f565b60ff841115612426576124266122fa565b50506001821b61095f565b5060208310610133831016604e8410600b8410161715612454575081810a61095f565b61245e8383612396565b8060001904821115612472576124726122fa565b029392505050565b6000611fbc60ff8416836123d9565b600060001982141561249d5761249d6122fa565b5060010190565b6000602082840312156124b657600080fd5b5051919050565b6000602082840312156124cf57600080fd5b8151611fbc81611f11565b85815284602082015260a0604082015260006124f960a0830186611fe5565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561252b57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c675512d3632741b91c9d2802d7d68eca6f0c3f35e66f954671f1d049e15f3a964736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806370a082311161015a578063a5949bcf116100c1578063dca3cef11161007a578063dca3cef11461081c578063dd62ed3e1461083c578063e065099714610882578063e5a772d214610898578063f2fde38b146108b8578063f887ea40146108d857600080fd5b8063a5949bcf14610766578063a8aa1b3114610786578063a9059cbb146107a6578063b46ba24b146107c6578063b704a9f6146107e6578063d51ed1c8146107fc57600080fd5b80638ca42e4e116101135780638ca42e4e146106a45780638ee41ca8146106c4578063951fbf6d146106e457806395d89b41146106f95780639b0ad05c146107265780639be953b31461074657600080fd5b806370a08231146105e1578063715018a6146106015780637a6d69b41461061657806383bd84851461064657806387cfc49314610666578063893d20e81461068657600080fd5b80632f54bf6e116101fe57806353cd6210116101b757806353cd621014610534578063599ca3971461055557806359d3cac21461056b5780636390aeeb1461058b5780636dc53a0a146105a05780636ddd1713146105c057600080fd5b80632f54bf6e14610471578063313ce567146104a0578063364333f4146104bc57806347062402146104d15780634c5d8710146104f457806352aae9dd1461051457600080fd5b806318160ddd1161025057806318160ddd146103805780631ca0b1d01461039f57806323b872dd146103c15780632b112e49146103e15780632b14ca56146103f65780632d3b40471461043957600080fd5b806306fdde0314610298578063095ea7b3146102de5780630c5b1d931461030e5780630cb23d86146103305780631161ae391461036057600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b5060408051808201909152600b81526a52656420466c616720414960a81b60208201525b6040516102d59190611ebc565b60405180910390f35b3480156102ea57600080fd5b506102fe6102f9366004611f29565b6108f8565b60405190151581526020016102d5565b34801561031a57600080fd5b5061032e610329366004611f6a565b610965565b005b34801561033c57600080fd5b506102fe61034b366004611f9f565b60046020526000908152604090205460ff1681565b34801561036c57600080fd5b506102fe61037b366004611fc3565b6109c3565b34801561038c57600080fd5b506008545b6040519081526020016102d5565b3480156103ab57600080fd5b506103b46109d7565b6040516102d59190612029565b3480156103cd57600080fd5b506102fe6103dc36600461203c565b610a39565b3480156103ed57600080fd5b50610391610b00565b34801561040257600080fd5b50601754601854601954601a546104199392919084565b6040805194855260208501939093529183015260608201526080016102d5565b34801561044557600080fd5b50601b54610459906001600160a01b031681565b6040516001600160a01b0390911681526020016102d5565b34801561047d57600080fd5b506102fe61048c366004611f9f565b6000546001600160a01b0391821691161490565b3480156104ac57600080fd5b50604051601281526020016102d5565b3480156104c857600080fd5b5061032e610b33565b3480156104dd57600080fd5b506013546014546015546016546104199392919084565b34801561050057600080fd5b5061032e61050f36600461207d565b610b9c565b34801561052057600080fd5b5061032e61052f3660046120a9565b610c37565b34801561054057600080fd5b50601f546102fe90600160a01b900460ff1681565b34801561056157600080fd5b50610391600b5481565b34801561057757600080fd5b5061032e61058636600461207d565b610c66565b34801561059757600080fd5b50600f54610391565b3480156105ac57600080fd5b50601c54610459906001600160a01b031681565b3480156105cc57600080fd5b50601f546102fe90600160c01b900460ff1681565b3480156105ed57600080fd5b506103916105fc366004611f9f565b610cbc565b34801561060d57600080fd5b5061032e610cd7565b34801561062257600080fd5b506102fe610631366004611f9f565b60026020526000908152604090205460ff1681565b34801561065257600080fd5b5061032e6106613660046120c2565b610d4b565b34801561067257600080fd5b5061032e610681366004611f9f565b610d93565b34801561069257600080fd5b506000546001600160a01b0316610459565b3480156106b057600080fd5b5061032e6106bf3660046120a9565b610dde565b3480156106d057600080fd5b5061032e6106df3660046120dd565b610e0d565b3480156106f057600080fd5b5061032e610e71565b34801561070557600080fd5b506040805180820190915260048152635246414960e01b60208201526102c8565b34801561073257600080fd5b5061032e6107413660046121cf565b610eb0565b34801561075257600080fd5b5061032e610761366004611f9f565b610fcf565b34801561077257600080fd5b50601d54610459906001600160a01b031681565b34801561079257600080fd5b50601f54610459906001600160a01b031681565b3480156107b257600080fd5b506102fe6107c1366004611f29565b61109f565b3480156107d257600080fd5b5061032e6107e136600461207d565b6110b5565b3480156107f257600080fd5b50610391600a5481565b34801561080857600080fd5b506103916108173660046120a9565b61110b565b34801561082857600080fd5b5061032e610837366004612291565b611149565b34801561084857600080fd5b50610391610857366004612291565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561088e57600080fd5b5061039160095481565b3480156108a457600080fd5b5061032e6108b3366004611f9f565b6111a1565b3480156108c457600080fd5b5061032e6108d3366004611f9f565b611207565b3480156108e457600080fd5b50601e54610459906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109539086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146109985760405162461bcd60e51b815260040161098f906122ca565b60405180910390fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000826109cf8361110b565b119392505050565b6060600f805480602002602001604051908101604052809291908181526020018280548015610a2f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a11575b5050505050905090565b6001600160a01b038316600090815260076020908152604080832033845290915281205482811015610a6a57600080fd5b6001600160a01b038516600090815260076020908152604080832033845290915290205460001914610aea576001600160a01b0385166000908152600760209081526040808320338452909152902054610ac5908490612310565b6001600160a01b03861660009081526007602090815260408083203384529091529020555b610af58585856112f1565b506001949350505050565b6000610b0c6000610cbc565b610b1761dead610cbc565b600854610b249190612310565b610b2e9190612310565b905090565b6000546001600160a01b03163314610b5d5760405162461bcd60e51b815260040161098f906122ca565b6000805460405147926001600160a01b039092169183156108fc02918491818181858888f19350505050158015610b98573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610bc65760405162461bcd60e51b815260040161098f906122ca565b60098390556008548390610bdd906103e890612327565b610be79190612349565b600c55600a8290556008548290610c01906103e890612327565b610c0b9190612349565b600d55600b8190556008548190610c25906103e890612327565b610c2f9190612349565b600e55505050565b6000546001600160a01b03163314610c615760405162461bcd60e51b815260040161098f906122ca565b601255565b6000546001600160a01b03163314610c905760405162461bcd60e51b815260040161098f906122ca565b60178390556018829055601981905580610caa8385612368565b610cb49190612368565b601a55505050565b6001600160a01b031660009081526006602052604090205490565b6000546001600160a01b03163314610d015760405162461bcd60e51b815260040161098f906122ca565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d755760405162461bcd60e51b815260040161098f906122ca565b601f8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610dbd5760405162461bcd60e51b815260040161098f906122ca565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b03163314610e085760405162461bcd60e51b815260040161098f906122ca565b601155565b6000546001600160a01b03163314610e375760405162461bcd60e51b815260040161098f906122ca565b601f805460ff60c01b1916600160c01b841515021790556008548190610e60906103e890612327565b610e6a9190612349565b6020555050565b6000546001600160a01b03163314610e9b5760405162461bcd60e51b815260040161098f906122ca565b601f805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610eda5760405162461bcd60e51b815260040161098f906122ca565b6064825110610f4a5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161098f565b60005b8251811015610fca576000838281518110610f6a57610f6a612380565b6020026020010151905060006012600a610f84919061247a565b848481518110610f9657610f96612380565b6020026020010151610fa89190612349565b9050610fb53383836112f1565b50508080610fc290612489565b915050610f4d565b505050565b6000546001600160a01b03163314610ff95760405162461bcd60e51b815260040161098f906122ca565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611040573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106491906124a4565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610fca573d6000803e3d6000fd5b60006110ac3384846112f1565b50600192915050565b6000546001600160a01b031633146110df5760405162461bcd60e51b815260040161098f906122ca565b601383905560148290556015819055806110f98385612368565b6111039190612368565b601655505050565b6000611115610b00565b601f5461112a906001600160a01b0316610cbc565b611135906002612349565b61113f9084612349565b61095f9190612327565b6000546001600160a01b031633146111735760405162461bcd60e51b815260040161098f906122ca565b601c80546001600160a01b039384166001600160a01b031991821617909155601d8054929093169116179055565b6000546001600160a01b031633146111cb5760405162461bcd60e51b815260040161098f906122ca565b6001600160a01b031660009081526004602090815260408083208054600160ff1991821681179092556005909352922080549091169091179055565b6000546001600160a01b031633146112315760405162461bcd60e51b815260040161098f906122ca565b6001600160a01b0381166112965760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383161580159061131157506001600160a01b03821615155b6113555760405162461bcd60e51b815260206004820152601560248201527421b0b73737ba1031329030b2323932b9b99418149760591b604482015260640161098f565b6001600160a01b03808416600081815260046020908152604080832054948716835280832054938352600590915281205460ff938416939283169216806113b457506001600160a01b03851660009081526005602052604090205460ff165b806113c85750601f54600160a81b900460ff165b905080156113e0576113db86868661150d565b611505565b601f54600160b81b900460ff166113f657600080fd5b601f54600160a01b900460ff1615611413576113db8686866115cf565b8215611424576113db8686866116cc565b811561144a576114326117f4565b1561143f5761143f61183c565b6113db868686611937565b6001600160a01b03861660009081526002602052604090205460ff1615801561148c57506001600160a01b03851660009081526002602052604090205460ff16155b61149557600080fd5b600e54846114a287610cbc565b6114ac9190612368565b11156114fa5760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d6974604482015260640161098f565b61150586868661199d565b505050505050565b6001600160a01b038316600090815260066020526040902054611553908490611537908490612310565b6001600160a01b03909116600090815260066020526040902055565b6001600160a01b03821660009081526006602052604090205461157d908390611537908490612368565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115c291815260200190565b60405180910390a3505050565b6001600160a01b03821660009081526002602052604090205460ff16156115f557600080fd5b600c5481111561163b5760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b604482015260640161098f565b6064611648826014612349565b6116529190612327565b60109081556001600160a01b0383166000818152600260205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b031916909117905554610fca908490849084906119db565b6001600160a01b03821660009081526002602052604090205460ff16156116f257600080fd5b600c548111156117385760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b604482015260640161098f565b600e548161174584610cbc565b61174f9190612368565b111561179d5760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d6974604482015260640161098f565b6001600160a01b03821660009081526003602052604090205460ff166117e0576016546103e8906117ce9083612349565b6117d89190612327565b6010556117e6565b60006010555b610fca8383836010546119db565b601f54600090600160b01b900460ff1615801561181a5750601f54600160c01b900460ff165b8015610b2e575050602080543060009081526006909252604090912054101590565b601f805460ff60b01b1916600160b01b179055600061185a30610cbc565b601654601a549192506000916118709190612368565b6013546017546118809190612368565b61188a9084612349565b6118949190612327565b905060006118a28284612310565b905060006118b1600284612327565b905060006118bf8285612310565b90506118cb8184612368565b9450476118d786611af6565b60006118e38247612310565b90506000876118f28584612349565b6118fc9190612327565b90506119088582611c2f565b60006119148447612310565b905061191f81611ceb565b5050601f805460ff60b01b1916905550505050505050565b6001600160a01b03831660009081526002602052604090205460ff161561195d57600080fd5b600d5481111561196c57600080fd5b6001600160a01b03831660009081526003602052604090205460ff166117e057601a546103e8906117ce9083612349565b6103e8601154826119ae9190612349565b6119b89190612327565b6010819055156119d057610fca8383836010546119db565b610fca83838361150d565b6000601054836119eb9190612310565b6001600160a01b038616600090815260066020526040902054909150611a18908690611537908690612310565b30600081815260066020526040902054611a389190611537908590612368565b6001600160a01b038416600090815260066020526040902054611a62908590611537908490612368565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611aa791815260200190565b60405180910390a360405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b2b57611b2b612380565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba891906124bd565b81600181518110611bbb57611bbb612380565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b815291169063791ac94790611c019085906000908690309042906004016124da565b600060405180830381600087803b158015611c1b57600080fd5b505af1158015611505573d6000803e3d6000fd5b601f805460ff60a81b1916600160a81b179055601e54601c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611cb2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cd79190612516565b5050601f805460ff60a81b19169055505050565b601954601554600091611cfd91612368565b601854601454919250600091611d139190612368565b90506000611d218284612368565b9050600081611d308587612349565b611d3a9190612327565b9050600082611d498588612349565b611d539190612327565b90508015611e0557601c546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114611dad576040519150601f19603f3d011682016040523d82523d6000602084013e611db2565b606091505b5050905080611e035760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161098f565b505b811561150557601d546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114611e5d576040519150601f19603f3d011682016040523d82523d6000602084013e611e62565b606091505b5050905080611eb35760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161098f565b50505050505050565b600060208083528351808285015260005b81811015611ee957858101830151858201604001528201611ecd565b81811115611efb576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611f2657600080fd5b50565b60008060408385031215611f3c57600080fd5b8235611f4781611f11565b946020939093013593505050565b80358015158114611f6557600080fd5b919050565b60008060408385031215611f7d57600080fd5b8235611f8881611f11565b9150611f9660208401611f55565b90509250929050565b600060208284031215611fb157600080fd5b8135611fbc81611f11565b9392505050565b60008060408385031215611fd657600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b8381101561201e5781516001600160a01b031687529582019590820190600101611ff9565b509495945050505050565b602081526000611fbc6020830184611fe5565b60008060006060848603121561205157600080fd5b833561205c81611f11565b9250602084013561206c81611f11565b929592945050506040919091013590565b60008060006060848603121561209257600080fd5b505081359360208301359350604090920135919050565b6000602082840312156120bb57600080fd5b5035919050565b6000602082840312156120d457600080fd5b611fbc82611f55565b600080604083850312156120f057600080fd5b611f4783611f55565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612138576121386120f9565b604052919050565b600067ffffffffffffffff82111561215a5761215a6120f9565b5060051b60200190565b600082601f83011261217557600080fd5b8135602061218a61218583612140565b61210f565b82815260059290921b840181019181810190868411156121a957600080fd5b8286015b848110156121c457803583529183019183016121ad565b509695505050505050565b600080604083850312156121e257600080fd5b823567ffffffffffffffff808211156121fa57600080fd5b818501915085601f83011261220e57600080fd5b8135602061221e61218583612140565b82815260059290921b8401810191818101908984111561223d57600080fd5b948201945b8386101561226457853561225581611f11565b82529482019490820190612242565b9650508601359250508082111561227a57600080fd5b5061228785828601612164565b9150509250929050565b600080604083850312156122a457600080fd5b82356122af81611f11565b915060208301356122bf81611f11565b809150509250929050565b60208082526016908201527510aca7aa9020a922902727aa102a24229027aba722a960511b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082821015612322576123226122fa565b500390565b60008261234457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612363576123636122fa565b500290565b6000821982111561237b5761237b6122fa565b500190565b634e487b7160e01b600052603260045260246000fd5b600181815b808511156123d15781600019048211156123b7576123b76122fa565b808516156123c457918102915b93841c939080029061239b565b509250929050565b6000826123e85750600161095f565b816123f55750600061095f565b816001811461240b576002811461241557612431565b600191505061095f565b60ff841115612426576124266122fa565b50506001821b61095f565b5060208310610133831016604e8410600b8410161715612454575081810a61095f565b61245e8383612396565b8060001904821115612472576124726122fa565b029392505050565b6000611fbc60ff8416836123d9565b600060001982141561249d5761249d6122fa565b5060010190565b6000602082840312156124b657600080fd5b5051919050565b6000602082840312156124cf57600080fd5b8151611fbc81611f11565b85815284602082015260a0604082015260006124f960a0830186611fe5565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561252b57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220c675512d3632741b91c9d2802d7d68eca6f0c3f35e66f954671f1d049e15f3a964736f6c634300080a0033

Deployed Bytecode Sourcemap

3508:16365:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18594:80;;;;;;;;;;-1:-1:-1;18666:5:0;;;;;;;;;;;;-1:-1:-1;;;18666:5:0;;;;18594:80;;;;;;;:::i;:::-;;;;;;;;19015:216;;;;;;;;;;-1:-1:-1;19015:216:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;19015:216:0;1072:187:1;8191:130:0;;;;;;;;;;-1:-1:-1;8191:130:0;;;;;:::i;:::-;;:::i;:::-;;3673:54;;;;;;;;;;-1:-1:-1;3673:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11787:150;;;;;;;;;;-1:-1:-1;11787:150:0;;;;;:::i;:::-;;:::i;18324:88::-;;;;;;;;;;-1:-1:-1;18397:12:0;;18324:88;;;2400:25:1;;;2388:2;2373:18;18324:88:0;2254:177:1;11394:99:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19414:456::-;;;;;;;;;;-1:-1:-1;19414:456:0;;;;;:::i;:::-;;:::i;11249:136::-;;;;;;;;;;;;;:::i;4933:22::-;;;;;;;;;;-1:-1:-1;4933:22:0;;;;;;;;;;;;;;;;;;;3860:25:1;;;3916:2;3901:18;;3894:34;;;;3944:18;;;3937:34;4002:2;3987:18;;3980:34;3847:3;3832:19;4933:22:0;3629:391:1;4989:82:0;;;;;;;;;;-1:-1:-1;4989:82:0;;;;-1:-1:-1;;;;;4989:82:0;;;;;;-1:-1:-1;;;;;4189:32:1;;;4171:51;;4159:2;4144:18;4989:82:0;4025:203:1;1437:103:0;;;;;;;;;;-1:-1:-1;1437:103:0;;;;;:::i;:::-;1492:4;1527:5;-1:-1:-1;;;;;1516:16:0;;;1527:5;;1516:16;;1437:103;18418:80;;;;;;;;;;-1:-1:-1;18418:80:0;;4063:2;4375:36:1;;4363:2;4348:18;18418:80:0;4233:184:1;10742:171:0;;;;;;;;;;;;;:::i;4906:20::-;;;;;;;;;;-1:-1:-1;4906:20:0;;;;;;;;;;;;;;;7568:511;;;;;;;;;;-1:-1:-1;7568:511:0;;;;;:::i;:::-;;:::i;8545:111::-;;;;;;;;;;-1:-1:-1;8545:111:0;;;;;:::i;:::-;;:::i;5446:33::-;;;;;;;;;;-1:-1:-1;5446:33:0;;;;-1:-1:-1;;;5446:33:0;;;;;;4264:34;;;;;;;;;;;;;;;;9149:360;;;;;;;;;;-1:-1:-1;9149:360:0;;;;;:::i;:::-;;:::i;11502:103::-;;;;;;;;;;-1:-1:-1;11580:10:0;:17;11502:103;;5246:47;;;;;;;;;;-1:-1:-1;5246:47:0;;;;-1:-1:-1;;;;;5246:47:0;;;5664:30;;;;;;;;;;-1:-1:-1;5664:30:0;;;;-1:-1:-1;;;5664:30:0;;;;;;18764:104;;;;;;;;;;-1:-1:-1;18764:104:0;;;;;:::i;:::-;;:::i;1800:146::-;;;;;;;;;;;;;:::i;3570:44::-;;;;;;;;;;-1:-1:-1;3570:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10630:103;;;;;;;;;;-1:-1:-1;10630:103:0;;;;;:::i;:::-;;:::i;10355:105::-;;;;;;;;;;-1:-1:-1;10355:105:0;;;;;:::i;:::-;;:::i;18680:78::-;;;;;;;;;;-1:-1:-1;18732:7:0;18750:5;-1:-1:-1;;;;;18750:5:0;18680:78;;9580:119;;;;;;;;;;-1:-1:-1;9580:119:0;;;;;:::i;:::-;;:::i;8330:206::-;;;;;;;;;;-1:-1:-1;8330:206:0;;;;;:::i;:::-;;:::i;8088:94::-;;;;;;;;;;;;;:::i;18504:84::-;;;;;;;;;;-1:-1:-1;18578:7:0;;;;;;;;;;;;-1:-1:-1;;;18578:7:0;;;;18504:84;;9894:452;;;;;;;;;;-1:-1:-1;9894:452:0;;;;;:::i;:::-;;:::i;10922:206::-;;;;;;;;;;-1:-1:-1;10922:206:0;;;;;:::i;:::-;;:::i;5300:47::-;;;;;;;;;;-1:-1:-1;5300:47:0;;;;-1:-1:-1;;;;;5300:47:0;;;5388:19;;;;;;;;;;-1:-1:-1;5388:19:0;;;;-1:-1:-1;;;;;5388:19:0;;;19240:165;;;;;;;;;;-1:-1:-1;19240:165:0;;;;;:::i;:::-;;:::i;8726:352::-;;;;;;;;;;-1:-1:-1;8726:352:0;;;;;:::i;:::-;;:::i;4225:32::-;;;;;;;;;;;;;;;;11614:164;;;;;;;;;;-1:-1:-1;11614:164:0;;;;;:::i;:::-;;:::i;9708:177::-;;;;;;;;;;-1:-1:-1;9708:177:0;;;;;:::i;:::-;;:::i;18874:132::-;;;;;;;;;;-1:-1:-1;18874:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;18976:19:0;;;18958:7;18976:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18874:132;4187:31;;;;;;;;;;;;;;;;10469:152;;;;;;;;;;-1:-1:-1;10469:152:0;;;;;:::i;:::-;;:::i;1549:242::-;;;;;;;;;;-1:-1:-1;1549:242:0;;;;;:::i;:::-;;:::i;5357:24::-;;;;;;;;;;-1:-1:-1;5357:24:0;;;;-1:-1:-1;;;;;5357:24:0;;;19015:216;19119:10;19090:4;19107:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;19107:32:0;;;;;;;;;;:41;;;19164:37;19090:4;;19107:32;;19164:37;;;;19142:6;2400:25:1;;2388:2;2373:18;;2254:177;19164:37:0;;;;;;;;-1:-1:-1;19219:4:0;19015:216;;;;;:::o;8191:130::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;8284:19:0;;;::::1;;::::0;;;:12:::1;:19;::::0;;;;:29;;-1:-1:-1;;8284:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8191:130::o;11787:150::-;11867:4;11923:6;11891:29;11911:8;11891:19;:29::i;:::-;:38;;11787:150;-1:-1:-1;;;11787:150:0:o;11394:99::-;11440:16;11475:10;11468:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11468:17:0;;;;;;;;;;;;;;;;;;;;;;;11394:99;:::o;19414:456::-;-1:-1:-1;;;;;19550:19:0;;19512:4;19550:19;;;:11;:19;;;;;;;;19570:10;19550:31;;;;;;;;19600:20;;;;19592:29;;;;;;-1:-1:-1;;;;;19639:19:0;;;;;;:11;:19;;;;;;;;19659:10;19639:31;;;;;;;;-1:-1:-1;;19639:52:0;19635:159;;-1:-1:-1;;;;;19742:19:0;;;;;;:11;:19;;;;;;;;19762:10;19742:31;;;;;;;;:40;;19776:6;;19742:40;:::i;:::-;-1:-1:-1;;;;;19708:19:0;;;;;;:11;:19;;;;;;;;19728:10;19708:31;;;;;;;:74;19635:159;19804:36;19814:6;19822:9;19833:6;19804:9;:36::i;:::-;-1:-1:-1;19858:4:0;;19414:456;-1:-1:-1;;;;19414:456:0:o;11249:136::-;11302:7;11362:15;5194:42;11362:9;:15::i;:::-;11344;5113:42;11344:9;:15::i;:::-;11329:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;11322:55;;11249:136;:::o;10742:171::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;10801:26:::1;10870:5:::0;;10862:43:::1;::::0;10830:21:::1;::::0;-1:-1:-1;;;;;10870:5:0;;::::1;::::0;10862:43;::::1;;;::::0;10830:21;;10862:43;10801:26;10862:43;10830:21;10870:5;10862:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10790:123;10742:171::o:0;7568:511::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;7707:16:::1;:36:::0;;;7780:12:::1;::::0;7726:17;;7780:18:::1;::::0;7794:4:::1;::::0;7780:18:::1;:::i;:::-;:37;;;;:::i;:::-;7765:12;:52:::0;7830:17:::1;:38:::0;;;7904:12:::1;::::0;7850:18;;7904::::1;::::0;7918:4:::1;::::0;7904:18:::1;:::i;:::-;:38;;;;:::i;:::-;7888:13;:54:::0;7955:19:::1;:41:::0;;;8031:12:::1;::::0;7976:20;;8031:18:::1;::::0;8045:4:::1;::::0;8031:18:::1;:::i;:::-;:40;;;;:::i;:::-;8013:15;:58:::0;-1:-1:-1;;;7568:511:0:o;8545:111::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;8624:15:::1;:24:::0;8545:111::o;9149:360::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;9278:7:::1;:36:::0;;;9325:20;:36;;;9372:20;:36;;;9395:13;9435:43:::1;9348:13:::0;9301;9435:43:::1;:::i;:::-;:66;;;;:::i;:::-;9419:13:::0;:82;-1:-1:-1;;;9149:360:0:o;18764:104::-;-1:-1:-1;;;;;18848:18:0;18830:7;18848:18;;;:9;:18;;;;;;;18764:104::o;1800:146::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;1906:1:::1;1891:5:::0;;1870:39:::1;::::0;-1:-1:-1;;;;;1891:5:0;;::::1;::::0;1870:39:::1;::::0;1906:1;;1870:39:::1;1936:1;1920:18:::0;;-1:-1:-1;;;;;;1920:18:0::1;::::0;;1800:146::o;10630:103::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;10703:14:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;10703:22:0::1;-1:-1:-1::0;;;;10703:22:0;;::::1;::::0;;;::::1;::::0;;10630:103::o;10355:105::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10424:20:0::1;10447:5;10424:20:::0;;;:12:::1;:20;::::0;;;;:28;;-1:-1:-1;;10424:28:0::1;::::0;;10355:105::o;9580:119::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;9665:11:::1;:26:::0;9580:119::o;8330:206::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;8438:11:::1;:22:::0;;-1:-1:-1;;;;8438:22:0::1;-1:-1:-1::0;;;8438:22:0;::::1;;;;::::0;;8487:12:::1;::::0;8509:19;;8487::::1;::::0;8502:4:::1;::::0;8487:19:::1;:::i;:::-;:41;;;;:::i;:::-;8471:13;:57:::0;-1:-1:-1;;8330:206:0:o;8088:94::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;8139:28:::1;:35:::0;;-1:-1:-1;;;;8139:35:0::1;-1:-1:-1::0;;;8139:35:0::1;::::0;;8088:94::o;9894:452::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;10043:3:::1;10019:14;:21;:27;10011:94;;;::::0;-1:-1:-1;;;10011:94:0;;9815:2:1;10011:94:0::1;::::0;::::1;9797:21:1::0;9854:2;9834:18;;;9827:30;9893:34;9873:18;;;9866:62;-1:-1:-1;;;9944:18:1;;;9937:52;10006:19;;10011:94:0::1;9613:418:1::0;10011:94:0::1;10120:9;10116:223;10139:14;:21;10135:1;:25;10116:223;;;10181:14;10198;10213:1;10198:17;;;;;;;;:::i;:::-;;;;;;;10181:34;;10230:14;4063:2;10261;:13;;;;:::i;:::-;10248:7;10256:1;10248:10;;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;10230:45;;10290:37;10300:10;10312:6;10320;10290:9;:37::i;:::-;10166:173;;10162:3;;;;;:::i;:::-;;;;10116:223;;;;9894:452:::0;;:::o;10922:206::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;11018:38:::1;::::0;-1:-1:-1;;;11018:38:0;;11050:4:::1;11018:38;::::0;::::1;4171:51:1::0;10991:24:0::1;::::0;-1:-1:-1;;;;;11018:23:0;::::1;::::0;::::1;::::0;4144:18:1;;11018:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11075:17;::::0;11067:53:::1;::::0;10991:65;;-1:-1:-1;;;;;;11075:17:0::1;::::0;11067:53;::::1;;;::::0;10991:65;;11075:17:::1;11067:53:::0;11075:17;11067:53;10991:65;11075:17;11067:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;19240:165:::0;19318:4;19335:40;19345:10;19357:9;19368:6;19335:9;:40::i;:::-;-1:-1:-1;19393:4:0;19240:165;;;;:::o;8726:352::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;8854:6:::1;:35:::0;;;8900:19;:35;;;8946:19;:35;;;8968:13;9007:41:::1;8922:13:::0;8876;9007:41:::1;:::i;:::-;:63;;;;:::i;:::-;8992:12:::0;:78;-1:-1:-1;;;8726:352:0:o;11614:164::-;11682:7;11747:22;:20;:22::i;:::-;11731:4;;11721:15;;-1:-1:-1;;;;;11731:4:0;11721:9;:15::i;:::-;:21;;11740:1;11721:21;:::i;:::-;11709:34;;:8;:34;:::i;:::-;:61;;;;:::i;9708:177::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;9806:17:::1;:30:::0;;-1:-1:-1;;;;;9806:30:0;;::::1;-1:-1:-1::0;;;;;;9806:30:0;;::::1;;::::0;;;9847:17:::1;:30:::0;;;;;::::1;::::0;::::1;;::::0;;9708:177::o;10469:152::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10542:30:0::1;;::::0;;;:22:::1;:30;::::0;;;;;;;:35;;10573:4:::1;-1:-1:-1::0;;10542:35:0;;::::1;::::0;::::1;::::0;;;10588:12:::1;:20:::0;;;;;:25;;;;::::1;::::0;;::::1;::::0;;10469:152::o;1549:242::-;1492:4;1527:5;-1:-1:-1;;;;;1527:5:0;1379:10;1516:16;1363:54;;;;-1:-1:-1;;;1363:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1638:22:0;::::1;1630:73;;;::::0;-1:-1:-1;;;1630:73:0;;12082:2:1;1630:73:0::1;::::0;::::1;12064:21:1::0;12121:2;12101:18;;;12094:30;12160:34;12140:18;;;12133:62;-1:-1:-1;;;12211:18:1;;;12204:36;12257:19;;1630:73:0::1;11880:402:1::0;1630:73:0::1;1740:5;::::0;;1719:37:::1;::::0;-1:-1:-1;;;;;1719:37:0;;::::1;::::0;1740:5;::::1;::::0;1719:37:::1;::::0;::::1;1767:5;:16:::0;;-1:-1:-1;;;;;;1767:16:0::1;-1:-1:-1::0;;;;;1767:16:0;;;::::1;::::0;;;::::1;::::0;;1549:242::o;12063:1205::-;-1:-1:-1;;;;;12158:18:0;;;;;;:41;;-1:-1:-1;;;;;;12178:21:0;;;;12158:41;12150:74;;;;-1:-1:-1;;;12150:74:0;;12489:2:1;12150:74:0;;;12471:21:1;12528:2;12508:18;;;12501:30;-1:-1:-1;;;12547:18:1;;;12540:51;12608:18;;12150:74:0;12287:345:1;12150:74:0;-1:-1:-1;;;;;12246:30:0;;;12235:10;12246:30;;;:22;:30;;;;;;;;;12299:33;;;;;;;;;12359:20;;;:12;:20;;;;;;12246:30;;;;;12299:33;;;;12359:20;;:45;;-1:-1:-1;;;;;;12381:23:0;;;;;;:12;:23;;;;;;;;12359:45;:56;;;-1:-1:-1;12406:9:0;;-1:-1:-1;;;12406:9:0;;;;12359:56;12343:72;;12432:10;12429:832;;;12443:42;12461:6;12468:9;12478:6;12443:17;:42::i;:::-;12429:832;;;12511:28;;-1:-1:-1;;;12511:28:0;;;;12503:37;;;;;;12593:14;;-1:-1:-1;;;12593:14:0;;;;12590:660;;;12608:39;12623:6;12630:9;12640:6;12608:14;:39::i;12590:660::-;12697:5;12694:556;;;12703:35;12714:6;12721:9;12731:6;12703:10;:35::i;12694:556::-;12789:6;12786:464;;;12855:16;:14;:16::i;:::-;12851:35;;;12874:10;:8;:10::i;:::-;12904:36;12916:6;12923:9;12933:6;12904:11;:36::i;12786:464::-;-1:-1:-1;;;;;13023:20:0;;;;;;:12;:20;;;;;;;;13022:21;:47;;;;-1:-1:-1;;;;;;13046:23:0;;;;;;:12;:23;;;;;;;;13045:24;13022:47;13014:56;;;;;;13126:15;;13118:6;13097:20;13107:9;13097;:20::i;:::-;:27;;;;:::i;:::-;:44;;13089:89;;;;-1:-1:-1;;;13089:89:0;;12839:2:1;13089:89:0;;;12821:21:1;;;12858:18;;;12851:30;12917:34;12897:18;;;12890:62;12969:18;;13089:89:0;12637:356:1;13089:89:0;13197:37;13210:6;13217:9;13227:6;13197:12;:37::i;:::-;12139:1129;;;12063:1205;;;:::o;14776:263::-;-1:-1:-1;;;;;14893:17:0;;;;;;:9;:17;;;;;;14871:47;;14886:6;;14893:24;;14911:6;;14893:24;:::i;:::-;-1:-1:-1;;;;;15600:18:0;;;;;;;:9;:18;;;;;:31;15521:118;14871:47;-1:-1:-1;;;;;14954:20:0;;;;;;:9;:20;;;;;;14929:53;;14944:9;;14954:27;;14975:6;;14954:27;:::i;14929:53::-;15014:9;-1:-1:-1;;;;;14998:33:0;15007:6;-1:-1:-1;;;;;14998:33:0;;15024:6;14998:33;;;;2400:25:1;;2388:2;2373:18;;2254:177;14998:33:0;;;;;;;;14776:263;;;:::o;13277:378::-;-1:-1:-1;;;;;13378:23:0;;;;;;:12;:23;;;;;;;;13377:24;13369:33;;;;;;13431:12;;13421:6;:22;;13413:52;;;;-1:-1:-1;;;13413:52:0;;13200:2:1;13413:52:0;;;13182:21:1;13239:2;13219:18;;;13212:30;-1:-1:-1;;;13258:18:1;;;13251:47;13315:18;;13413:52:0;12998:341:1;13413:52:0;13497:3;13487:9;:6;13494:2;13487:9;:::i;:::-;:13;;;;:::i;:::-;13476:8;:24;;;-1:-1:-1;;;;;13511:23:0;;;;;;:12;:23;;;;;:28;;-1:-1:-1;;13511:28:0;13535:4;13511:28;;;;;;13550:10;:35;;;;;;;;;;;;;;-1:-1:-1;;;;;;13550:35:0;;;;;;13638:8;13596:51;;13614:6;;13524:9;;13631:6;;13596:17;:51::i;13664:468::-;-1:-1:-1;;;;;13761:23:0;;;;;;:12;:23;;;;;;;;13760:24;13752:33;;;;;;13814:12;;13804:6;:22;;13796:52;;;;-1:-1:-1;;;13796:52:0;;13200:2:1;13796:52:0;;;13182:21:1;13239:2;13219:18;;;13212:30;-1:-1:-1;;;13258:18:1;;;13251:47;13315:18;;13796:52:0;12998:341:1;13796:52:0;13896:15;;13888:6;13867:20;13877:9;13867;:20::i;:::-;:27;;;;:::i;:::-;:44;;13859:89;;;;-1:-1:-1;;;13859:89:0;;12839:2:1;13859:89:0;;;12821:21:1;;;12858:18;;;12851:30;12917:34;12897:18;;;12890:62;12969:18;;13859:89:0;12637:356:1;13859:89:0;-1:-1:-1;;;;;13963:23:0;;;;;;:12;:23;;;;;;;;13959:103;;14016:12;;14029:4;;14009:19;;:6;:19;:::i;:::-;:24;;;;:::i;:::-;13998:8;:35;13959:103;;;14061:1;14050:8;:12;13959:103;14073:51;14091:6;14098:9;14108:6;14115:8;;14073:17;:51::i;15648:186::-;15734:6;;15696:4;;-1:-1:-1;;;15734:6:0;;;;15733:7;:35;;;;-1:-1:-1;15757:11:0;;-1:-1:-1;;;15757:11:0;;;;15733:35;:93;;;;-1:-1:-1;;15813:13:0;;;15803:4;15785:24;;;;:9;:24;;;;;;;;:41;;;15648:186::o;15846:729::-;5793:6;:13;;-1:-1:-1;;;;5793:13:0;-1:-1:-1;;;5793:13:0;;;;15911:24:::1;15929:4;15911:9;:24::i;:::-;16040:12:::0;;16024:13;;15894:41;;-1:-1:-1;15949:21:0::1;::::0;16024:28:::1;::::0;16040:12;16024:28:::1;:::i;:::-;16002:6;:19:::0;15979:7:::1;:20:::0;:42:::1;::::0;16002:19;15979:42:::1;:::i;:::-;15971:51;::::0;:6;:51:::1;:::i;:::-;:82;;;;:::i;:::-;15949:104:::0;-1:-1:-1;16064:18:0::1;16083:20;15949:104:::0;16083:6;:20:::1;:::i;:::-;16064:39:::0;-1:-1:-1;16114:16:0::1;16131:15;16145:1;16131:13:::0;:15:::1;:::i;:::-;16114:32:::0;-1:-1:-1;16157:19:0::1;16177:22;16114:32:::0;16177:13;:22:::1;:::i;:::-;16157:42:::0;-1:-1:-1;16217:22:0::1;16157:42:::0;16217:10;:22:::1;:::i;:::-;16210:29:::0;-1:-1:-1;16265:21:0::1;16297:25;16210:29:::0;16297:17:::1;:25::i;:::-;16333:14;16348:28;16370:6:::0;16348:21:::1;:28;:::i;:::-;16333:43:::0;-1:-1:-1;16387:13:0::1;16422:6:::0;16402:18:::1;16409:11:::0;16333:43;16402:18:::1;:::i;:::-;16401:27;;;;:::i;:::-;16387:41;;16439:29;16453:8;16462:5;16439:13;:29::i;:::-;16479:20;16500:28;16522:6:::0;16500:21:::1;:28;:::i;:::-;16479:49;;16539:28;16554:12;16539:14;:28::i;:::-;-1:-1:-1::0;;5829:6:0;:14;;-1:-1:-1;;;;5829:14:0;;;-1:-1:-1;;;;;;;15846:729:0:o;14138:344::-;-1:-1:-1;;;;;14236:20:0;;;;;;:12;:20;;;;;;;;14235:21;14227:30;;;;;;14286:13;;14276:6;:23;;14268:32;;;;;;-1:-1:-1;;;;;14315:20:0;;;;;;:12;:20;;;;;;;;14311:101;;14365:13;;14379:4;;14358:20;;:6;:20;:::i;14491:276::-;14613:4;14601:11;;14592:6;:20;;;;:::i;:::-;:25;;;;:::i;:::-;14581:8;:36;;;14632:12;14628:132;;14647:51;14665:6;14672:9;14682:6;14689:8;;14647:17;:51::i;14628:132::-;14716:42;14734:6;14741:9;14751:6;14716:17;:42::i;15048:464::-;15161:17;15188:8;;15181:6;:15;;;;:::i;:::-;-1:-1:-1;;;;;15229:17:0;;;;;;:9;:17;;;;;;15161:35;;-1:-1:-1;15207:47:0;;15222:6;;15229:24;;15247:6;;15229:24;:::i;15207:47::-;15288:4;15294:24;;;;:9;:24;;;;;;15265:64;;15288:4;15294:34;;15319:9;;15294:34;:::i;15265:64::-;-1:-1:-1;;;;;15365:20:0;;;;;;:9;:20;;;;;;15340:56;;15355:9;;15365:30;;15386:9;;15365:30;:::i;15340:56::-;15428:9;-1:-1:-1;;;;;15412:36:0;15421:6;-1:-1:-1;;;;;15412:36:0;;15438:9;15412:36;;;;2400:25:1;;2388:2;2373:18;;2254:177;15412:36:0;;;;;;;;15464:40;;2400:25:1;;;15488:4:0;;-1:-1:-1;;;;;15464:40:0;;;;;2388:2:1;2373:18;15464:40:0;;;;;;;15150:362;15048:464;;;;:::o;17533:369::-;17617:16;;;17631:1;17617:16;;;;;;;;17595:21;;17617:16;;;;;;;;;;-1:-1:-1;17617:16:0;17595:38;;17662:4;17644;17649:1;17644:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17644:23:0;;;:7;;;;;;;;;;:23;;;;17688:6;;:13;;;-1:-1:-1;;;17688:13:0;;;;:6;;;;;:11;;:13;;;;;17644:7;;17688:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17678:4;17683:1;17678:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17678:23:0;;;:7;;;;;;;;;:23;17712:6;;:182;;-1:-1:-1;;;17712:182:0;;:6;;;:57;;:182;;17784:6;;17712;;17821:4;;17848;;17868:15;;17712:182;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17911:341;17993:9;:14;;-1:-1:-1;;;;17993:14:0;-1:-1:-1;;;17993:14:0;;;18018:6;;18160:17;;18018:200;;-1:-1:-1;;;18018:200:0;;18081:4;18018:200;;;14528:34:1;14578:18;;;14571:34;;;-1:-1:-1;14621:18:1;;;14614:34;;;14664:18;;;14657:34;-1:-1:-1;;;;;18160:17:0;;;14707:19:1;;;14700:44;18192:15:0;14760:19:1;;;14753:35;18018:6:0;;;:22;;18048:9;;14462:19:1;;18018:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;18229:9:0;:15;;-1:-1:-1;;;;18229:15:0;;;-1:-1:-1;;;17911:341:0:o;16584:940::-;16695:20;;16673:19;;16649:20;;16673:42;;;:::i;:::-;16773:20;;16751:19;;16649:67;;-1:-1:-1;16727:20:0;;16751:42;;16773:20;16751:42;:::i;:::-;16727:67;-1:-1:-1;16805:16:0;16825:27;16727:67;16825:12;:27;:::i;:::-;16805:48;-1:-1:-1;16867:26:0;16805:48;16896:29;16912:12;16896;:29;:::i;:::-;:42;;;;:::i;:::-;16867:71;-1:-1:-1;16949:26:0;17011:8;16978:29;16994:12;16978;:29;:::i;:::-;:42;;;;:::i;:::-;16949:71;-1:-1:-1;17037:22:0;;17034:235;;17130:17;;17122:74;;17072:21;;-1:-1:-1;;;;;17130:17:0;;17186:5;;17161:18;;17072:21;17122:74;17072:21;17122:74;17161:18;17130:17;17186:5;17122:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17071:125;;;17215:16;17207:59;;;;-1:-1:-1;;;17207:59:0;;15522:2:1;17207:59:0;;;15504:21:1;15561:2;15541:18;;;15534:30;15600:32;15580:18;;;15573:60;15650:18;;17207:59:0;15320:354:1;17207:59:0;17060:209;17034:235;17285:22;;17282:235;;17378:17;;17370:74;;17320:21;;-1:-1:-1;;;;;17378:17:0;;17434:5;;17409:18;;17320:21;17370:74;17320:21;17370:74;17409:18;17378:17;17434:5;17370:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17319:125;;;17463:16;17455:59;;;;-1:-1:-1;;;17455:59:0;;15522:2:1;17455:59:0;;;15504:21:1;15561:2;15541:18;;;15534:30;15600:32;15580:18;;;15573:60;15650:18;;17455:59:0;15320:354:1;17455:59:0;17308:209;16638:886;;;;;16584:940;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;671:70;616:131;:::o;752:315::-;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1264:160::-;1329:20;;1385:13;;1378:21;1368:32;;1358:60;;1414:1;1411;1404:12;1358:60;1264:160;;;:::o;1429:315::-;1494:6;1502;1555:2;1543:9;1534:7;1530:23;1526:32;1523:52;;;1571:1;1568;1561:12;1523:52;1610:9;1597:23;1629:31;1654:5;1629:31;:::i;:::-;1679:5;-1:-1:-1;1703:35:1;1734:2;1719:18;;1703:35;:::i;:::-;1693:45;;1429:315;;;;;:::o;1749:247::-;1808:6;1861:2;1849:9;1840:7;1836:23;1832:32;1829:52;;;1877:1;1874;1867:12;1829:52;1916:9;1903:23;1935:31;1960:5;1935:31;:::i;:::-;1985:5;1749:247;-1:-1:-1;;;1749:247:1:o;2001:248::-;2069:6;2077;2130:2;2118:9;2109:7;2105:23;2101:32;2098:52;;;2146:1;2143;2136:12;2098:52;-1:-1:-1;;2169:23:1;;;2239:2;2224:18;;;2211:32;;-1:-1:-1;2001:248:1:o;2436:461::-;2489:3;2527:5;2521:12;2554:6;2549:3;2542:19;2580:4;2609:2;2604:3;2600:12;2593:19;;2646:2;2639:5;2635:14;2667:1;2677:195;2691:6;2688:1;2685:13;2677:195;;;2756:13;;-1:-1:-1;;;;;2752:39:1;2740:52;;2812:12;;;;2847:15;;;;2788:1;2706:9;2677:195;;;-1:-1:-1;2888:3:1;;2436:461;-1:-1:-1;;;;;2436:461:1:o;2902:261::-;3081:2;3070:9;3063:21;3044:4;3101:56;3153:2;3142:9;3138:18;3130:6;3101:56;:::i;3168:456::-;3245:6;3253;3261;3314:2;3302:9;3293:7;3289:23;3285:32;3282:52;;;3330:1;3327;3320:12;3282:52;3369:9;3356:23;3388:31;3413:5;3388:31;:::i;:::-;3438:5;-1:-1:-1;3495:2:1;3480:18;;3467:32;3508:33;3467:32;3508:33;:::i;:::-;3168:456;;3560:7;;-1:-1:-1;;;3614:2:1;3599:18;;;;3586:32;;3168:456::o;4422:316::-;4499:6;4507;4515;4568:2;4556:9;4547:7;4543:23;4539:32;4536:52;;;4584:1;4581;4574:12;4536:52;-1:-1:-1;;4607:23:1;;;4677:2;4662:18;;4649:32;;-1:-1:-1;4728:2:1;4713:18;;;4700:32;;4422:316;-1:-1:-1;4422:316:1:o;4743:180::-;4802:6;4855:2;4843:9;4834:7;4830:23;4826:32;4823:52;;;4871:1;4868;4861:12;4823:52;-1:-1:-1;4894:23:1;;4743:180;-1:-1:-1;4743:180:1:o;4928:::-;4984:6;5037:2;5025:9;5016:7;5012:23;5008:32;5005:52;;;5053:1;5050;5043:12;5005:52;5076:26;5092:9;5076:26;:::i;5113:248::-;5178:6;5186;5239:2;5227:9;5218:7;5214:23;5210:32;5207:52;;;5255:1;5252;5245:12;5207:52;5278:26;5294:9;5278:26;:::i;5366:127::-;5427:10;5422:3;5418:20;5415:1;5408:31;5458:4;5455:1;5448:15;5482:4;5479:1;5472:15;5498:275;5569:2;5563:9;5634:2;5615:13;;-1:-1:-1;;5611:27:1;5599:40;;5669:18;5654:34;;5690:22;;;5651:62;5648:88;;;5716:18;;:::i;:::-;5752:2;5745:22;5498:275;;-1:-1:-1;5498:275:1:o;5778:183::-;5838:4;5871:18;5863:6;5860:30;5857:56;;;5893:18;;:::i;:::-;-1:-1:-1;5938:1:1;5934:14;5950:4;5930:25;;5778:183::o;5966:662::-;6020:5;6073:3;6066:4;6058:6;6054:17;6050:27;6040:55;;6091:1;6088;6081:12;6040:55;6127:6;6114:20;6153:4;6177:60;6193:43;6233:2;6193:43;:::i;:::-;6177:60;:::i;:::-;6271:15;;;6357:1;6353:10;;;;6341:23;;6337:32;;;6302:12;;;;6381:15;;;6378:35;;;6409:1;6406;6399:12;6378:35;6445:2;6437:6;6433:15;6457:142;6473:6;6468:3;6465:15;6457:142;;;6539:17;;6527:30;;6577:12;;;;6490;;6457:142;;;-1:-1:-1;6617:5:1;5966:662;-1:-1:-1;;;;;;5966:662:1:o;6633:1215::-;6751:6;6759;6812:2;6800:9;6791:7;6787:23;6783:32;6780:52;;;6828:1;6825;6818:12;6780:52;6868:9;6855:23;6897:18;6938:2;6930:6;6927:14;6924:34;;;6954:1;6951;6944:12;6924:34;6992:6;6981:9;6977:22;6967:32;;7037:7;7030:4;7026:2;7022:13;7018:27;7008:55;;7059:1;7056;7049:12;7008:55;7095:2;7082:16;7117:4;7141:60;7157:43;7197:2;7157:43;:::i;7141:60::-;7235:15;;;7317:1;7313:10;;;;7305:19;;7301:28;;;7266:12;;;;7341:19;;;7338:39;;;7373:1;7370;7363:12;7338:39;7397:11;;;;7417:217;7433:6;7428:3;7425:15;7417:217;;;7513:3;7500:17;7530:31;7555:5;7530:31;:::i;:::-;7574:18;;7450:12;;;;7612;;;;7417:217;;;7653:5;-1:-1:-1;;7696:18:1;;7683:32;;-1:-1:-1;;7727:16:1;;;7724:36;;;7756:1;7753;7746:12;7724:36;;7779:63;7834:7;7823:8;7812:9;7808:24;7779:63;:::i;:::-;7769:73;;;6633:1215;;;;;:::o;7853:388::-;7921:6;7929;7982:2;7970:9;7961:7;7957:23;7953:32;7950:52;;;7998:1;7995;7988:12;7950:52;8037:9;8024:23;8056:31;8081:5;8056:31;:::i;:::-;8106:5;-1:-1:-1;8163:2:1;8148:18;;8135:32;8176:33;8135:32;8176:33;:::i;:::-;8228:7;8218:17;;;7853:388;;;;;:::o;8472:346::-;8674:2;8656:21;;;8713:2;8693:18;;;8686:30;-1:-1:-1;;;8747:2:1;8732:18;;8725:52;8809:2;8794:18;;8472:346::o;8823:127::-;8884:10;8879:3;8875:20;8872:1;8865:31;8915:4;8912:1;8905:15;8939:4;8936:1;8929:15;8955:125;8995:4;9023:1;9020;9017:8;9014:34;;;9028:18;;:::i;:::-;-1:-1:-1;9065:9:1;;8955:125::o;9085:217::-;9125:1;9151;9141:132;;9195:10;9190:3;9186:20;9183:1;9176:31;9230:4;9227:1;9220:15;9258:4;9255:1;9248:15;9141:132;-1:-1:-1;9287:9:1;;9085:217::o;9307:168::-;9347:7;9413:1;9409;9405:6;9401:14;9398:1;9395:21;9390:1;9383:9;9376:17;9372:45;9369:71;;;9420:18;;:::i;:::-;-1:-1:-1;9460:9:1;;9307:168::o;9480:128::-;9520:3;9551:1;9547:6;9544:1;9541:13;9538:39;;;9557:18;;:::i;:::-;-1:-1:-1;9593:9:1;;9480:128::o;10036:127::-;10097:10;10092:3;10088:20;10085:1;10078:31;10128:4;10125:1;10118:15;10152:4;10149:1;10142:15;10168:422;10257:1;10300:5;10257:1;10314:270;10335:7;10325:8;10322:21;10314:270;;;10394:4;10390:1;10386:6;10382:17;10376:4;10373:27;10370:53;;;10403:18;;:::i;:::-;10453:7;10443:8;10439:22;10436:55;;;10473:16;;;;10436:55;10552:22;;;;10512:15;;;;10314:270;;;10318:3;10168:422;;;;;:::o;10595:806::-;10644:5;10674:8;10664:80;;-1:-1:-1;10715:1:1;10729:5;;10664:80;10763:4;10753:76;;-1:-1:-1;10800:1:1;10814:5;;10753:76;10845:4;10863:1;10858:59;;;;10931:1;10926:130;;;;10838:218;;10858:59;10888:1;10879:10;;10902:5;;;10926:130;10963:3;10953:8;10950:17;10947:43;;;10970:18;;:::i;:::-;-1:-1:-1;;11026:1:1;11012:16;;11041:5;;10838:218;;11140:2;11130:8;11127:16;11121:3;11115:4;11112:13;11108:36;11102:2;11092:8;11089:16;11084:2;11078:4;11075:12;11071:35;11068:77;11065:159;;;-1:-1:-1;11177:19:1;;;11209:5;;11065:159;11256:34;11281:8;11275:4;11256:34;:::i;:::-;11326:6;11322:1;11318:6;11314:19;11305:7;11302:32;11299:58;;;11337:18;;:::i;:::-;11375:20;;10595:806;-1:-1:-1;;;10595:806:1:o;11406:140::-;11464:5;11493:47;11534:4;11524:8;11520:19;11514:4;11493:47;:::i;11551:135::-;11590:3;-1:-1:-1;;11611:17:1;;11608:43;;;11631:18;;:::i;:::-;-1:-1:-1;11678:1:1;11667:13;;11551:135::o;11691:184::-;11761:6;11814:2;11802:9;11793:7;11789:23;11785:32;11782:52;;;11830:1;11827;11820:12;11782:52;-1:-1:-1;11853:16:1;;11691:184;-1:-1:-1;11691:184:1:o;13344:251::-;13414:6;13467:2;13455:9;13446:7;13442:23;13438:32;13435:52;;;13483:1;13480;13473:12;13435:52;13515:9;13509:16;13534:31;13559:5;13534:31;:::i;13600:582::-;13899:6;13888:9;13881:25;13942:6;13937:2;13926:9;13922:18;13915:34;13985:3;13980:2;13969:9;13965:18;13958:31;13862:4;14006:57;14058:3;14047:9;14043:19;14035:6;14006:57;:::i;:::-;-1:-1:-1;;;;;14099:32:1;;;;14094:2;14079:18;;14072:60;-1:-1:-1;14163:3:1;14148:19;14141:35;13998:65;13600:582;-1:-1:-1;;;13600:582:1:o;14799:306::-;14887:6;14895;14903;14956:2;14944:9;14935:7;14931:23;14927:32;14924:52;;;14972:1;14969;14962:12;14924:52;15001:9;14995:16;14985:26;;15051:2;15040:9;15036:18;15030:25;15020:35;;15095:2;15084:9;15080:18;15074:25;15064:35;;14799:306;;;;;:::o

Swarm Source

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