ETH Price: $2,628.19 (+0.95%)
Gas: 3 Gwei

Token

Bullfrog (BF)
 

Overview

Max Total Supply

100,000,000 BF

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,000,000 BF

Value
$0.00
0xc28c081238c5fcd4c6e12f338b152275f74f5613
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x4528ebA3...69a6AA2f9
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
BULLFROG

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-04-17
*/

/**

         ___      ___
        /   \----/   \
       |-----|  |-----|
       /\_0_/    \_0_/\
     -|      o  o      |-
    /  \______________/  \
    \ \ |   |    |   | / /
     ww ooooo----ooooo ww

*/
 
// 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 BULLFROG 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 = "Bullfrog";
    string constant _symbol = "BF";
    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 = 5; 
        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 = 25; 
        sellFee.marketingFee = 300;

        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 = 5; 
        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 ownerSetInitialDistributionFinished() 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 controlSetAntiSniperModeOn(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":"controlSetAntiSniperModeOn","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":[],"name":"ownerSetInitialDistributionFinished","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":"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"}]

6080604052620000126012600a62000515565b62000022906305f5e1006200052d565b60088190556032601255601b8054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031991821617909155601c8054339083168117909155601d8054909216179055601f805464ff000000ff60a01b19167801000000010000000000000000000000000000000000000000179055620000a7906103e8906200054f565b602055348015620000b757600080fd5b5060008054336001600160a01b031991821617909155601b54601e80546001600160a01b039092169190921681179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014a919062000572565b6001600160a01b031663c9c65396601e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d2919062000572565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af11580156200021f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000245919062000572565b601f80546001600160a01b0319166001600160a01b03928316178155306000908152600760209081526040808320601e5486168452825280832060001990559254909316815260049092528120805460ff191660011790556013819055600560148190556032601581905591620002bd91906200059d565b620002c991906200059d565b601655600060178190556019601881905561012c80825591620002ed91906200059d565b620002f991906200059d565b601a55600a600981905560085462000315906103e8906200054f565b6200032191906200052d565b600c556005600a8190556008546200033d906103e8906200054f565b6200034991906200052d565b600d55600a600b81905560085462000365906103e8906200054f565b6200037191906200052d565b600e553060009081526005602090815260408083208054600160ff19918216811790925584546001600160a01b039081168652838620805490921690921790556008548454821685526006845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620005b8565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004575781600019048211156200043b576200043b62000400565b808516156200044957918102915b93841c93908002906200041b565b509250929050565b60008262000470575060016200050f565b816200047f575060006200050f565b8160018114620004985760028114620004a357620004c3565b60019150506200050f565b60ff841115620004b757620004b762000400565b50506001821b6200050f565b5060208310610133831016604e8410600b8410161715620004e8575081810a6200050f565b620004f4838362000416565b80600019048211156200050b576200050b62000400565b0290505b92915050565b60006200052660ff8416836200045f565b9392505050565b60008160001904831182151516156200054a576200054a62000400565b500290565b6000826200056d57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200058557600080fd5b81516001600160a01b03811681146200052657600080fd5b60008219821115620005b357620005b362000400565b500190565b61257580620005c86000396000f3fe60806040526004361061028c5760003560e01c80636ddd17131161015a578063a8aa1b31116100c1578063dca3cef11161007a578063dca3cef114610817578063dd62ed3e14610837578063e06509971461087d578063e5a772d214610893578063f2fde38b146108b3578063f887ea40146108d357600080fd5b8063a8aa1b3114610761578063a9059cbb14610781578063b45c9053146107a1578063b46ba24b146107c1578063b704a9f6146107e1578063d51ed1c8146107f757600080fd5b80638ca42e4e116101135780638ca42e4e146106965780638ee41ca8146106b657806395d89b41146106d65780639b0ad05c146107015780639be953b314610721578063a5949bcf1461074157600080fd5b80636ddd1713146105d257806370a08231146105f3578063715018a6146106135780637a6d69b41461062857806387cfc49314610658578063893d20e81461067857600080fd5b80632f54bf6e116101fe57806352aae9dd116101b757806352aae9dd1461052657806353cd621014610546578063599ca3971461056757806359d3cac21461057d5780636390aeeb1461059d5780636dc53a0a146105b257600080fd5b80632f54bf6e1461046e578063313ce5671461049d578063364333f4146104b957806347062402146104ce57806347375a37146104f15780634c5d87101461050657600080fd5b806318160ddd1161025057806318160ddd1461037d5780631ca0b1d01461039c57806323b872dd146103be5780632b112e49146103de5780632b14ca56146103f35780632d3b40471461043657600080fd5b806306fdde0314610298578063095ea7b3146102db5780630c5b1d931461030b5780630cb23d861461032d5780631161ae391461035d57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b5060408051808201909152600881526742756c6c66726f6760c01b60208201525b6040516102d29190611eb7565b60405180910390f35b3480156102e757600080fd5b506102fb6102f6366004611f24565b6108f3565b60405190151581526020016102d2565b34801561031757600080fd5b5061032b610326366004611f65565b610960565b005b34801561033957600080fd5b506102fb610348366004611f9a565b60046020526000908152604090205460ff1681565b34801561036957600080fd5b506102fb610378366004611fbe565b6109be565b34801561038957600080fd5b506008545b6040519081526020016102d2565b3480156103a857600080fd5b506103b16109d2565b6040516102d29190612024565b3480156103ca57600080fd5b506102fb6103d9366004612037565b610a34565b3480156103ea57600080fd5b5061038e610afb565b3480156103ff57600080fd5b50601754601854601954601a546104169392919084565b6040805194855260208501939093529183015260608201526080016102d2565b34801561044257600080fd5b50601b54610456906001600160a01b031681565b6040516001600160a01b0390911681526020016102d2565b34801561047a57600080fd5b506102fb610489366004611f9a565b6000546001600160a01b0391821691161490565b3480156104a957600080fd5b50604051601281526020016102d2565b3480156104c557600080fd5b5061032b610b2e565b3480156104da57600080fd5b506013546014546015546016546104169392919084565b3480156104fd57600080fd5b5061032b610b97565b34801561051257600080fd5b5061032b610521366004612078565b610bd6565b34801561053257600080fd5b5061032b6105413660046120a4565b610c71565b34801561055257600080fd5b50601f546102fb90600160a01b900460ff1681565b34801561057357600080fd5b5061038e600b5481565b34801561058957600080fd5b5061032b610598366004612078565b610ca0565b3480156105a957600080fd5b50600f5461038e565b3480156105be57600080fd5b50601c54610456906001600160a01b031681565b3480156105de57600080fd5b50601f546102fb90600160c01b900460ff1681565b3480156105ff57600080fd5b5061038e61060e366004611f9a565b610cf6565b34801561061f57600080fd5b5061032b610d11565b34801561063457600080fd5b506102fb610643366004611f9a565b60026020526000908152604090205460ff1681565b34801561066457600080fd5b5061032b610673366004611f9a565b610d85565b34801561068457600080fd5b506000546001600160a01b0316610456565b3480156106a257600080fd5b5061032b6106b13660046120a4565b610dd0565b3480156106c257600080fd5b5061032b6106d13660046120bd565b610dff565b3480156106e257600080fd5b50604080518082019091526002815261212360f11b60208201526102c5565b34801561070d57600080fd5b5061032b61071c3660046121af565b610e63565b34801561072d57600080fd5b5061032b61073c366004611f9a565b610f82565b34801561074d57600080fd5b50601d54610456906001600160a01b031681565b34801561076d57600080fd5b50601f54610456906001600160a01b031681565b34801561078d57600080fd5b506102fb61079c366004611f24565b611052565b3480156107ad57600080fd5b5061032b6107bc366004612271565b611068565b3480156107cd57600080fd5b5061032b6107dc366004612078565b6110b0565b3480156107ed57600080fd5b5061038e600a5481565b34801561080357600080fd5b5061038e6108123660046120a4565b611106565b34801561082357600080fd5b5061032b61083236600461228c565b611144565b34801561084357600080fd5b5061038e61085236600461228c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561088957600080fd5b5061038e60095481565b34801561089f57600080fd5b5061032b6108ae366004611f9a565b61119c565b3480156108bf57600080fd5b5061032b6108ce366004611f9a565b611202565b3480156108df57600080fd5b50601e54610456906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061094e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146109935760405162461bcd60e51b815260040161098a906122c5565b60405180910390fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000826109ca83611106565b119392505050565b6060600f805480602002602001604051908101604052809291908181526020018280548015610a2a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a0c575b5050505050905090565b6001600160a01b038316600090815260076020908152604080832033845290915281205482811015610a6557600080fd5b6001600160a01b038516600090815260076020908152604080832033845290915290205460001914610ae5576001600160a01b0385166000908152600760209081526040808320338452909152902054610ac090849061230b565b6001600160a01b03861660009081526007602090815260408083203384529091529020555b610af08585856112ec565b506001949350505050565b6000610b076000610cf6565b610b1261dead610cf6565b600854610b1f919061230b565b610b29919061230b565b905090565b6000546001600160a01b03163314610b585760405162461bcd60e51b815260040161098a906122c5565b6000805460405147926001600160a01b039092169183156108fc02918491818181858888f19350505050158015610b93573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610bc15760405162461bcd60e51b815260040161098a906122c5565b601f805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610c005760405162461bcd60e51b815260040161098a906122c5565b60098390556008548390610c17906103e890612322565b610c219190612344565b600c55600a8290556008548290610c3b906103e890612322565b610c459190612344565b600d55600b8190556008548190610c5f906103e890612322565b610c699190612344565b600e55505050565b6000546001600160a01b03163314610c9b5760405162461bcd60e51b815260040161098a906122c5565b601255565b6000546001600160a01b03163314610cca5760405162461bcd60e51b815260040161098a906122c5565b60178390556018829055601981905580610ce48385612363565b610cee9190612363565b601a55505050565b6001600160a01b031660009081526006602052604090205490565b6000546001600160a01b03163314610d3b5760405162461bcd60e51b815260040161098a906122c5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610daf5760405162461bcd60e51b815260040161098a906122c5565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b03163314610dfa5760405162461bcd60e51b815260040161098a906122c5565b601155565b6000546001600160a01b03163314610e295760405162461bcd60e51b815260040161098a906122c5565b601f805460ff60c01b1916600160c01b841515021790556008548190610e52906103e890612322565b610e5c9190612344565b6020555050565b6000546001600160a01b03163314610e8d5760405162461bcd60e51b815260040161098a906122c5565b6064825110610efd5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161098a565b60005b8251811015610f7d576000838281518110610f1d57610f1d61237b565b6020026020010151905060006012600a610f379190612475565b848481518110610f4957610f4961237b565b6020026020010151610f5b9190612344565b9050610f683383836112ec565b50508080610f7590612484565b915050610f00565b505050565b6000546001600160a01b03163314610fac5760405162461bcd60e51b815260040161098a906122c5565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ff3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611017919061249f565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610f7d573d6000803e3d6000fd5b600061105f3384846112ec565b50600192915050565b6000546001600160a01b031633146110925760405162461bcd60e51b815260040161098a906122c5565b601f8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146110da5760405162461bcd60e51b815260040161098a906122c5565b601383905560148290556015819055806110f48385612363565b6110fe9190612363565b601655505050565b6000611110610afb565b601f54611125906001600160a01b0316610cf6565b611130906002612344565b61113a9084612344565b61095a9190612322565b6000546001600160a01b0316331461116e5760405162461bcd60e51b815260040161098a906122c5565b601c80546001600160a01b039384166001600160a01b031991821617909155601d8054929093169116179055565b6000546001600160a01b031633146111c65760405162461bcd60e51b815260040161098a906122c5565b6001600160a01b031660009081526004602090815260408083208054600160ff1991821681179092556005909352922080549091169091179055565b6000546001600160a01b0316331461122c5760405162461bcd60e51b815260040161098a906122c5565b6001600160a01b0381166112915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383161580159061130c57506001600160a01b03821615155b6113505760405162461bcd60e51b815260206004820152601560248201527421b0b73737ba1031329030b2323932b9b99418149760591b604482015260640161098a565b6001600160a01b03808416600081815260046020908152604080832054948716835280832054938352600590915281205460ff938416939283169216806113af57506001600160a01b03851660009081526005602052604090205460ff165b806113c35750601f54600160a81b900460ff165b905080156113db576113d6868686611508565b611500565b601f54600160b81b900460ff166113f157600080fd5b601f54600160a01b900460ff161561140e576113d68686866115ca565b821561141f576113d68686866116c7565b81156114455761142d6117ef565b1561143a5761143a611837565b6113d6868686611932565b6001600160a01b03861660009081526002602052604090205460ff1615801561148757506001600160a01b03851660009081526002602052604090205460ff16155b61149057600080fd5b600e548461149d87610cf6565b6114a79190612363565b11156114f55760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d6974604482015260640161098a565b611500868686611998565b505050505050565b6001600160a01b03831660009081526006602052604090205461154e90849061153290849061230b565b6001600160a01b03909116600090815260066020526040902055565b6001600160a01b038216600090815260066020526040902054611578908390611532908490612363565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115bd91815260200190565b60405180910390a3505050565b6001600160a01b03821660009081526002602052604090205460ff16156115f057600080fd5b600c548111156116365760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b604482015260640161098a565b6064611643826014612344565b61164d9190612322565b60109081556001600160a01b0383166000818152600260205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b031916909117905554610f7d908490849084906119d6565b6001600160a01b03821660009081526002602052604090205460ff16156116ed57600080fd5b600c548111156117335760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b604482015260640161098a565b600e548161174084610cf6565b61174a9190612363565b11156117985760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d6974604482015260640161098a565b6001600160a01b03821660009081526003602052604090205460ff166117db576016546103e8906117c99083612344565b6117d39190612322565b6010556117e1565b60006010555b610f7d8383836010546119d6565b601f54600090600160b01b900460ff161580156118155750601f54600160c01b900460ff165b8015610b29575050602080543060009081526006909252604090912054101590565b601f805460ff60b01b1916600160b01b179055600061185530610cf6565b601654601a5491925060009161186b9190612363565b60135460175461187b9190612363565b6118859084612344565b61188f9190612322565b9050600061189d828461230b565b905060006118ac600284612322565b905060006118ba828561230b565b90506118c68184612363565b9450476118d286611af1565b60006118de824761230b565b90506000876118ed8584612344565b6118f79190612322565b90506119038582611c2a565b600061190f844761230b565b905061191a81611ce6565b5050601f805460ff60b01b1916905550505050505050565b6001600160a01b03831660009081526002602052604090205460ff161561195857600080fd5b600d5481111561196757600080fd5b6001600160a01b03831660009081526003602052604090205460ff166117db57601a546103e8906117c99083612344565b6103e8601154826119a99190612344565b6119b39190612322565b6010819055156119cb57610f7d8383836010546119d6565b610f7d838383611508565b6000601054836119e6919061230b565b6001600160a01b038616600090815260066020526040902054909150611a1390869061153290869061230b565b30600081815260066020526040902054611a339190611532908590612363565b6001600160a01b038416600090815260066020526040902054611a5d908590611532908490612363565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611aa291815260200190565b60405180910390a360405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b2657611b2661237b565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba391906124b8565b81600181518110611bb657611bb661237b565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b815291169063791ac94790611bfc9085906000908690309042906004016124d5565b600060405180830381600087803b158015611c1657600080fd5b505af1158015611500573d6000803e3d6000fd5b601f805460ff60a81b1916600160a81b179055601e54601c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611cad573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cd29190612511565b5050601f805460ff60a81b19169055505050565b601954601554600091611cf891612363565b601854601454919250600091611d0e9190612363565b90506000611d1c8284612363565b9050600081611d2b8587612344565b611d359190612322565b9050600082611d448588612344565b611d4e9190612322565b90508015611e0057601c546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114611da8576040519150601f19603f3d011682016040523d82523d6000602084013e611dad565b606091505b5050905080611dfe5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161098a565b505b811561150057601d546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114611e58576040519150601f19603f3d011682016040523d82523d6000602084013e611e5d565b606091505b5050905080611eae5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161098a565b50505050505050565b600060208083528351808285015260005b81811015611ee457858101830151858201604001528201611ec8565b81811115611ef6576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611f2157600080fd5b50565b60008060408385031215611f3757600080fd5b8235611f4281611f0c565b946020939093013593505050565b80358015158114611f6057600080fd5b919050565b60008060408385031215611f7857600080fd5b8235611f8381611f0c565b9150611f9160208401611f50565b90509250929050565b600060208284031215611fac57600080fd5b8135611fb781611f0c565b9392505050565b60008060408385031215611fd157600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b838110156120195781516001600160a01b031687529582019590820190600101611ff4565b509495945050505050565b602081526000611fb76020830184611fe0565b60008060006060848603121561204c57600080fd5b833561205781611f0c565b9250602084013561206781611f0c565b929592945050506040919091013590565b60008060006060848603121561208d57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156120b657600080fd5b5035919050565b600080604083850312156120d057600080fd5b611f4283611f50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612118576121186120d9565b604052919050565b600067ffffffffffffffff82111561213a5761213a6120d9565b5060051b60200190565b600082601f83011261215557600080fd5b8135602061216a61216583612120565b6120ef565b82815260059290921b8401810191818101908684111561218957600080fd5b8286015b848110156121a4578035835291830191830161218d565b509695505050505050565b600080604083850312156121c257600080fd5b823567ffffffffffffffff808211156121da57600080fd5b818501915085601f8301126121ee57600080fd5b813560206121fe61216583612120565b82815260059290921b8401810191818101908984111561221d57600080fd5b948201945b8386101561224457853561223581611f0c565b82529482019490820190612222565b9650508601359250508082111561225a57600080fd5b5061226785828601612144565b9150509250929050565b60006020828403121561228357600080fd5b611fb782611f50565b6000806040838503121561229f57600080fd5b82356122aa81611f0c565b915060208301356122ba81611f0c565b809150509250929050565b60208082526016908201527510aca7aa9020a922902727aa102a24229027aba722a960511b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008282101561231d5761231d6122f5565b500390565b60008261233f57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561235e5761235e6122f5565b500290565b60008219821115612376576123766122f5565b500190565b634e487b7160e01b600052603260045260246000fd5b600181815b808511156123cc5781600019048211156123b2576123b26122f5565b808516156123bf57918102915b93841c9390800290612396565b509250929050565b6000826123e35750600161095a565b816123f05750600061095a565b816001811461240657600281146124105761242c565b600191505061095a565b60ff841115612421576124216122f5565b50506001821b61095a565b5060208310610133831016604e8410600b841016171561244f575081810a61095a565b6124598383612391565b806000190482111561246d5761246d6122f5565b029392505050565b6000611fb760ff8416836123d4565b6000600019821415612498576124986122f5565b5060010190565b6000602082840312156124b157600080fd5b5051919050565b6000602082840312156124ca57600080fd5b8151611fb781611f0c565b85815284602082015260a0604082015260006124f460a0830186611fe0565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561252657600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122099207c1cf153fa6c5a9b73ad4c998d656a264d64b31cdc8277fcf9ec7c4d479464736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c80636ddd17131161015a578063a8aa1b31116100c1578063dca3cef11161007a578063dca3cef114610817578063dd62ed3e14610837578063e06509971461087d578063e5a772d214610893578063f2fde38b146108b3578063f887ea40146108d357600080fd5b8063a8aa1b3114610761578063a9059cbb14610781578063b45c9053146107a1578063b46ba24b146107c1578063b704a9f6146107e1578063d51ed1c8146107f757600080fd5b80638ca42e4e116101135780638ca42e4e146106965780638ee41ca8146106b657806395d89b41146106d65780639b0ad05c146107015780639be953b314610721578063a5949bcf1461074157600080fd5b80636ddd1713146105d257806370a08231146105f3578063715018a6146106135780637a6d69b41461062857806387cfc49314610658578063893d20e81461067857600080fd5b80632f54bf6e116101fe57806352aae9dd116101b757806352aae9dd1461052657806353cd621014610546578063599ca3971461056757806359d3cac21461057d5780636390aeeb1461059d5780636dc53a0a146105b257600080fd5b80632f54bf6e1461046e578063313ce5671461049d578063364333f4146104b957806347062402146104ce57806347375a37146104f15780634c5d87101461050657600080fd5b806318160ddd1161025057806318160ddd1461037d5780631ca0b1d01461039c57806323b872dd146103be5780632b112e49146103de5780632b14ca56146103f35780632d3b40471461043657600080fd5b806306fdde0314610298578063095ea7b3146102db5780630c5b1d931461030b5780630cb23d861461032d5780631161ae391461035d57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b5060408051808201909152600881526742756c6c66726f6760c01b60208201525b6040516102d29190611eb7565b60405180910390f35b3480156102e757600080fd5b506102fb6102f6366004611f24565b6108f3565b60405190151581526020016102d2565b34801561031757600080fd5b5061032b610326366004611f65565b610960565b005b34801561033957600080fd5b506102fb610348366004611f9a565b60046020526000908152604090205460ff1681565b34801561036957600080fd5b506102fb610378366004611fbe565b6109be565b34801561038957600080fd5b506008545b6040519081526020016102d2565b3480156103a857600080fd5b506103b16109d2565b6040516102d29190612024565b3480156103ca57600080fd5b506102fb6103d9366004612037565b610a34565b3480156103ea57600080fd5b5061038e610afb565b3480156103ff57600080fd5b50601754601854601954601a546104169392919084565b6040805194855260208501939093529183015260608201526080016102d2565b34801561044257600080fd5b50601b54610456906001600160a01b031681565b6040516001600160a01b0390911681526020016102d2565b34801561047a57600080fd5b506102fb610489366004611f9a565b6000546001600160a01b0391821691161490565b3480156104a957600080fd5b50604051601281526020016102d2565b3480156104c557600080fd5b5061032b610b2e565b3480156104da57600080fd5b506013546014546015546016546104169392919084565b3480156104fd57600080fd5b5061032b610b97565b34801561051257600080fd5b5061032b610521366004612078565b610bd6565b34801561053257600080fd5b5061032b6105413660046120a4565b610c71565b34801561055257600080fd5b50601f546102fb90600160a01b900460ff1681565b34801561057357600080fd5b5061038e600b5481565b34801561058957600080fd5b5061032b610598366004612078565b610ca0565b3480156105a957600080fd5b50600f5461038e565b3480156105be57600080fd5b50601c54610456906001600160a01b031681565b3480156105de57600080fd5b50601f546102fb90600160c01b900460ff1681565b3480156105ff57600080fd5b5061038e61060e366004611f9a565b610cf6565b34801561061f57600080fd5b5061032b610d11565b34801561063457600080fd5b506102fb610643366004611f9a565b60026020526000908152604090205460ff1681565b34801561066457600080fd5b5061032b610673366004611f9a565b610d85565b34801561068457600080fd5b506000546001600160a01b0316610456565b3480156106a257600080fd5b5061032b6106b13660046120a4565b610dd0565b3480156106c257600080fd5b5061032b6106d13660046120bd565b610dff565b3480156106e257600080fd5b50604080518082019091526002815261212360f11b60208201526102c5565b34801561070d57600080fd5b5061032b61071c3660046121af565b610e63565b34801561072d57600080fd5b5061032b61073c366004611f9a565b610f82565b34801561074d57600080fd5b50601d54610456906001600160a01b031681565b34801561076d57600080fd5b50601f54610456906001600160a01b031681565b34801561078d57600080fd5b506102fb61079c366004611f24565b611052565b3480156107ad57600080fd5b5061032b6107bc366004612271565b611068565b3480156107cd57600080fd5b5061032b6107dc366004612078565b6110b0565b3480156107ed57600080fd5b5061038e600a5481565b34801561080357600080fd5b5061038e6108123660046120a4565b611106565b34801561082357600080fd5b5061032b61083236600461228c565b611144565b34801561084357600080fd5b5061038e61085236600461228c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561088957600080fd5b5061038e60095481565b34801561089f57600080fd5b5061032b6108ae366004611f9a565b61119c565b3480156108bf57600080fd5b5061032b6108ce366004611f9a565b611202565b3480156108df57600080fd5b50601e54610456906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061094e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146109935760405162461bcd60e51b815260040161098a906122c5565b60405180910390fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000826109ca83611106565b119392505050565b6060600f805480602002602001604051908101604052809291908181526020018280548015610a2a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a0c575b5050505050905090565b6001600160a01b038316600090815260076020908152604080832033845290915281205482811015610a6557600080fd5b6001600160a01b038516600090815260076020908152604080832033845290915290205460001914610ae5576001600160a01b0385166000908152600760209081526040808320338452909152902054610ac090849061230b565b6001600160a01b03861660009081526007602090815260408083203384529091529020555b610af08585856112ec565b506001949350505050565b6000610b076000610cf6565b610b1261dead610cf6565b600854610b1f919061230b565b610b29919061230b565b905090565b6000546001600160a01b03163314610b585760405162461bcd60e51b815260040161098a906122c5565b6000805460405147926001600160a01b039092169183156108fc02918491818181858888f19350505050158015610b93573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610bc15760405162461bcd60e51b815260040161098a906122c5565b601f805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610c005760405162461bcd60e51b815260040161098a906122c5565b60098390556008548390610c17906103e890612322565b610c219190612344565b600c55600a8290556008548290610c3b906103e890612322565b610c459190612344565b600d55600b8190556008548190610c5f906103e890612322565b610c699190612344565b600e55505050565b6000546001600160a01b03163314610c9b5760405162461bcd60e51b815260040161098a906122c5565b601255565b6000546001600160a01b03163314610cca5760405162461bcd60e51b815260040161098a906122c5565b60178390556018829055601981905580610ce48385612363565b610cee9190612363565b601a55505050565b6001600160a01b031660009081526006602052604090205490565b6000546001600160a01b03163314610d3b5760405162461bcd60e51b815260040161098a906122c5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610daf5760405162461bcd60e51b815260040161098a906122c5565b6001600160a01b03166000908152600260205260409020805460ff19169055565b6000546001600160a01b03163314610dfa5760405162461bcd60e51b815260040161098a906122c5565b601155565b6000546001600160a01b03163314610e295760405162461bcd60e51b815260040161098a906122c5565b601f805460ff60c01b1916600160c01b841515021790556008548190610e52906103e890612322565b610e5c9190612344565b6020555050565b6000546001600160a01b03163314610e8d5760405162461bcd60e51b815260040161098a906122c5565b6064825110610efd5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b606482015260840161098a565b60005b8251811015610f7d576000838281518110610f1d57610f1d61237b565b6020026020010151905060006012600a610f379190612475565b848481518110610f4957610f4961237b565b6020026020010151610f5b9190612344565b9050610f683383836112ec565b50508080610f7590612484565b915050610f00565b505050565b6000546001600160a01b03163314610fac5760405162461bcd60e51b815260040161098a906122c5565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610ff3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611017919061249f565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610f7d573d6000803e3d6000fd5b600061105f3384846112ec565b50600192915050565b6000546001600160a01b031633146110925760405162461bcd60e51b815260040161098a906122c5565b601f8054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146110da5760405162461bcd60e51b815260040161098a906122c5565b601383905560148290556015819055806110f48385612363565b6110fe9190612363565b601655505050565b6000611110610afb565b601f54611125906001600160a01b0316610cf6565b611130906002612344565b61113a9084612344565b61095a9190612322565b6000546001600160a01b0316331461116e5760405162461bcd60e51b815260040161098a906122c5565b601c80546001600160a01b039384166001600160a01b031991821617909155601d8054929093169116179055565b6000546001600160a01b031633146111c65760405162461bcd60e51b815260040161098a906122c5565b6001600160a01b031660009081526004602090815260408083208054600160ff1991821681179092556005909352922080549091169091179055565b6000546001600160a01b0316331461122c5760405162461bcd60e51b815260040161098a906122c5565b6001600160a01b0381166112915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383161580159061130c57506001600160a01b03821615155b6113505760405162461bcd60e51b815260206004820152601560248201527421b0b73737ba1031329030b2323932b9b99418149760591b604482015260640161098a565b6001600160a01b03808416600081815260046020908152604080832054948716835280832054938352600590915281205460ff938416939283169216806113af57506001600160a01b03851660009081526005602052604090205460ff165b806113c35750601f54600160a81b900460ff165b905080156113db576113d6868686611508565b611500565b601f54600160b81b900460ff166113f157600080fd5b601f54600160a01b900460ff161561140e576113d68686866115ca565b821561141f576113d68686866116c7565b81156114455761142d6117ef565b1561143a5761143a611837565b6113d6868686611932565b6001600160a01b03861660009081526002602052604090205460ff1615801561148757506001600160a01b03851660009081526002602052604090205460ff16155b61149057600080fd5b600e548461149d87610cf6565b6114a79190612363565b11156114f55760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d6974604482015260640161098a565b611500868686611998565b505050505050565b6001600160a01b03831660009081526006602052604090205461154e90849061153290849061230b565b6001600160a01b03909116600090815260066020526040902055565b6001600160a01b038216600090815260066020526040902054611578908390611532908490612363565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115bd91815260200190565b60405180910390a3505050565b6001600160a01b03821660009081526002602052604090205460ff16156115f057600080fd5b600c548111156116365760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b604482015260640161098a565b6064611643826014612344565b61164d9190612322565b60109081556001600160a01b0383166000818152600260205260408120805460ff19166001908117909155600f805491820181559091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020180546001600160a01b031916909117905554610f7d908490849084906119d6565b6001600160a01b03821660009081526002602052604090205460ff16156116ed57600080fd5b600c548111156117335760405162461bcd60e51b8152602060048201526011602482015270109d5e48195e18d959591cc81b1a5b5a5d607a1b604482015260640161098a565b600e548161174084610cf6565b61174a9190612363565b11156117985760405162461bcd60e51b815260206004820181905260248201527f546f74616c20616d6f756e74206578636565642077616c6c6574206c696d6974604482015260640161098a565b6001600160a01b03821660009081526003602052604090205460ff166117db576016546103e8906117c99083612344565b6117d39190612322565b6010556117e1565b60006010555b610f7d8383836010546119d6565b601f54600090600160b01b900460ff161580156118155750601f54600160c01b900460ff165b8015610b29575050602080543060009081526006909252604090912054101590565b601f805460ff60b01b1916600160b01b179055600061185530610cf6565b601654601a5491925060009161186b9190612363565b60135460175461187b9190612363565b6118859084612344565b61188f9190612322565b9050600061189d828461230b565b905060006118ac600284612322565b905060006118ba828561230b565b90506118c68184612363565b9450476118d286611af1565b60006118de824761230b565b90506000876118ed8584612344565b6118f79190612322565b90506119038582611c2a565b600061190f844761230b565b905061191a81611ce6565b5050601f805460ff60b01b1916905550505050505050565b6001600160a01b03831660009081526002602052604090205460ff161561195857600080fd5b600d5481111561196757600080fd5b6001600160a01b03831660009081526003602052604090205460ff166117db57601a546103e8906117c99083612344565b6103e8601154826119a99190612344565b6119b39190612322565b6010819055156119cb57610f7d8383836010546119d6565b610f7d838383611508565b6000601054836119e6919061230b565b6001600160a01b038616600090815260066020526040902054909150611a1390869061153290869061230b565b30600081815260066020526040902054611a339190611532908590612363565b6001600160a01b038416600090815260066020526040902054611a5d908590611532908490612363565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611aa291815260200190565b60405180910390a360405182815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b2657611b2661237b565b6001600160a01b03928316602091820292909201810191909152601e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba391906124b8565b81600181518110611bb657611bb661237b565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b815291169063791ac94790611bfc9085906000908690309042906004016124d5565b600060405180830381600087803b158015611c1657600080fd5b505af1158015611500573d6000803e3d6000fd5b601f805460ff60a81b1916600160a81b179055601e54601c5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611cad573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cd29190612511565b5050601f805460ff60a81b19169055505050565b601954601554600091611cf891612363565b601854601454919250600091611d0e9190612363565b90506000611d1c8284612363565b9050600081611d2b8587612344565b611d359190612322565b9050600082611d448588612344565b611d4e9190612322565b90508015611e0057601c546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114611da8576040519150601f19603f3d011682016040523d82523d6000602084013e611dad565b606091505b5050905080611dfe5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161098a565b505b811561150057601d546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114611e58576040519150601f19603f3d011682016040523d82523d6000602084013e611e5d565b606091505b5050905080611eae5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161098a565b50505050505050565b600060208083528351808285015260005b81811015611ee457858101830151858201604001528201611ec8565b81811115611ef6576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611f2157600080fd5b50565b60008060408385031215611f3757600080fd5b8235611f4281611f0c565b946020939093013593505050565b80358015158114611f6057600080fd5b919050565b60008060408385031215611f7857600080fd5b8235611f8381611f0c565b9150611f9160208401611f50565b90509250929050565b600060208284031215611fac57600080fd5b8135611fb781611f0c565b9392505050565b60008060408385031215611fd157600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b838110156120195781516001600160a01b031687529582019590820190600101611ff4565b509495945050505050565b602081526000611fb76020830184611fe0565b60008060006060848603121561204c57600080fd5b833561205781611f0c565b9250602084013561206781611f0c565b929592945050506040919091013590565b60008060006060848603121561208d57600080fd5b505081359360208301359350604090920135919050565b6000602082840312156120b657600080fd5b5035919050565b600080604083850312156120d057600080fd5b611f4283611f50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612118576121186120d9565b604052919050565b600067ffffffffffffffff82111561213a5761213a6120d9565b5060051b60200190565b600082601f83011261215557600080fd5b8135602061216a61216583612120565b6120ef565b82815260059290921b8401810191818101908684111561218957600080fd5b8286015b848110156121a4578035835291830191830161218d565b509695505050505050565b600080604083850312156121c257600080fd5b823567ffffffffffffffff808211156121da57600080fd5b818501915085601f8301126121ee57600080fd5b813560206121fe61216583612120565b82815260059290921b8401810191818101908984111561221d57600080fd5b948201945b8386101561224457853561223581611f0c565b82529482019490820190612222565b9650508601359250508082111561225a57600080fd5b5061226785828601612144565b9150509250929050565b60006020828403121561228357600080fd5b611fb782611f50565b6000806040838503121561229f57600080fd5b82356122aa81611f0c565b915060208301356122ba81611f0c565b809150509250929050565b60208082526016908201527510aca7aa9020a922902727aa102a24229027aba722a960511b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008282101561231d5761231d6122f5565b500390565b60008261233f57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561235e5761235e6122f5565b500290565b60008219821115612376576123766122f5565b500190565b634e487b7160e01b600052603260045260246000fd5b600181815b808511156123cc5781600019048211156123b2576123b26122f5565b808516156123bf57918102915b93841c9390800290612396565b509250929050565b6000826123e35750600161095a565b816123f05750600061095a565b816001811461240657600281146124105761242c565b600191505061095a565b60ff841115612421576124216122f5565b50506001821b61095a565b5060208310610133831016604e8410600b841016171561244f575081810a61095a565b6124598383612391565b806000190482111561246d5761246d6122f5565b029392505050565b6000611fb760ff8416836123d4565b6000600019821415612498576124986122f5565b5060010190565b6000602082840312156124b157600080fd5b5051919050565b6000602082840312156124ca57600080fd5b8151611fb781611f0c565b85815284602082015260a0604082015260006124f460a0830186611fe0565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561252657600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122099207c1cf153fa6c5a9b73ad4c998d656a264d64b31cdc8277fcf9ec7c4d479464736f6c634300080a0033

Deployed Bytecode Sourcemap

3731:16392:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18844:80;;;;;;;;;;-1:-1:-1;18916:5:0;;;;;;;;;;;;-1:-1:-1;;;18916:5:0;;;;18844:80;;;;;;;:::i;:::-;;;;;;;;19265:216;;;;;;;;;;-1:-1:-1;19265:216:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;19265:216:0;1072:187:1;8436:130:0;;;;;;;;;;-1:-1:-1;8436:130:0;;;;;:::i;:::-;;:::i;:::-;;3900:54;;;;;;;;;;-1:-1:-1;3900:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12037:150;;;;;;;;;;-1:-1:-1;12037:150:0;;;;;:::i;:::-;;:::i;18574:88::-;;;;;;;;;;-1:-1:-1;18647:12:0;;18574:88;;;2400:25:1;;;2388:2;2373:18;18574:88:0;2254:177:1;11644:99:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19664:456::-;;;;;;;;;;-1:-1:-1;19664:456:0;;;;;:::i;:::-;;:::i;11499:136::-;;;;;;;;;;;;;:::i;5155:22::-;;;;;;;;;;-1:-1:-1;5155: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;5155:22:0;3629:391:1;5211:82:0;;;;;;;;;;-1:-1:-1;5211:82:0;;;;-1:-1:-1;;;;;5211:82:0;;;;;;-1:-1:-1;;;;;4189:32:1;;;4171:51;;4159:2;4144:18;5211:82:0;4025:203:1;1660:103:0;;;;;;;;;;-1:-1:-1;1660:103:0;;;;;:::i;:::-;1715:4;1750:5;-1:-1:-1;;;;;1739:16:0;;;1750:5;;1739:16;;1660:103;18668:80;;;;;;;;;;-1:-1:-1;18668:80:0;;4285:2;4375:36:1;;4363:2;4348:18;18668:80:0;4233:184:1;10992:171:0;;;;;;;;;;;;;:::i;5128:20::-;;;;;;;;;;-1:-1:-1;5128:20:0;;;;;;;;;;;;;;;8307:120;;;;;;;;;;;;;:::i;7787:511::-;;;;;;;;;;-1:-1:-1;7787:511:0;;;;;:::i;:::-;;:::i;8790:111::-;;;;;;;;;;-1:-1:-1;8790:111:0;;;;;:::i;:::-;;:::i;5668:33::-;;;;;;;;;;-1:-1:-1;5668:33:0;;;;-1:-1:-1;;;5668:33:0;;;;;;4486:34;;;;;;;;;;;;;;;;9394:360;;;;;;;;;;-1:-1:-1;9394:360:0;;;;;:::i;:::-;;:::i;11752:103::-;;;;;;;;;;-1:-1:-1;11830:10:0;:17;11752:103;;5468:47;;;;;;;;;;-1:-1:-1;5468:47:0;;;;-1:-1:-1;;;;;5468:47:0;;;5886:30;;;;;;;;;;-1:-1:-1;5886:30:0;;;;-1:-1:-1;;;5886:30:0;;;;;;19014:104;;;;;;;;;;-1:-1:-1;19014:104:0;;;;;:::i;:::-;;:::i;2023:146::-;;;;;;;;;;;;;:::i;3797:44::-;;;;;;;;;;-1:-1:-1;3797:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10600:105;;;;;;;;;;-1:-1:-1;10600:105:0;;;;;:::i;:::-;;:::i;18930:78::-;;;;;;;;;;-1:-1:-1;18982:7:0;19000:5;-1:-1:-1;;;;;19000:5:0;18930:78;;9825:119;;;;;;;;;;-1:-1:-1;9825:119:0;;;;;:::i;:::-;;:::i;8575:206::-;;;;;;;;;;-1:-1:-1;8575:206:0;;;;;:::i;:::-;;:::i;18754:84::-;;;;;;;;;;-1:-1:-1;18828:7:0;;;;;;;;;;;;-1:-1:-1;;;18828:7:0;;;;18754:84;;10139:452;;;;;;;;;;-1:-1:-1;10139:452:0;;;;;:::i;:::-;;:::i;11172:206::-;;;;;;;;;;-1:-1:-1;11172:206:0;;;;;:::i;:::-;;:::i;5522:47::-;;;;;;;;;;-1:-1:-1;5522:47:0;;;;-1:-1:-1;;;;;5522:47:0;;;5610:19;;;;;;;;;;-1:-1:-1;5610:19:0;;;;-1:-1:-1;;;;;5610:19:0;;;19490:165;;;;;;;;;;-1:-1:-1;19490:165:0;;;;;:::i;:::-;;:::i;10875:108::-;;;;;;;;;;-1:-1:-1;10875:108:0;;;;;:::i;:::-;;:::i;8971:352::-;;;;;;;;;;-1:-1:-1;8971:352:0;;;;;:::i;:::-;;:::i;4447:32::-;;;;;;;;;;;;;;;;11864:164;;;;;;;;;;-1:-1:-1;11864:164:0;;;;;:::i;:::-;;:::i;9953:177::-;;;;;;;;;;-1:-1:-1;9953:177:0;;;;;:::i;:::-;;:::i;19124:132::-;;;;;;;;;;-1:-1:-1;19124:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;19226:19:0;;;19208:7;19226:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;19124:132;4409:31;;;;;;;;;;;;;;;;10714:152;;;;;;;;;;-1:-1:-1;10714:152:0;;;;;:::i;:::-;;:::i;1772:242::-;;;;;;;;;;-1:-1:-1;1772:242:0;;;;;:::i;:::-;;:::i;5579:24::-;;;;;;;;;;-1:-1:-1;5579:24:0;;;;-1:-1:-1;;;;;5579:24:0;;;19265:216;19369:10;19340:4;19357:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;19357:32:0;;;;;;;;;;:41;;;19414:37;19340:4;;19357:32;;19414:37;;;;19392:6;2400:25:1;;2388:2;2373:18;;2254:177;19414:37:0;;;;;;;;-1:-1:-1;19469:4:0;19265:216;;;;;:::o;8436:130::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;8529:19:0;;;::::1;;::::0;;;:12:::1;:19;::::0;;;;:29;;-1:-1:-1;;8529:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8436:130::o;12037:150::-;12117:4;12173:6;12141:29;12161:8;12141:19;:29::i;:::-;:38;;12037:150;-1:-1:-1;;;12037:150:0:o;11644:99::-;11690:16;11725:10;11718:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11718:17:0;;;;;;;;;;;;;;;;;;;;;;;11644:99;:::o;19664:456::-;-1:-1:-1;;;;;19800:19:0;;19762:4;19800:19;;;:11;:19;;;;;;;;19820:10;19800:31;;;;;;;;19850:20;;;;19842:29;;;;;;-1:-1:-1;;;;;19889:19:0;;;;;;:11;:19;;;;;;;;19909:10;19889:31;;;;;;;;-1:-1:-1;;19889:52:0;19885:159;;-1:-1:-1;;;;;19992:19:0;;;;;;:11;:19;;;;;;;;20012:10;19992:31;;;;;;;;:40;;20026:6;;19992:40;:::i;:::-;-1:-1:-1;;;;;19958:19:0;;;;;;:11;:19;;;;;;;;19978:10;19958:31;;;;;;;:74;19885:159;20054:36;20064:6;20072:9;20083:6;20054:9;:36::i;:::-;-1:-1:-1;20108:4:0;;19664:456;-1:-1:-1;;;;19664:456:0:o;11499:136::-;11552:7;11612:15;5416:42;11612:9;:15::i;:::-;11594;5335:42;11594:9;:15::i;:::-;11579:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;11572:55;;11499:136;:::o;10992:171::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;11051:26:::1;11120:5:::0;;11112:43:::1;::::0;11080:21:::1;::::0;-1:-1:-1;;;;;11120:5:0;;::::1;::::0;11112:43;::::1;;;::::0;11080:21;;11112:43;11051:26;11112:43;11080:21;11120:5;11112:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11040:123;10992:171::o:0;8307:120::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;8384:28:::1;:35:::0;;-1:-1:-1;;;;8384:35:0::1;-1:-1:-1::0;;;8384:35:0::1;::::0;;8307:120::o;7787:511::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;7926:16:::1;:36:::0;;;7999:12:::1;::::0;7945:17;;7999:18:::1;::::0;8013:4:::1;::::0;7999:18:::1;:::i;:::-;:37;;;;:::i;:::-;7984:12;:52:::0;8049:17:::1;:38:::0;;;8123:12:::1;::::0;8069:18;;8123::::1;::::0;8137:4:::1;::::0;8123:18:::1;:::i;:::-;:38;;;;:::i;:::-;8107:13;:54:::0;8174:19:::1;:41:::0;;;8250:12:::1;::::0;8195:20;;8250:18:::1;::::0;8264:4:::1;::::0;8250:18:::1;:::i;:::-;:40;;;;:::i;:::-;8232:15;:58:::0;-1:-1:-1;;;7787:511:0:o;8790:111::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;8869:15:::1;:24:::0;8790:111::o;9394:360::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;9523:7:::1;:36:::0;;;9570:20;:36;;;9617:20;:36;;;9640:13;9680:43:::1;9593:13:::0;9546;9680:43:::1;:::i;:::-;:66;;;;:::i;:::-;9664:13:::0;:82;-1:-1:-1;;;9394:360:0:o;19014:104::-;-1:-1:-1;;;;;19098:18:0;19080:7;19098:18;;;:9;:18;;;;;;;19014:104::o;2023:146::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;2129:1:::1;2114:5:::0;;2093:39:::1;::::0;-1:-1:-1;;;;;2114:5:0;;::::1;::::0;2093:39:::1;::::0;2129:1;;2093:39:::1;2159:1;2143:18:::0;;-1:-1:-1;;;;;;2143:18:0::1;::::0;;2023:146::o;10600:105::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10669:20:0::1;10692:5;10669:20:::0;;;:12:::1;:20;::::0;;;;:28;;-1:-1:-1;;10669:28:0::1;::::0;;10600:105::o;9825:119::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;9910:11:::1;:26:::0;9825:119::o;8575:206::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;8683:11:::1;:22:::0;;-1:-1:-1;;;;8683:22:0::1;-1:-1:-1::0;;;8683:22:0;::::1;;;;::::0;;8732:12:::1;::::0;8754:19;;8732::::1;::::0;8747:4:::1;::::0;8732:19:::1;:::i;:::-;:41;;;;:::i;:::-;8716:13;:57:::0;-1:-1:-1;;8575:206:0:o;10139:452::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;10288:3:::1;10264:14;:21;:27;10256:94;;;::::0;-1:-1:-1;;;10256:94:0;;9815:2:1;10256: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;;10256:94:0::1;9613:418:1::0;10256:94:0::1;10365:9;10361:223;10384:14;:21;10380:1;:25;10361:223;;;10426:14;10443;10458:1;10443:17;;;;;;;;:::i;:::-;;;;;;;10426:34;;10475:14;4285:2;10506;:13;;;;:::i;:::-;10493:7;10501:1;10493:10;;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;10475:45;;10535:37;10545:10;10557:6;10565;10535:9;:37::i;:::-;10411:173;;10407:3;;;;;:::i;:::-;;;;10361:223;;;;10139:452:::0;;:::o;11172:206::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;11268:38:::1;::::0;-1:-1:-1;;;11268:38:0;;11300:4:::1;11268:38;::::0;::::1;4171:51:1::0;11241:24:0::1;::::0;-1:-1:-1;;;;;11268:23:0;::::1;::::0;::::1;::::0;4144:18:1;;11268:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11325:17;::::0;11317:53:::1;::::0;11241:65;;-1:-1:-1;;;;;;11325:17:0::1;::::0;11317:53;::::1;;;::::0;11241:65;;11325:17:::1;11317:53:::0;11325:17;11317:53;11241:65;11325:17;11317:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;19490:165:::0;19568:4;19585:40;19595:10;19607:9;19618:6;19585:9;:40::i;:::-;-1:-1:-1;19643:4:0;19490:165;;;;:::o;10875:108::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;10953:14:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;10953:22:0::1;-1:-1:-1::0;;;;10953:22:0;;::::1;::::0;;;::::1;::::0;;10875:108::o;8971:352::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;9099:6:::1;:35:::0;;;9145:19;:35;;;9191:19;:35;;;9213:13;9252:41:::1;9167:13:::0;9121;9252:41:::1;:::i;:::-;:63;;;;:::i;:::-;9237:12:::0;:78;-1:-1:-1;;;8971:352:0:o;11864:164::-;11932:7;11997:22;:20;:22::i;:::-;11981:4;;11971:15;;-1:-1:-1;;;;;11981:4:0;11971:9;:15::i;:::-;:21;;11990:1;11971:21;:::i;:::-;11959:34;;:8;:34;:::i;:::-;:61;;;;:::i;9953:177::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;10051:17:::1;:30:::0;;-1:-1:-1;;;;;10051:30:0;;::::1;-1:-1:-1::0;;;;;;10051:30:0;;::::1;;::::0;;;10092:17:::1;:30:::0;;;;;::::1;::::0;::::1;;::::0;;9953:177::o;10714:152::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10787:30:0::1;;::::0;;;:22:::1;:30;::::0;;;;;;;:35;;10818:4:::1;-1:-1:-1::0;;10787:35:0;;::::1;::::0;::::1;::::0;;;10833:12:::1;:20:::0;;;;;:25;;;;::::1;::::0;;::::1;::::0;;10714:152::o;1772:242::-;1715:4;1750:5;-1:-1:-1;;;;;1750:5:0;1602:10;1739:16;1586:54;;;;-1:-1:-1;;;1586:54:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1861:22:0;::::1;1853:73;;;::::0;-1:-1:-1;;;1853:73:0;;12082:2:1;1853: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;;1853:73:0::1;11880:402:1::0;1853:73:0::1;1963:5;::::0;;1942:37:::1;::::0;-1:-1:-1;;;;;1942:37:0;;::::1;::::0;1963:5;::::1;::::0;1942:37:::1;::::0;::::1;1990:5;:16:::0;;-1:-1:-1;;;;;;1990:16:0::1;-1:-1:-1::0;;;;;1990:16:0;;;::::1;::::0;;;::::1;::::0;;1772:242::o;12313:1205::-;-1:-1:-1;;;;;12408:18:0;;;;;;:41;;-1:-1:-1;;;;;;12428:21:0;;;;12408:41;12400:74;;;;-1:-1:-1;;;12400:74:0;;12489:2:1;12400:74:0;;;12471:21:1;12528:2;12508:18;;;12501:30;-1:-1:-1;;;12547:18:1;;;12540:51;12608:18;;12400:74:0;12287:345:1;12400:74:0;-1:-1:-1;;;;;12496:30:0;;;12485:10;12496:30;;;:22;:30;;;;;;;;;12549:33;;;;;;;;;12609:20;;;:12;:20;;;;;;12496:30;;;;;12549:33;;;;12609:20;;:45;;-1:-1:-1;;;;;;12631:23:0;;;;;;:12;:23;;;;;;;;12609:45;:56;;;-1:-1:-1;12656:9:0;;-1:-1:-1;;;12656:9:0;;;;12609:56;12593:72;;12682:10;12679:832;;;12693:42;12711:6;12718:9;12728:6;12693:17;:42::i;:::-;12679:832;;;12761:28;;-1:-1:-1;;;12761:28:0;;;;12753:37;;;;;;12843:14;;-1:-1:-1;;;12843:14:0;;;;12840:660;;;12858:39;12873:6;12880:9;12890:6;12858:14;:39::i;12840:660::-;12947:5;12944:556;;;12953:35;12964:6;12971:9;12981:6;12953:10;:35::i;12944:556::-;13039:6;13036:464;;;13105:16;:14;:16::i;:::-;13101:35;;;13124:10;:8;:10::i;:::-;13154:36;13166:6;13173:9;13183:6;13154:11;:36::i;13036:464::-;-1:-1:-1;;;;;13273:20:0;;;;;;:12;:20;;;;;;;;13272:21;:47;;;;-1:-1:-1;;;;;;13296:23:0;;;;;;:12;:23;;;;;;;;13295:24;13272:47;13264:56;;;;;;13376:15;;13368:6;13347:20;13357:9;13347;:20::i;:::-;:27;;;;:::i;:::-;:44;;13339:89;;;;-1:-1:-1;;;13339:89:0;;12839:2:1;13339:89:0;;;12821:21:1;;;12858:18;;;12851:30;12917:34;12897:18;;;12890:62;12969:18;;13339:89:0;12637:356:1;13339:89:0;13447:37;13460:6;13467:9;13477:6;13447:12;:37::i;:::-;12389:1129;;;12313:1205;;;:::o;15026:263::-;-1:-1:-1;;;;;15143:17:0;;;;;;:9;:17;;;;;;15121:47;;15136:6;;15143:24;;15161:6;;15143:24;:::i;:::-;-1:-1:-1;;;;;15850:18:0;;;;;;;:9;:18;;;;;:31;15771:118;15121:47;-1:-1:-1;;;;;15204:20:0;;;;;;:9;:20;;;;;;15179:53;;15194:9;;15204:27;;15225:6;;15204:27;:::i;15179:53::-;15264:9;-1:-1:-1;;;;;15248:33:0;15257:6;-1:-1:-1;;;;;15248:33:0;;15274:6;15248:33;;;;2400:25:1;;2388:2;2373:18;;2254:177;15248:33:0;;;;;;;;15026:263;;;:::o;13527:378::-;-1:-1:-1;;;;;13628:23:0;;;;;;:12;:23;;;;;;;;13627:24;13619:33;;;;;;13681:12;;13671:6;:22;;13663:52;;;;-1:-1:-1;;;13663:52:0;;13200:2:1;13663:52:0;;;13182:21:1;13239:2;13219:18;;;13212:30;-1:-1:-1;;;13258:18:1;;;13251:47;13315:18;;13663:52:0;12998:341:1;13663:52:0;13747:3;13737:9;:6;13744:2;13737:9;:::i;:::-;:13;;;;:::i;:::-;13726:8;:24;;;-1:-1:-1;;;;;13761:23:0;;;;;;:12;:23;;;;;:28;;-1:-1:-1;;13761:28:0;13785:4;13761:28;;;;;;13800:10;:35;;;;;;;;;;;;;;-1:-1:-1;;;;;;13800:35:0;;;;;;13888:8;13846:51;;13864:6;;13774:9;;13881:6;;13846:17;:51::i;13914:468::-;-1:-1:-1;;;;;14011:23:0;;;;;;:12;:23;;;;;;;;14010:24;14002:33;;;;;;14064:12;;14054:6;:22;;14046:52;;;;-1:-1:-1;;;14046:52:0;;13200:2:1;14046:52:0;;;13182:21:1;13239:2;13219:18;;;13212:30;-1:-1:-1;;;13258:18:1;;;13251:47;13315:18;;14046:52:0;12998:341:1;14046:52:0;14146:15;;14138:6;14117:20;14127:9;14117;:20::i;:::-;:27;;;;:::i;:::-;:44;;14109:89;;;;-1:-1:-1;;;14109:89:0;;12839:2:1;14109:89:0;;;12821:21:1;;;12858:18;;;12851:30;12917:34;12897:18;;;12890:62;12969:18;;14109:89:0;12637:356:1;14109:89:0;-1:-1:-1;;;;;14213:23:0;;;;;;:12;:23;;;;;;;;14209:103;;14266:12;;14279:4;;14259:19;;:6;:19;:::i;:::-;:24;;;;:::i;:::-;14248:8;:35;14209:103;;;14311:1;14300:8;:12;14209:103;14323:51;14341:6;14348:9;14358:6;14365:8;;14323:17;:51::i;15898:186::-;15984:6;;15946:4;;-1:-1:-1;;;15984:6:0;;;;15983:7;:35;;;;-1:-1:-1;16007:11:0;;-1:-1:-1;;;16007:11:0;;;;15983:35;:93;;;;-1:-1:-1;;16063:13:0;;;16053:4;16035:24;;;;:9;:24;;;;;;;;:41;;;15898:186::o;16096:729::-;6015:6;:13;;-1:-1:-1;;;;6015:13:0;-1:-1:-1;;;6015:13:0;;;;16161:24:::1;16179:4;16161:9;:24::i;:::-;16290:12:::0;;16274:13;;16144:41;;-1:-1:-1;16199:21:0::1;::::0;16274:28:::1;::::0;16290:12;16274:28:::1;:::i;:::-;16252:6;:19:::0;16229:7:::1;:20:::0;:42:::1;::::0;16252:19;16229:42:::1;:::i;:::-;16221:51;::::0;:6;:51:::1;:::i;:::-;:82;;;;:::i;:::-;16199:104:::0;-1:-1:-1;16314:18:0::1;16333:20;16199:104:::0;16333:6;:20:::1;:::i;:::-;16314:39:::0;-1:-1:-1;16364:16:0::1;16381:15;16395:1;16381:13:::0;:15:::1;:::i;:::-;16364:32:::0;-1:-1:-1;16407:19:0::1;16427:22;16364:32:::0;16427:13;:22:::1;:::i;:::-;16407:42:::0;-1:-1:-1;16467:22:0::1;16407:42:::0;16467:10;:22:::1;:::i;:::-;16460:29:::0;-1:-1:-1;16515:21:0::1;16547:25;16460:29:::0;16547:17:::1;:25::i;:::-;16583:14;16598:28;16620:6:::0;16598:21:::1;:28;:::i;:::-;16583:43:::0;-1:-1:-1;16637:13:0::1;16672:6:::0;16652:18:::1;16659:11:::0;16583:43;16652:18:::1;:::i;:::-;16651:27;;;;:::i;:::-;16637:41;;16689:29;16703:8;16712:5;16689:13;:29::i;:::-;16729:20;16750:28;16772:6:::0;16750:21:::1;:28;:::i;:::-;16729:49;;16789:28;16804:12;16789:14;:28::i;:::-;-1:-1:-1::0;;6051:6:0;:14;;-1:-1:-1;;;;6051:14:0;;;-1:-1:-1;;;;;;;16096:729:0:o;14388:344::-;-1:-1:-1;;;;;14486:20:0;;;;;;:12;:20;;;;;;;;14485:21;14477:30;;;;;;14536:13;;14526:6;:23;;14518:32;;;;;;-1:-1:-1;;;;;14565:20:0;;;;;;:12;:20;;;;;;;;14561:101;;14615:13;;14629:4;;14608:20;;:6;:20;:::i;14741:276::-;14863:4;14851:11;;14842:6;:20;;;;:::i;:::-;:25;;;;:::i;:::-;14831:8;:36;;;14882:12;14878:132;;14897:51;14915:6;14922:9;14932:6;14939:8;;14897:17;:51::i;14878:132::-;14966:42;14984:6;14991:9;15001:6;14966:17;:42::i;15298:464::-;15411:17;15438:8;;15431:6;:15;;;;:::i;:::-;-1:-1:-1;;;;;15479:17:0;;;;;;:9;:17;;;;;;15411:35;;-1:-1:-1;15457:47:0;;15472:6;;15479:24;;15497:6;;15479:24;:::i;15457:47::-;15538:4;15544:24;;;;:9;:24;;;;;;15515:64;;15538:4;15544:34;;15569:9;;15544:34;:::i;15515:64::-;-1:-1:-1;;;;;15615:20:0;;;;;;:9;:20;;;;;;15590:56;;15605:9;;15615:30;;15636:9;;15615:30;:::i;15590:56::-;15678:9;-1:-1:-1;;;;;15662:36:0;15671:6;-1:-1:-1;;;;;15662:36:0;;15688:9;15662:36;;;;2400:25:1;;2388:2;2373:18;;2254:177;15662:36:0;;;;;;;;15714:40;;2400:25:1;;;15738:4:0;;-1:-1:-1;;;;;15714:40:0;;;;;2388:2:1;2373:18;15714:40:0;;;;;;;15400:362;15298:464;;;;:::o;17783:369::-;17867:16;;;17881:1;17867:16;;;;;;;;17845:21;;17867:16;;;;;;;;;;-1:-1:-1;17867:16:0;17845:38;;17912:4;17894;17899:1;17894:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17894:23:0;;;:7;;;;;;;;;;:23;;;;17938:6;;:13;;;-1:-1:-1;;;17938:13:0;;;;:6;;;;;:11;;:13;;;;;17894:7;;17938:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17928:4;17933:1;17928:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17928:23:0;;;:7;;;;;;;;;:23;17962:6;;:182;;-1:-1:-1;;;17962:182:0;;:6;;;:57;;:182;;18034:6;;17962;;18071:4;;18098;;18118:15;;17962:182;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18161:341;18243:9;:14;;-1:-1:-1;;;;18243:14:0;-1:-1:-1;;;18243:14:0;;;18268:6;;18410:17;;18268:200;;-1:-1:-1;;;18268:200:0;;18331:4;18268:200;;;14528:34:1;14578:18;;;14571:34;;;-1:-1:-1;14621:18:1;;;14614:34;;;14664:18;;;14657:34;-1:-1:-1;;;;;18410:17:0;;;14707:19:1;;;14700:44;18442:15:0;14760:19:1;;;14753:35;18268:6:0;;;:22;;18298:9;;14462:19:1;;18268:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;18479:9:0;:15;;-1:-1:-1;;;;18479:15:0;;;-1:-1:-1;;;18161:341:0:o;16834:940::-;16945:20;;16923:19;;16899:20;;16923:42;;;:::i;:::-;17023:20;;17001:19;;16899:67;;-1:-1:-1;16977:20:0;;17001:42;;17023:20;17001:42;:::i;:::-;16977:67;-1:-1:-1;17055:16:0;17075:27;16977:67;17075:12;:27;:::i;:::-;17055:48;-1:-1:-1;17117:26:0;17055:48;17146:29;17162:12;17146;:29;:::i;:::-;:42;;;;:::i;:::-;17117:71;-1:-1:-1;17199:26:0;17261:8;17228:29;17244:12;17228;:29;:::i;:::-;:42;;;;:::i;:::-;17199:71;-1:-1:-1;17287:22:0;;17284:235;;17380:17;;17372:74;;17322:21;;-1:-1:-1;;;;;17380:17:0;;17436:5;;17411:18;;17322:21;17372:74;17322:21;17372:74;17411:18;17380:17;17436:5;17372:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17321:125;;;17465:16;17457:59;;;;-1:-1:-1;;;17457:59:0;;15522:2:1;17457:59:0;;;15504:21:1;15561:2;15541:18;;;15534:30;15600:32;15580:18;;;15573:60;15650:18;;17457:59:0;15320:354:1;17457:59:0;17310:209;17284:235;17535:22;;17532:235;;17628:17;;17620:74;;17570:21;;-1:-1:-1;;;;;17628:17:0;;17684:5;;17659:18;;17570:21;17620:74;17570:21;17620:74;17659:18;17628:17;17684:5;17620:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17569:125;;;17713:16;17705:59;;;;-1:-1:-1;;;17705:59:0;;15522:2:1;17705:59:0;;;15504:21:1;15561:2;15541:18;;;15534:30;15600:32;15580:18;;;15573:60;15650:18;;17705:59:0;15320:354:1;17705:59:0;17558:209;16888:886;;;;;16834: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:248::-;4993:6;5001;5054:2;5042:9;5033:7;5029:23;5025:32;5022:52;;;5070:1;5067;5060:12;5022:52;5093:26;5109:9;5093:26;:::i;5181:127::-;5242:10;5237:3;5233:20;5230:1;5223:31;5273:4;5270:1;5263:15;5297:4;5294:1;5287:15;5313:275;5384:2;5378:9;5449:2;5430:13;;-1:-1:-1;;5426:27:1;5414:40;;5484:18;5469:34;;5505:22;;;5466:62;5463:88;;;5531:18;;:::i;:::-;5567:2;5560:22;5313:275;;-1:-1:-1;5313:275:1:o;5593:183::-;5653:4;5686:18;5678:6;5675:30;5672:56;;;5708:18;;:::i;:::-;-1:-1:-1;5753:1:1;5749:14;5765:4;5745:25;;5593:183::o;5781:662::-;5835:5;5888:3;5881:4;5873:6;5869:17;5865:27;5855:55;;5906:1;5903;5896:12;5855:55;5942:6;5929:20;5968:4;5992:60;6008:43;6048:2;6008:43;:::i;:::-;5992:60;:::i;:::-;6086:15;;;6172:1;6168:10;;;;6156:23;;6152:32;;;6117:12;;;;6196:15;;;6193:35;;;6224:1;6221;6214:12;6193:35;6260:2;6252:6;6248:15;6272:142;6288:6;6283:3;6280:15;6272:142;;;6354:17;;6342:30;;6392:12;;;;6305;;6272:142;;;-1:-1:-1;6432:5:1;5781:662;-1:-1:-1;;;;;;5781:662:1:o;6448:1215::-;6566:6;6574;6627:2;6615:9;6606:7;6602:23;6598:32;6595:52;;;6643:1;6640;6633:12;6595:52;6683:9;6670:23;6712:18;6753:2;6745:6;6742:14;6739:34;;;6769:1;6766;6759:12;6739:34;6807:6;6796:9;6792:22;6782:32;;6852:7;6845:4;6841:2;6837:13;6833:27;6823:55;;6874:1;6871;6864:12;6823:55;6910:2;6897:16;6932:4;6956:60;6972:43;7012:2;6972:43;:::i;6956:60::-;7050:15;;;7132:1;7128:10;;;;7120:19;;7116:28;;;7081:12;;;;7156:19;;;7153:39;;;7188:1;7185;7178:12;7153:39;7212:11;;;;7232:217;7248:6;7243:3;7240:15;7232:217;;;7328:3;7315:17;7345:31;7370:5;7345:31;:::i;:::-;7389:18;;7265:12;;;;7427;;;;7232:217;;;7468:5;-1:-1:-1;;7511:18:1;;7498:32;;-1:-1:-1;;7542:16:1;;;7539:36;;;7571:1;7568;7561:12;7539:36;;7594:63;7649:7;7638:8;7627:9;7623:24;7594:63;:::i;:::-;7584:73;;;6448:1215;;;;;:::o;7668:180::-;7724:6;7777:2;7765:9;7756:7;7752:23;7748:32;7745:52;;;7793:1;7790;7783:12;7745:52;7816:26;7832:9;7816:26;:::i;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://99207c1cf153fa6c5a9b73ad4c998d656a264d64b31cdc8277fcf9ec7c4d4794
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.