ETH Price: $3,398.92 (-0.56%)
Gas: 22 Gwei

Token

XRP589 (XRP589)
 

Overview

Max Total Supply

58,900 XRP589

Holders

68

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
243.222065310230236081 XRP589

Value
$0.00
0x885e8B36b792AFA0e134cc275FB7Dd0bab1A9802
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
XRP589

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

interface IERC20Metadata is IERC20 {
    
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

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

contract XRP589 is ERC20, Ownable {

    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address public marketingAddress;

    bool public swapEnabled = true;
   
    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;

    uint256 public tokensForMarketing;

    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event UpdatedMaxBuyAmount(uint256 newAmount);
    event UpdatedMaxSellAmount(uint256 newAmount);
    event UpdatedMaxWalletAmount(uint256 newAmount);
    event UpdatedMarketingAddress(address indexed newWallet);
    event MaxTransactionExclusion(address _address, bool excluded);
    event OwnerForcedSwapBack(uint256 timestamp);

  
    event TransferForeignToken(address token, uint256 amount);

    constructor() ERC20("XRP589", "XRP589") {

        address newOwner = msg.sender; // can leave alone if owner is deployer.

        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 58900  * (10**18);

        maxBuyAmount = totalSupply * 1000 / 1000;
        maxSellAmount = totalSupply * 1000 / 1000;
        maxWalletAmount = totalSupply * 1000 / 1000;
        swapTokensAtAmount = totalSupply * 5 / 10000;

        buyMarketingFee = 3;
        buyTotalFees = buyMarketingFee;

        sellMarketingFee = 3;
        sellTotalFees = sellMarketingFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        _excludeFromMaxTransaction(marketingAddress, true);


        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(marketingAddress, true);

        marketingAddress = address(0x1687603c4CCbeE9C166Ac3e36d0810c16EC54883);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}
    
    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max buy amount lower than 0.3%");
        maxBuyAmount = newNum * (10**18);
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }

    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max sell amount lower than 0.3%");
        maxSellAmount = newNum * (10**18);
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
  	    require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
  	    require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
  	    swapTokensAtAmount = newAmount;
  	}

    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        _excludeFromMaxTransaction(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _marketingFee) external onlyOwner {
        buyMarketingFee = _marketingFee;
        buyTotalFees = buyMarketingFee;
        require(buyTotalFees <= 5, "Must keep fees at 5% or less");
    }

    function toggleSwap(bool value) external onlyOwner {
        swapEnabled = value;     
    }

    function updateSellFees(uint256 _marketingFee) external onlyOwner {
        sellMarketingFee = _marketingFee;
        sellTotalFees = sellMarketingFee;
        require(sellTotalFees <= 5, "Must keep fees at 5% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
               
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
                        require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
                }
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        
        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
     
            // on sell
             if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / 100;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / 100;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }

            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

        	amount -= fees;
        }

        super._transfer(from, to, amount);
    }
   
    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarketing;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 20){
            contractBalance = swapTokensAtAmount * 20;
        }

        bool success;
     
        swapTokensForEth(contractBalance);

        tokensForMarketing = 0;
   
        (success,) = address(marketingAddress).call{value: address(this).balance}("");
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function SetMarketingWallet(address _marketingAddress) external onlyOwner {
        require(_marketingAddress != address(0), "_marketingAddress address cannot be 0");
        marketingAddress = payable(_marketingAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }
}

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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"SetMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600c805460ff60a01b1916600160a01b17905534801562000023575f80fd5b5060408051808201825260068082526558525035383960d01b6020808401829052845180860190955291845290830152906003620000628382620007d0565b506004620000718282620007d0565b5050505f62000085620003d860201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f8051602062002fa8833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000128573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014e919062000898565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001c0919062000898565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200020b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000231919062000898565b600a80546001600160a01b0319166001600160a01b039290921691821790556200025d906001620003dc565b600a5462000276906001600160a01b031660016200043e565b690c78f9b3ae6cebd000006103e8620002908282620008db565b6200029c9190620008fb565b6006556103e8620002ae8282620008db565b620002ba9190620008fb565b6007556103e8620002cc8282620008db565b620002d89190620008fb565b600855612710620002eb826005620008db565b620002f79190620008fb565b600b556003600e819055600d8190556010819055600f556200031b836001620003dc565b62000328306001620003dc565b6200033761dead6001620003dc565b600c5462000350906001600160a01b03166001620003dc565b6200035d836001620004a8565b6200036a306001620004a8565b6200037961dead6001620004a8565b600c5462000392906001600160a01b03166001620004a8565b600c80546001600160a01b031916731687603c4ccbee9c166ac3e36d0810c16ec54883179055620003c4838262000554565b620003cf8362000636565b50505062000931565b3390565b6001600160a01b0382165f81815260136020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152601460205260409020805460ff19168215151790556200046d8282620003dc565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b03163314620004f65760405162461bcd60e51b815260206004820181905260248201525f8051602062002f8883398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005ac5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004ed565b8060025f828254620005bf91906200091b565b90915550506001600160a01b0382165f9081526020819052604081208054839290620005ed9084906200091b565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620006805760405162461bcd60e51b815260206004820181905260248201525f8051602062002f888339815191526044820152606401620004ed565b6001600160a01b038116620006e75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620004ed565b6005546040516001600160a01b038084169216905f8051602062002fa8833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200075957607f821691505b6020821081036200077857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007cb575f81815260208120601f850160051c81016020861015620007a65750805b601f850160051c820191505b81811015620007c757828155600101620007b2565b5050505b505050565b81516001600160401b03811115620007ec57620007ec62000730565b6200080481620007fd845462000744565b846200077e565b602080601f8311600181146200083a575f8415620008225750858301515b5f19600386901b1c1916600185901b178555620007c7565b5f85815260208120601f198616915b828110156200086a5788860151825594840194600190910190840162000849565b50858210156200088857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620008a9575f80fd5b81516001600160a01b0381168114620008c0575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620008f557620008f5620008c7565b92915050565b5f826200091657634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620008f557620008f5620008c7565b612649806200093f5f395ff3fe608060405260043610610257575f3560e01c80637bce5a041161013f578063b62496f5116100b3578063dc3f0d0f11610078578063dc3f0d0f146106ce578063dd62ed3e146106ed578063e2f4560514610731578063eba4c33314610746578063f2fde38b14610765578063f5648a4f14610784575f80fd5b8063b62496f51461062e578063c02466681461065c578063c18bc1951461067b578063d257b34f1461069a578063d85ba063146106b9575f80fd5b806395d89b411161010457806395d89b41146105895780639a7a23d61461059d578063a457c2d7146105bc578063a5ece941146105db578063a9059cbb146105fa578063aa4bde2814610619575f80fd5b80637bce5a041461050e5780638366e79a1461052357806388e765ff146105425780638da5cb5b146105575780639213691314610574575f80fd5b806339509351116101d65780636d8aa8f81161019b5780636d8aa8f8146104495780636ddd17131461046857806370a0823114610488578063715018a6146104bc57806371fc4688146104d05780637571336a146104ef575f80fd5b806339509351146103cd578063452ed4f1146103ec57806351f205e41461040b57806366d602ae1461041f5780636a486a8e14610434575f80fd5b80631d5165cf1161021c5780631d5165cf1461033e5780631f3fed8f1461035f57806323b872dd146103745780632be32b6114610393578063313ce567146103b2575f80fd5b806306fdde03146102625780630758d9241461028c578063095ea7b3146102c357806310d5de53146102f257806318160ddd14610320575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b50610276610798565b6040516102839190612253565b60405180910390f35b348015610297575f80fd5b506009546102ab906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b3480156102ce575f80fd5b506102e26102dd3660046122b2565b610828565b6040519015158152602001610283565b3480156102fd575f80fd5b506102e261030c3660046122dc565b60136020525f908152604090205460ff1681565b34801561032b575f80fd5b506002545b604051908152602001610283565b348015610349575f80fd5b5061035d6103583660046122dc565b61083e565b005b34801561036a575f80fd5b5061033060115481565b34801561037f575f80fd5b506102e261038e3660046122fe565b6108f7565b34801561039e575f80fd5b5061035d6103ad36600461233c565b61099f565b3480156103bd575f80fd5b5060405160128152602001610283565b3480156103d8575f80fd5b506102e26103e73660046122b2565b610aac565b3480156103f7575f80fd5b50600a546102ab906001600160a01b031681565b348015610416575f80fd5b5061035d610ae7565b34801561042a575f80fd5b5061033060075481565b34801561043f575f80fd5b50610330600f5481565b348015610454575f80fd5b5061035d610463366004612360565b610bf6565b348015610473575f80fd5b50600c546102e290600160a01b900460ff1681565b348015610493575f80fd5b506103306104a23660046122dc565b6001600160a01b03165f9081526020819052604090205490565b3480156104c7575f80fd5b5061035d610c3e565b3480156104db575f80fd5b5061035d6104ea36600461233c565b610cb1565b3480156104fa575f80fd5b5061035d61050936600461237b565b610d39565b348015610519575f80fd5b50610330600e5481565b34801561052e575f80fd5b506102e261053d3660046123b2565b610e00565b34801561054d575f80fd5b5061033060065481565b348015610562575f80fd5b506005546001600160a01b03166102ab565b34801561057f575f80fd5b5061033060105481565b348015610594575f80fd5b50610276611002565b3480156105a8575f80fd5b5061035d6105b736600461237b565b611011565b3480156105c7575f80fd5b506102e26105d63660046122b2565b611104565b3480156105e6575f80fd5b50600c546102ab906001600160a01b031681565b348015610605575f80fd5b506102e26106143660046122b2565b61119c565b348015610624575f80fd5b5061033060085481565b348015610639575f80fd5b506102e26106483660046122dc565b60146020525f908152604090205460ff1681565b348015610667575f80fd5b5061035d61067636600461237b565b6111a8565b348015610686575f80fd5b5061035d61069536600461233c565b611230565b3480156106a5575f80fd5b5061035d6106b436600461233c565b611339565b3480156106c4575f80fd5b50610330600d5481565b3480156106d9575f80fd5b5061035d6106e836600461233c565b611484565b3480156106f8575f80fd5b506103306107073660046123b2565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561073c575f80fd5b50610330600b5481565b348015610751575f80fd5b5061035d61076036600461233c565b61158b565b348015610770575f80fd5b5061035d61077f3660046122dc565b611610565b34801561078f575f80fd5b5061035d6116fa565b6060600380546107a7906123de565b80601f01602080910402602001604051908101604052809291908181526020018280546107d3906123de565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b5050505050905090565b5f61083433848461176e565b5060015b92915050565b6005546001600160a01b031633146108715760405162461bcd60e51b815260040161086890612416565b60405180910390fd5b6001600160a01b0381166108d55760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152608401610868565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f610903848484611891565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109875760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610868565b610994853385840361176e565b506001949350505050565b6005546001600160a01b031633146109c95760405162461bcd60e51b815260040161086890612416565b670de0b6b3a76400006103e86109de60025490565b6109e990600361245f565b6109f39190612476565b6109fd9190612476565b811015610a5e5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e332560b81b6064820152608401610868565b610a7081670de0b6b3a764000061245f565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610834918590610ae2908690612495565b61176e565b6005546001600160a01b03163314610b115760405162461bcd60e51b815260040161086890612416565b600b54305f908152602081905260409020541015610b99576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610868565b600a805460ff60a01b1916600160a01b179055610bb4611e76565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610c205760405162461bcd60e51b815260040161086890612416565b600c8054911515600160a01b0260ff60a01b19909216919091179055565b6005546001600160a01b03163314610c685760405162461bcd60e51b815260040161086890612416565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610cdb5760405162461bcd60e51b815260040161086890612416565b600e819055600d8190556005811115610d365760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c657373000000006044820152606401610868565b50565b6005546001600160a01b03163314610d635760405162461bcd60e51b815260040161086890612416565b80610dd657600a546001600160a01b0390811690831603610dd65760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610868565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610e2c5760405162461bcd60e51b815260040161086890612416565b6001600160a01b038316610e825760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610868565b306001600160a01b03841603610eda5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610868565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4291906124a8565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610f92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb691906124bf565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6060600480546107a7906123de565b6005546001600160a01b0316331461103b5760405162461bcd60e51b815260040161086890612416565b600a546001600160a01b03908116908316036110bf5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610868565b6110c98282611f29565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156111855760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610868565b611192338585840361176e565b5060019392505050565b5f610834338484611891565b6005546001600160a01b031633146111d25760405162461bcd60e51b815260040161086890612416565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461125a5760405162461bcd60e51b815260040161086890612416565b670de0b6b3a76400006103e861126f60025490565b61127a90600361245f565b6112849190612476565b61128e9190612476565b8110156112f25760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610868565b61130481670de0b6b3a764000061245f565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610aa1565b6005546001600160a01b031633146113635760405162461bcd60e51b815260040161086890612416565b620186a061137060025490565b61137b90600161245f565b6113859190612476565b8110156113f25760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610868565b6103e86113fe60025490565b61140990600561245f565b6114139190612476565b81111561147f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610868565b600b55565b6005546001600160a01b031633146114ae5760405162461bcd60e51b815260040161086890612416565b670de0b6b3a76400006103e86114c360025490565b6114ce90600361245f565b6114d89190612476565b6114e29190612476565b8110156115445760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e332560b01b6064820152608401610868565b61155681670de0b6b3a764000061245f565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610aa1565b6005546001600160a01b031633146115b55760405162461bcd60e51b815260040161086890612416565b6010819055600f8190556005811115610d365760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c657373000000006044820152606401610868565b6005546001600160a01b0316331461163a5760405162461bcd60e51b815260040161086890612416565b6001600160a01b03811661169f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610868565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117245760405162461bcd60e51b815260040161086890612416565b6040515f90339047908381818185875af1925050503d805f8114611763576040519150601f19603f3d011682016040523d82523d5f602084013e611768565b606091505b50505050565b6001600160a01b0383166117d05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610868565b6001600160a01b0382166118315760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610868565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118b75760405162461bcd60e51b8152600401610868906124da565b6001600160a01b0382166118dd5760405162461bcd60e51b81526004016108689061251f565b5f811161192c5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610868565b6005546001600160a01b0384811691161480159061195857506005546001600160a01b03838116911614155b801561196c57506001600160a01b03821615155b801561198357506001600160a01b03821661dead14155b80156119a757506001600160a01b0383165f9081526012602052604090205460ff16155b80156119cb57506001600160a01b0382165f9081526012602052604090205460ff16155b15611c20576001600160a01b0383165f9081526014602052604090205460ff168015611a0f57506001600160a01b0382165f9081526013602052604090205460ff16155b15611aea57600654811115611a775760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610868565b6008546001600160a01b0383165f90815260208190526040902054611a9c9083612495565b1115611ae55760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610868565b611c20565b6001600160a01b0382165f9081526014602052604090205460ff168015611b2957506001600160a01b0383165f9081526013602052604090205460ff16155b15611b9357600754811115611ae55760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610868565b6001600160a01b0382165f9081526013602052604090205460ff16611c20576008546001600160a01b0383165f90815260208190526040902054611bd79083612495565b1115611c205760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610868565b305f90815260208190526040902054600b5481108015908190611c4c5750600c54600160a01b900460ff165b8015611c625750600a54600160a01b900460ff16155b8015611c8657506001600160a01b0385165f9081526014602052604090205460ff16155b8015611caa57506001600160a01b0385165f9081526012602052604090205460ff16155b8015611cce57506001600160a01b0384165f9081526012602052604090205460ff16155b15611cfc57600a805460ff60a01b1916600160a01b179055611cee611e76565b600a805460ff60a01b191690555b6001600160a01b0385165f9081526012602052604090205460019060ff1680611d3c57506001600160a01b0385165f9081526012602052604090205460ff165b15611d4457505f5b5f8115611e62576001600160a01b0386165f9081526014602052604090205460ff168015611d7357505f600f54115b15611dca576064600f5486611d88919061245f565b611d929190612476565b9050600f5460105482611da5919061245f565b611daf9190612476565b60115f828254611dbf9190612495565b90915550611e449050565b6001600160a01b0387165f9081526014602052604090205460ff168015611df257505f600d54115b15611e44576064600d5486611e07919061245f565b611e119190612476565b9050600d54600e5482611e24919061245f565b611e2e9190612476565b60115f828254611e3e9190612495565b90915550505b8015611e5557611e55873083611f56565b611e5f8186612562565b94505b611e6d878787611f56565b50505050505050565b305f90815260208190526040902054601154811580611e93575080155b15611e9c575050565b600b54611eaa90601461245f565b821115611ec257600b54611ebf90601461245f565b91505b5f611ecc836120a9565b5f6011819055600c546040516001600160a01b039091169147919081818185875af1925050503d805f8114611f1c576040519150601f19603f3d011682016040523d82523d5f602084013e611f21565b606091505b505050505050565b6001600160a01b0382165f908152601460205260409020805460ff19168215151790556110c982826121f1565b6001600160a01b038316611f7c5760405162461bcd60e51b8152600401610868906124da565b6001600160a01b038216611fa25760405162461bcd60e51b81526004016108689061251f565b6001600160a01b0383165f90815260208190526040902054818110156120195760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610868565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061204f908490612495565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161209b91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106120dc576120dc612575565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612133573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121579190612589565b8160018151811061216a5761216a612575565b6001600160a01b039283166020918202929092010152600954612190913091168461176e565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906121c89085905f908690309042906004016125a4565b5f604051808303815f87803b1580156121df575f80fd5b505af1158015611f21573d5f803e3d5ffd5b6001600160a01b0382165f81815260136020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f6020808352835180828501525f5b8181101561227e57858101830151858201604001528201612262565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d36575f80fd5b5f80604083850312156122c3575f80fd5b82356122ce8161229e565b946020939093013593505050565b5f602082840312156122ec575f80fd5b81356122f78161229e565b9392505050565b5f805f60608486031215612310575f80fd5b833561231b8161229e565b9250602084013561232b8161229e565b929592945050506040919091013590565b5f6020828403121561234c575f80fd5b5035919050565b8015158114610d36575f80fd5b5f60208284031215612370575f80fd5b81356122f781612353565b5f806040838503121561238c575f80fd5b82356123978161229e565b915060208301356123a781612353565b809150509250929050565b5f80604083850312156123c3575f80fd5b82356123ce8161229e565b915060208301356123a78161229e565b600181811c908216806123f257607f821691505b60208210810361241057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108385761083861244b565b5f8261249057634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108385761083861244b565b5f602082840312156124b8575f80fd5b5051919050565b5f602082840312156124cf575f80fd5b81516122f781612353565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156108385761083861244b565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612599575f80fd5b81516122f78161229e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156125f25784516001600160a01b0316835293830193918301916001016125cd565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220434c807c37ba7058d61c3443f22911946b74b439a872cced491466a7ad4a114964736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x608060405260043610610257575f3560e01c80637bce5a041161013f578063b62496f5116100b3578063dc3f0d0f11610078578063dc3f0d0f146106ce578063dd62ed3e146106ed578063e2f4560514610731578063eba4c33314610746578063f2fde38b14610765578063f5648a4f14610784575f80fd5b8063b62496f51461062e578063c02466681461065c578063c18bc1951461067b578063d257b34f1461069a578063d85ba063146106b9575f80fd5b806395d89b411161010457806395d89b41146105895780639a7a23d61461059d578063a457c2d7146105bc578063a5ece941146105db578063a9059cbb146105fa578063aa4bde2814610619575f80fd5b80637bce5a041461050e5780638366e79a1461052357806388e765ff146105425780638da5cb5b146105575780639213691314610574575f80fd5b806339509351116101d65780636d8aa8f81161019b5780636d8aa8f8146104495780636ddd17131461046857806370a0823114610488578063715018a6146104bc57806371fc4688146104d05780637571336a146104ef575f80fd5b806339509351146103cd578063452ed4f1146103ec57806351f205e41461040b57806366d602ae1461041f5780636a486a8e14610434575f80fd5b80631d5165cf1161021c5780631d5165cf1461033e5780631f3fed8f1461035f57806323b872dd146103745780632be32b6114610393578063313ce567146103b2575f80fd5b806306fdde03146102625780630758d9241461028c578063095ea7b3146102c357806310d5de53146102f257806318160ddd14610320575f80fd5b3661025e57005b5f80fd5b34801561026d575f80fd5b50610276610798565b6040516102839190612253565b60405180910390f35b348015610297575f80fd5b506009546102ab906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b3480156102ce575f80fd5b506102e26102dd3660046122b2565b610828565b6040519015158152602001610283565b3480156102fd575f80fd5b506102e261030c3660046122dc565b60136020525f908152604090205460ff1681565b34801561032b575f80fd5b506002545b604051908152602001610283565b348015610349575f80fd5b5061035d6103583660046122dc565b61083e565b005b34801561036a575f80fd5b5061033060115481565b34801561037f575f80fd5b506102e261038e3660046122fe565b6108f7565b34801561039e575f80fd5b5061035d6103ad36600461233c565b61099f565b3480156103bd575f80fd5b5060405160128152602001610283565b3480156103d8575f80fd5b506102e26103e73660046122b2565b610aac565b3480156103f7575f80fd5b50600a546102ab906001600160a01b031681565b348015610416575f80fd5b5061035d610ae7565b34801561042a575f80fd5b5061033060075481565b34801561043f575f80fd5b50610330600f5481565b348015610454575f80fd5b5061035d610463366004612360565b610bf6565b348015610473575f80fd5b50600c546102e290600160a01b900460ff1681565b348015610493575f80fd5b506103306104a23660046122dc565b6001600160a01b03165f9081526020819052604090205490565b3480156104c7575f80fd5b5061035d610c3e565b3480156104db575f80fd5b5061035d6104ea36600461233c565b610cb1565b3480156104fa575f80fd5b5061035d61050936600461237b565b610d39565b348015610519575f80fd5b50610330600e5481565b34801561052e575f80fd5b506102e261053d3660046123b2565b610e00565b34801561054d575f80fd5b5061033060065481565b348015610562575f80fd5b506005546001600160a01b03166102ab565b34801561057f575f80fd5b5061033060105481565b348015610594575f80fd5b50610276611002565b3480156105a8575f80fd5b5061035d6105b736600461237b565b611011565b3480156105c7575f80fd5b506102e26105d63660046122b2565b611104565b3480156105e6575f80fd5b50600c546102ab906001600160a01b031681565b348015610605575f80fd5b506102e26106143660046122b2565b61119c565b348015610624575f80fd5b5061033060085481565b348015610639575f80fd5b506102e26106483660046122dc565b60146020525f908152604090205460ff1681565b348015610667575f80fd5b5061035d61067636600461237b565b6111a8565b348015610686575f80fd5b5061035d61069536600461233c565b611230565b3480156106a5575f80fd5b5061035d6106b436600461233c565b611339565b3480156106c4575f80fd5b50610330600d5481565b3480156106d9575f80fd5b5061035d6106e836600461233c565b611484565b3480156106f8575f80fd5b506103306107073660046123b2565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561073c575f80fd5b50610330600b5481565b348015610751575f80fd5b5061035d61076036600461233c565b61158b565b348015610770575f80fd5b5061035d61077f3660046122dc565b611610565b34801561078f575f80fd5b5061035d6116fa565b6060600380546107a7906123de565b80601f01602080910402602001604051908101604052809291908181526020018280546107d3906123de565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b5050505050905090565b5f61083433848461176e565b5060015b92915050565b6005546001600160a01b031633146108715760405162461bcd60e51b815260040161086890612416565b60405180910390fd5b6001600160a01b0381166108d55760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152608401610868565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b5f610903848484611891565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109875760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610868565b610994853385840361176e565b506001949350505050565b6005546001600160a01b031633146109c95760405162461bcd60e51b815260040161086890612416565b670de0b6b3a76400006103e86109de60025490565b6109e990600361245f565b6109f39190612476565b6109fd9190612476565b811015610a5e5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e332560b81b6064820152608401610868565b610a7081670de0b6b3a764000061245f565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610834918590610ae2908690612495565b61176e565b6005546001600160a01b03163314610b115760405162461bcd60e51b815260040161086890612416565b600b54305f908152602081905260409020541015610b99576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610868565b600a805460ff60a01b1916600160a01b179055610bb4611e76565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b03163314610c205760405162461bcd60e51b815260040161086890612416565b600c8054911515600160a01b0260ff60a01b19909216919091179055565b6005546001600160a01b03163314610c685760405162461bcd60e51b815260040161086890612416565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610cdb5760405162461bcd60e51b815260040161086890612416565b600e819055600d8190556005811115610d365760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c657373000000006044820152606401610868565b50565b6005546001600160a01b03163314610d635760405162461bcd60e51b815260040161086890612416565b80610dd657600a546001600160a01b0390811690831603610dd65760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610868565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610e2c5760405162461bcd60e51b815260040161086890612416565b6001600160a01b038316610e825760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610868565b306001600160a01b03841603610eda5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610868565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610f1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f4291906124a8565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610f92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb691906124bf565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6060600480546107a7906123de565b6005546001600160a01b0316331461103b5760405162461bcd60e51b815260040161086890612416565b600a546001600160a01b03908116908316036110bf5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610868565b6110c98282611f29565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156111855760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610868565b611192338585840361176e565b5060019392505050565b5f610834338484611891565b6005546001600160a01b031633146111d25760405162461bcd60e51b815260040161086890612416565b6001600160a01b0382165f81815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461125a5760405162461bcd60e51b815260040161086890612416565b670de0b6b3a76400006103e861126f60025490565b61127a90600361245f565b6112849190612476565b61128e9190612476565b8110156112f25760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610868565b61130481670de0b6b3a764000061245f565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610aa1565b6005546001600160a01b031633146113635760405162461bcd60e51b815260040161086890612416565b620186a061137060025490565b61137b90600161245f565b6113859190612476565b8110156113f25760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610868565b6103e86113fe60025490565b61140990600561245f565b6114139190612476565b81111561147f5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610868565b600b55565b6005546001600160a01b031633146114ae5760405162461bcd60e51b815260040161086890612416565b670de0b6b3a76400006103e86114c360025490565b6114ce90600361245f565b6114d89190612476565b6114e29190612476565b8110156115445760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e332560b01b6064820152608401610868565b61155681670de0b6b3a764000061245f565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610aa1565b6005546001600160a01b031633146115b55760405162461bcd60e51b815260040161086890612416565b6010819055600f8190556005811115610d365760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203525206f72206c657373000000006044820152606401610868565b6005546001600160a01b0316331461163a5760405162461bcd60e51b815260040161086890612416565b6001600160a01b03811661169f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610868565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146117245760405162461bcd60e51b815260040161086890612416565b6040515f90339047908381818185875af1925050503d805f8114611763576040519150601f19603f3d011682016040523d82523d5f602084013e611768565b606091505b50505050565b6001600160a01b0383166117d05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610868565b6001600160a01b0382166118315760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610868565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166118b75760405162461bcd60e51b8152600401610868906124da565b6001600160a01b0382166118dd5760405162461bcd60e51b81526004016108689061251f565b5f811161192c5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610868565b6005546001600160a01b0384811691161480159061195857506005546001600160a01b03838116911614155b801561196c57506001600160a01b03821615155b801561198357506001600160a01b03821661dead14155b80156119a757506001600160a01b0383165f9081526012602052604090205460ff16155b80156119cb57506001600160a01b0382165f9081526012602052604090205460ff16155b15611c20576001600160a01b0383165f9081526014602052604090205460ff168015611a0f57506001600160a01b0382165f9081526013602052604090205460ff16155b15611aea57600654811115611a775760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610868565b6008546001600160a01b0383165f90815260208190526040902054611a9c9083612495565b1115611ae55760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610868565b611c20565b6001600160a01b0382165f9081526014602052604090205460ff168015611b2957506001600160a01b0383165f9081526013602052604090205460ff16155b15611b9357600754811115611ae55760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610868565b6001600160a01b0382165f9081526013602052604090205460ff16611c20576008546001600160a01b0383165f90815260208190526040902054611bd79083612495565b1115611c205760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610868565b305f90815260208190526040902054600b5481108015908190611c4c5750600c54600160a01b900460ff165b8015611c625750600a54600160a01b900460ff16155b8015611c8657506001600160a01b0385165f9081526014602052604090205460ff16155b8015611caa57506001600160a01b0385165f9081526012602052604090205460ff16155b8015611cce57506001600160a01b0384165f9081526012602052604090205460ff16155b15611cfc57600a805460ff60a01b1916600160a01b179055611cee611e76565b600a805460ff60a01b191690555b6001600160a01b0385165f9081526012602052604090205460019060ff1680611d3c57506001600160a01b0385165f9081526012602052604090205460ff165b15611d4457505f5b5f8115611e62576001600160a01b0386165f9081526014602052604090205460ff168015611d7357505f600f54115b15611dca576064600f5486611d88919061245f565b611d929190612476565b9050600f5460105482611da5919061245f565b611daf9190612476565b60115f828254611dbf9190612495565b90915550611e449050565b6001600160a01b0387165f9081526014602052604090205460ff168015611df257505f600d54115b15611e44576064600d5486611e07919061245f565b611e119190612476565b9050600d54600e5482611e24919061245f565b611e2e9190612476565b60115f828254611e3e9190612495565b90915550505b8015611e5557611e55873083611f56565b611e5f8186612562565b94505b611e6d878787611f56565b50505050505050565b305f90815260208190526040902054601154811580611e93575080155b15611e9c575050565b600b54611eaa90601461245f565b821115611ec257600b54611ebf90601461245f565b91505b5f611ecc836120a9565b5f6011819055600c546040516001600160a01b039091169147919081818185875af1925050503d805f8114611f1c576040519150601f19603f3d011682016040523d82523d5f602084013e611f21565b606091505b505050505050565b6001600160a01b0382165f908152601460205260409020805460ff19168215151790556110c982826121f1565b6001600160a01b038316611f7c5760405162461bcd60e51b8152600401610868906124da565b6001600160a01b038216611fa25760405162461bcd60e51b81526004016108689061251f565b6001600160a01b0383165f90815260208190526040902054818110156120195760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610868565b6001600160a01b038085165f9081526020819052604080822085850390559185168152908120805484929061204f908490612495565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161209b91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106120dc576120dc612575565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612133573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121579190612589565b8160018151811061216a5761216a612575565b6001600160a01b039283166020918202929092010152600954612190913091168461176e565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906121c89085905f908690309042906004016125a4565b5f604051808303815f87803b1580156121df575f80fd5b505af1158015611f21573d5f803e3d5ffd5b6001600160a01b0382165f81815260136020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b5f6020808352835180828501525f5b8181101561227e57858101830151858201604001528201612262565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610d36575f80fd5b5f80604083850312156122c3575f80fd5b82356122ce8161229e565b946020939093013593505050565b5f602082840312156122ec575f80fd5b81356122f78161229e565b9392505050565b5f805f60608486031215612310575f80fd5b833561231b8161229e565b9250602084013561232b8161229e565b929592945050506040919091013590565b5f6020828403121561234c575f80fd5b5035919050565b8015158114610d36575f80fd5b5f60208284031215612370575f80fd5b81356122f781612353565b5f806040838503121561238c575f80fd5b82356123978161229e565b915060208301356123a781612353565b809150509250929050565b5f80604083850312156123c3575f80fd5b82356123ce8161229e565b915060208301356123a78161229e565b600181811c908216806123f257607f821691505b60208210810361241057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108385761083861244b565b5f8261249057634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108385761083861244b565b5f602082840312156124b8575f80fd5b5051919050565b5f602082840312156124cf575f80fd5b81516122f781612353565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156108385761083861244b565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612599575f80fd5b81516122f78161229e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156125f25784516001600160a01b0316835293830193918301916001016125cd565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220434c807c37ba7058d61c3443f22911946b74b439a872cced491466a7ad4a114964736f6c63430008140033

Deployed Bytecode Sourcemap

7343:11340:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1790:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7494:27;;;;;;;;;;-1:-1:-1;7494:27:0;;;;-1:-1:-1;;;;;7494:27:0;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;7494:27:0;567:221:1;2704:169:0;;;;;;;;;;-1:-1:-1;2704:169:0;;;;;:::i;:::-;;:::i;:::-;;;1414:14:1;;1407:22;1389:41;;1377:2;1362:18;2704:169:0;1249:187:1;8041:64:0;;;;;;;;;;-1:-1:-1;8041:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2111:108;;;;;;;;;;-1:-1:-1;2199:12:0;;2111:108;;;1839:25:1;;;1827:2;1812:18;2111:108:0;1693:177:1;18086:230:0;;;;;;;;;;-1:-1:-1;18086:230:0;;;;;:::i;:::-;;:::i;:::-;;7858:33;;;;;;;;;;;;;;;;2881:492;;;;;;;;;;-1:-1:-1;2881:492:0;;;;;:::i;:::-;;:::i;10462:269::-;;;;;;;;;;-1:-1:-1;10462:269:0;;;;;:::i;:::-;;:::i;2010:93::-;;;;;;;;;;-1:-1:-1;2010:93:0;;2093:2;2663:36:1;;2651:2;2636:18;2010:93:0;2521:184:1;3381:215:0;;;;;;;;;;-1:-1:-1;3381:215:0;;;;;:::i;:::-;;:::i;7528:21::-;;;;;;;;;;-1:-1:-1;7528:21:0;;;;-1:-1:-1;;;;;7528:21:0;;;18368:312;;;;;;;;;;;;;:::i;7420:28::-;;;;;;;;;;;;;;;;7783;;;;;;;;;;;;;;;;12992:94;;;;;;;;;;-1:-1:-1;12992:94:0;;;;;:::i;:::-;;:::i;7668:30::-;;;;;;;;;;-1:-1:-1;7668:30:0;;;;-1:-1:-1;;;7668:30:0;;;;;;2227:127;;;;;;;;;;-1:-1:-1;2227:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2328:18:0;2301:7;2328:18;;;;;;;;;;;;2227:127;5867:150;;;;;;;;;;;;;:::i;12759:225::-;;;;;;;;;;-1:-1:-1;12759:225:0;;;;;:::i;:::-;;:::i;11944:260::-;;;;;;;;;;-1:-1:-1;11944:260:0;;;;;:::i;:::-;;:::i;7744:30::-;;;;;;;;;;;;;;;;17392:456;;;;;;;;;;-1:-1:-1;17392:456:0;;;;;:::i;:::-;;:::i;7386:27::-;;;;;;;;;;;;;;;;5653:79;;;;;;;;;;-1:-1:-1;5718:6:0;;-1:-1:-1;;;;;5718:6:0;5653:79;;7818:31;;;;;;;;;;;;;;;;1898:104;;;;;;;;;;;;;:::i;12212:295::-;;;;;;;;;;-1:-1:-1;12212:295:0;;;;;:::i;:::-;;:::i;3604:413::-;;;;;;;;;;-1:-1:-1;3604:413:0;;;;;:::i;:::-;;:::i;7628:31::-;;;;;;;;;;-1:-1:-1;7628:31:0;;;;-1:-1:-1;;;;;7628:31:0;;;2362:175;;;;;;;;;;-1:-1:-1;2362:175:0;;;;;:::i;:::-;;:::i;7455:30::-;;;;;;;;;;;;;;;;8263:58;;;;;;;;;;-1:-1:-1;8263:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13332:182;;;;;;;;;;-1:-1:-1;13332:182:0;;;;;:::i;:::-;;:::i;11021:284::-;;;;;;;;;;-1:-1:-1;11021:284:0;;;;;:::i;:::-;;:::i;11375:346::-;;;;;;;;;;-1:-1:-1;11375:346:0;;;;;:::i;:::-;;:::i;7710:27::-;;;;;;;;;;;;;;;;10739:274;;;;;;;;;;-1:-1:-1;10739:274:0;;;;;:::i;:::-;;:::i;2545:151::-;;;;;;;;;;-1:-1:-1;2545:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2661:18:0;;;2634:7;2661:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2545:151;7586:33;;;;;;;;;;;;;;;;13094:230;;;;;;;;;;-1:-1:-1;13094:230:0;;;;;:::i;:::-;;:::i;6025:244::-;;;;;;;;;;-1:-1:-1;6025:244:0;;;;;:::i;:::-;;:::i;17918:160::-;;;;;;;;;;;;;:::i;1790:100::-;1844:13;1877:5;1870:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1790:100;:::o;2704:169::-;2787:4;2804:39;173:10;2827:7;2836:6;2804:8;:39::i;:::-;-1:-1:-1;2861:4:0;2704:169;;;;;:::o;18086:230::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;18179:31:0;::::1;18171:81;;;::::0;-1:-1:-1;;;18171:81:0;;5015:2:1;18171:81:0::1;::::0;::::1;4997:21:1::0;5054:2;5034:18;;;5027:30;5093:34;5073:18;;;5066:62;-1:-1:-1;;;5144:18:1;;;5137:35;5189:19;;18171:81:0::1;4813:401:1::0;18171:81:0::1;18263:16;:45:::0;;-1:-1:-1;;;;;;18263:45:0::1;-1:-1:-1::0;;;;;18263:45:0;;;::::1;::::0;;;::::1;::::0;;18086:230::o;2881:492::-;3021:4;3038:36;3048:6;3056:9;3067:6;3038:9;:36::i;:::-;-1:-1:-1;;;;;3114:19:0;;3087:24;3114:19;;;:11;:19;;;;;;;;173:10;3114:33;;;;;;;;3166:26;;;;3158:79;;;;-1:-1:-1;;;3158:79:0;;5421:2:1;3158:79:0;;;5403:21:1;5460:2;5440:18;;;5433:30;5499:34;5479:18;;;5472:62;-1:-1:-1;;;5550:18:1;;;5543:38;5598:19;;3158:79:0;5219:404:1;3158:79:0;3273:57;3282:6;173:10;3323:6;3304:16;:25;3273:8;:57::i;:::-;-1:-1:-1;3361:4:0;;2881:492;-1:-1:-1;;;;2881:492:0:o;10462:269::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;10581:4:::1;10575;10555:13;2199:12:::0;;;2111:108;10555:13:::1;:17;::::0;10571:1:::1;10555:17;:::i;:::-;:24;;;;:::i;:::-;10554:31;;;;:::i;:::-;10544:6;:41;;10536:95;;;::::0;-1:-1:-1;;;10536:95:0;;6357:2:1;10536:95:0::1;::::0;::::1;6339:21:1::0;6396:2;6376:18;;;6369:30;6435:34;6415:18;;;6408:62;-1:-1:-1;;;6486:18:1;;;6479:39;6535:19;;10536:95:0::1;6155:405:1::0;10536:95:0::1;10657:17;:6:::0;10667::::1;10657:17;:::i;:::-;10642:12;:32:::0;;;10690:33:::1;::::0;1839:25:1;;;10690:33:0::1;::::0;1827:2:1;1812:18;10690:33:0::1;;;;;;;;10462:269:::0;:::o;3381:215::-;173:10;3469:4;3518:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3518:34:0;;;;;;;;;;3469:4;;3486:80;;3509:7;;3518:47;;3555:10;;3518:47;:::i;:::-;3486:8;:80::i;18368:312::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;18459:18:::1;::::0;18449:4:::1;2301:7:::0;2328:18;;;;;;;;;;;18431:46:::1;;18423:123;;;::::0;;-1:-1:-1;;;18423:123:0;;6897:2:1;18423:123:0::1;::::0;::::1;6879:21:1::0;6916:18;;;6909:30;;;;6975:34;6955:18;;;6948:62;7046:34;7026:18;;;7019:62;7098:19;;18423:123:0::1;6695:428:1::0;18423:123:0::1;18557:8;:15:::0;;-1:-1:-1;;;;18557:15:0::1;-1:-1:-1::0;;;18557:15:0::1;::::0;;18583:10:::1;:8;:10::i;:::-;18604:8;:16:::0;;-1:-1:-1;;;;18604:16:0::1;::::0;;18636:36:::1;::::0;18656:15:::1;1839:25:1::0;;18636:36:0::1;::::0;1827:2:1;1812:18;18636:36:0::1;;;;;;;18368:312::o:0;12992:94::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;13054:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;13054:19:0::1;-1:-1:-1::0;;;;13054:19:0;;::::1;::::0;;;::::1;::::0;;12992:94::o;5867:150::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;5960:6:::1;::::0;5939:40:::1;::::0;5976:1:::1;::::0;-1:-1:-1;;;;;5960:6:0::1;::::0;5939:40:::1;::::0;5976:1;;5939:40:::1;5990:6;:19:::0;;-1:-1:-1;;;;;;5990:19:0::1;::::0;;5867:150::o;12759:225::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;12835:15:::1;:31:::0;;;12877:12:::1;:30:::0;;;12942:1:::1;12926:17:::0;::::1;;12918:58;;;::::0;-1:-1:-1;;;12918:58:0;;7330:2:1;12918:58:0::1;::::0;::::1;7312:21:1::0;7369:2;7349:18;;;7342:30;7408;7388:18;;;7381:58;7456:18;;12918:58:0::1;7128:352:1::0;12918:58:0::1;12759:225:::0;:::o;11944:260::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;12040:4:::1;12036:104;;12078:6;::::0;-1:-1:-1;;;;;12078:6:0;;::::1;12068:16:::0;;::::1;::::0;12060:68:::1;;;::::0;-1:-1:-1;;;12060:68:0;;7687:2:1;12060:68:0::1;::::0;::::1;7669:21:1::0;7726:2;7706:18;;;7699:30;7765:34;7745:18;;;7738:62;-1:-1:-1;;;7816:18:1;;;7809:37;7863:19;;12060:68:0::1;7485:403:1::0;12060:68:0::1;-1:-1:-1::0;;;;;12150:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;12150:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11944:260::o;17392:456::-;5780:6;;17479:10;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17510:20:0;::::1;17502:59;;;::::0;-1:-1:-1;;;17502:59:0;;8095:2:1;17502:59:0::1;::::0;::::1;8077:21:1::0;8134:2;8114:18;;;8107:30;8173:28;8153:18;;;8146:56;8219:18;;17502:59:0::1;7893:350:1::0;17502:59:0::1;17598:4;-1:-1:-1::0;;;;;17580:23:0;::::1;::::0;17572:64:::1;;;::::0;-1:-1:-1;;;17572:64:0;;8450:2:1;17572:64:0::1;::::0;::::1;8432:21:1::0;8489:2;8469:18;;;8462:30;8528;8508:18;;;8501:58;8576:18;;17572:64:0::1;8248:352:1::0;17572:64:0::1;17674:39;::::0;-1:-1:-1;;;17674:39:0;;17707:4:::1;17674:39;::::0;::::1;731:51:1::0;17647:24:0::1;::::0;-1:-1:-1;;;;;17674:24:0;::::1;::::0;::::1;::::0;704:18:1;;17674:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17732:46;::::0;-1:-1:-1;;;17732:46:0;;-1:-1:-1;;;;;8986:32:1;;;17732:46:0::1;::::0;::::1;8968:51:1::0;9035:18;;;9028:34;;;17647:66:0;;-1:-1:-1;17732:23:0;;::::1;::::0;::::1;::::0;8941:18:1;;17732:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17794;::::0;;-1:-1:-1;;;;;8986:32:1;;8968:51;;9050:2;9035:18;;9028:34;;;17724:54:0;;-1:-1:-1;17794:46:0::1;::::0;8941:18:1;17794:46:0::1;;;;;;;17491:357;17392:456:::0;;;;:::o;1898:104::-;1954:13;1987:7;1980:14;;;;;:::i;12212:295::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;12321:6:::1;::::0;-1:-1:-1;;;;;12321:6:0;;::::1;12313:14:::0;;::::1;::::0;12305:84:::1;;;::::0;-1:-1:-1;;;12305:84:0;;9525:2:1;12305:84:0::1;::::0;::::1;9507:21:1::0;9564:2;9544:18;;;9537:30;9603:34;9583:18;;;9576:62;9674:27;9654:18;;;9647:55;9719:19;;12305:84:0::1;9323:421:1::0;12305:84:0::1;12402:41;12431:4;12437:5;12402:28;:41::i;:::-;12459:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;12459:40:0;::::1;::::0;::::1;::::0;;;::::1;12212:295:::0;;:::o;3604:413::-;173:10;3697:4;3741:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3741:34:0;;;;;;;;;;3794:35;;;;3786:85;;;;-1:-1:-1;;;3786:85:0;;9951:2:1;3786:85:0;;;9933:21:1;9990:2;9970:18;;;9963:30;10029:34;10009:18;;;10002:62;-1:-1:-1;;;10080:18:1;;;10073:35;10125:19;;3786:85:0;9749:401:1;3786:85:0;3907:67;173:10;3930:7;3958:15;3939:16;:34;3907:8;:67::i;:::-;-1:-1:-1;4005:4:0;;3604:413;-1:-1:-1;;;3604:413:0:o;2362:175::-;2448:4;2465:42;173:10;2489:9;2500:6;2465:9;:42::i;13332:182::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13417:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;13417:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;13472:34;;1389:41:1;;;13472:34:0::1;::::0;1362:18:1;13472:34:0::1;;;;;;;13332:182:::0;;:::o;11021:284::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;11143:4:::1;11137;11117:13;2199:12:::0;;;2111:108;11117:13:::1;:17;::::0;11133:1:::1;11117:17;:::i;:::-;:24;;;;:::i;:::-;11116:31;;;;:::i;:::-;11106:6;:41;;11098:98;;;::::0;-1:-1:-1;;;11098:98:0;;10357:2:1;11098:98:0::1;::::0;::::1;10339:21:1::0;10396:2;10376:18;;;10369:30;10435:34;10415:18;;;10408:62;-1:-1:-1;;;10486:18:1;;;10479:42;10538:19;;11098:98:0::1;10155:408:1::0;11098:98:0::1;11225:17;:6:::0;11235::::1;11225:17;:::i;:::-;11207:15;:35:::0;;;11258:39:::1;::::0;1839:25:1;;;11258:39:0::1;::::0;1827:2:1;1812:18;11258:39:0::1;1693:177:1::0;11375:346:0;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;11498:6:::1;11478:13;2199:12:::0;;;2111:108;11478:13:::1;:17;::::0;11494:1:::1;11478:17;:::i;:::-;:26;;;;:::i;:::-;11465:9;:39;;11457:105;;;::::0;-1:-1:-1;;;11457:105:0;;10770:2:1;11457:105:0::1;::::0;::::1;10752:21:1::0;10809:2;10789:18;;;10782:30;10848:34;10828:18;;;10821:62;-1:-1:-1;;;10899:18:1;;;10892:51;10960:19;;11457:105:0::1;10568:417:1::0;11457:105:0::1;11613:4;11593:13;2199:12:::0;;;2111:108;11593:13:::1;:17;::::0;11609:1:::1;11593:17;:::i;:::-;:24;;;;:::i;:::-;11580:9;:37;;11572:102;;;::::0;-1:-1:-1;;;11572:102:0;;11192:2:1;11572:102:0::1;::::0;::::1;11174:21:1::0;11231:2;11211:18;;;11204:30;11270:34;11250:18;;;11243:62;-1:-1:-1;;;11321:18:1;;;11314:50;11381:19;;11572:102:0::1;10990:416:1::0;11572:102:0::1;11684:18;:30:::0;11375:346::o;10739:274::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;10859:4:::1;10853;10833:13;2199:12:::0;;;2111:108;10833:13:::1;:17;::::0;10849:1:::1;10833:17;:::i;:::-;:24;;;;:::i;:::-;10832:31;;;;:::i;:::-;10822:6;:41;;10814:96;;;::::0;-1:-1:-1;;;10814:96:0;;11613:2:1;10814:96:0::1;::::0;::::1;11595:21:1::0;11652:2;11632:18;;;11625:30;11691:34;11671:18;;;11664:62;-1:-1:-1;;;11742:18:1;;;11735:40;11792:19;;10814:96:0::1;11411:406:1::0;10814:96:0::1;10937:17;:6:::0;10947::::1;10937:17;:::i;:::-;10921:13;:33:::0;;;10970:35:::1;::::0;1839:25:1;;;10970:35:0::1;::::0;1827:2:1;1812:18;10970:35:0::1;1693:177:1::0;13094:230:0;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;13171:16:::1;:32:::0;;;13214:13:::1;:32:::0;;;13282:1:::1;13265:18:::0;::::1;;13257:59;;;::::0;-1:-1:-1;;;13257:59:0;;7330:2:1;13257:59:0::1;::::0;::::1;7312:21:1::0;7369:2;7349:18;;;7342:30;7408;7388:18;;;7381:58;7456:18;;13257:59:0::1;7128:352:1::0;6025:244:0;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6114:22:0;::::1;6106:73;;;::::0;-1:-1:-1;;;6106:73:0;;12024:2:1;6106:73:0::1;::::0;::::1;12006:21:1::0;12063:2;12043:18;;;12036:30;12102:34;12082:18;;;12075:62;-1:-1:-1;;;12153:18:1;;;12146:36;12199:19;;6106:73:0::1;11822:402:1::0;6106:73:0::1;6216:6;::::0;6195:38:::1;::::0;-1:-1:-1;;;;;6195:38:0;;::::1;::::0;6216:6:::1;::::0;6195:38:::1;::::0;6216:6:::1;::::0;6195:38:::1;6244:6;:17:::0;;-1:-1:-1;;;;;;6244:17:0::1;-1:-1:-1::0;;;;;6244:17:0;;;::::1;::::0;;;::::1;::::0;;6025:244::o;17918:160::-;5780:6;;-1:-1:-1;;;;;5780:6:0;173:10;5780:22;5772:67;;;;-1:-1:-1;;;5772:67:0;;;;;;;:::i;:::-;18012:58:::1;::::0;17976:12:::1;::::0;18020:10:::1;::::0;18044:21:::1;::::0;17976:12;18012:58;17976:12;18012:58;18044:21;18020:10;18012:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;17918:160:0:o;4946:380::-;-1:-1:-1;;;;;5082:19:0;;5074:68;;;;-1:-1:-1;;;5074:68:0;;12641:2:1;5074:68:0;;;12623:21:1;12680:2;12660:18;;;12653:30;12719:34;12699:18;;;12692:62;-1:-1:-1;;;12770:18:1;;;12763:34;12814:19;;5074:68:0;12439:400:1;5074:68:0;-1:-1:-1;;;;;5161:21:0;;5153:68;;;;-1:-1:-1;;;5153:68:0;;13046:2:1;5153:68:0;;;13028:21:1;13085:2;13065:18;;;13058:30;13124:34;13104:18;;;13097:62;-1:-1:-1;;;13175:18:1;;;13168:32;13217:19;;5153:68:0;12844:398:1;5153:68:0;-1:-1:-1;;;;;5234:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5286:32;;1839:25:1;;;5286:32:0;;1812:18:1;5286:32:0;;;;;;;4946:380;;;:::o;13522:2712::-;-1:-1:-1;;;;;13620:18:0;;13612:68;;;;-1:-1:-1;;;13612:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13699:16:0;;13691:64;;;;-1:-1:-1;;;13691:64:0;;;;;;;:::i;:::-;13783:1;13774:6;:10;13766:52;;;;-1:-1:-1;;;13766:52:0;;14259:2:1;13766:52:0;;;14241:21:1;14298:2;14278:18;;;14271:30;14337:31;14317:18;;;14310:59;14386:18;;13766:52:0;14057:353:1;13766:52:0;5718:6;;-1:-1:-1;;;;;13854:15:0;;;5718:6;;13854:15;;;;:32;;-1:-1:-1;5718:6:0;;-1:-1:-1;;;;;13873:13:0;;;5718:6;;13873:13;;13854:32;:52;;;;-1:-1:-1;;;;;;13890:16:0;;;;13854:52;:77;;;;-1:-1:-1;;;;;;13910:21:0;;13924:6;13910:21;;13854:77;:107;;;;-1:-1:-1;;;;;;13936:25:0;;;;;;:19;:25;;;;;;;;13935:26;13854:107;:135;;;;-1:-1:-1;;;;;;13966:23:0;;;;;;:19;:23;;;;;;;;13965:24;13854:135;13850:947;;;-1:-1:-1;;;;;14043:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;14079:35:0;;;;;;:31;:35;;;;;;;;14078:36;14043:71;14039:743;;;14161:12;;14151:6;:22;;14143:75;;;;-1:-1:-1;;;14143:75:0;;14617:2:1;14143:75:0;;;14599:21:1;14656:2;14636:18;;;14629:30;14695:34;14675:18;;;14668:62;-1:-1:-1;;;14746:18:1;;;14739:38;14794:19;;14143:75:0;14415:404:1;14143:75:0;14279:15;;-1:-1:-1;;;;;2328:18:0;;2301:7;2328:18;;;;;;;;;;;14253:22;;:6;:22;:::i;:::-;:41;;14245:78;;;;-1:-1:-1;;;14245:78:0;;15026:2:1;14245:78:0;;;15008:21:1;15065:2;15045:18;;;15038:30;-1:-1:-1;;;15084:18:1;;;15077:54;15148:18;;14245:78:0;14824:348:1;14245:78:0;14039:743;;;-1:-1:-1;;;;;14399:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;14433:37:0;;;;;;:31;:37;;;;;;;;14432:38;14399:71;14395:387;;;14517:13;;14507:6;:23;;14499:78;;;;-1:-1:-1;;;14499:78:0;;15379:2:1;14499:78:0;;;15361:21:1;15418:2;15398:18;;;15391:30;15457:34;15437:18;;;15430:62;-1:-1:-1;;;15508:18:1;;;15501:40;15558:19;;14499:78:0;15177:406:1;14395:387:0;-1:-1:-1;;;;;14625:35:0;;;;;;:31;:35;;;;;;;;14620:162;;14718:15;;-1:-1:-1;;;;;2328:18:0;;2301:7;2328:18;;;;;;;;;;;14692:22;;:6;:22;:::i;:::-;:41;;14684:78;;;;-1:-1:-1;;;14684:78:0;;15026:2:1;14684:78:0;;;15008:21:1;15065:2;15045:18;;;15038:30;-1:-1:-1;;;15084:18:1;;;15077:54;15148:18;;14684:78:0;14824:348:1;14684:78:0;14866:4;14817:28;2328:18;;;;;;;;;;;14924;;14900:42;;;;;;;14958:22;;-1:-1:-1;14969:11:0;;-1:-1:-1;;;14969:11:0;;;;14958:22;:35;;;;-1:-1:-1;14985:8:0;;-1:-1:-1;;;14985:8:0;;;;14984:9;14958:35;:71;;;;-1:-1:-1;;;;;;14998:31:0;;;;;;:25;:31;;;;;;;;14997:32;14958:71;:101;;;;-1:-1:-1;;;;;;15034:25:0;;;;;;:19;:25;;;;;;;;15033:26;14958:101;:129;;;;-1:-1:-1;;;;;;15064:23:0;;;;;;:19;:23;;;;;;;;15063:24;14958:129;14955:236;;;15104:8;:15;;-1:-1:-1;;;;15104:15:0;-1:-1:-1;;;15104:15:0;;;15136:10;:8;:10::i;:::-;15163:8;:16;;-1:-1:-1;;;;15163:16:0;;;14955:236;-1:-1:-1;;;;;15321:25:0;;15203:12;15321:25;;;:19;:25;;;;;;15218:4;;15321:25;;;:52;;-1:-1:-1;;;;;;15350:23:0;;;;;;:19;:23;;;;;;;;15321:52;15318:99;;;-1:-1:-1;15400:5:0;15318:99;15429:12;15533:7;15530:651;;;-1:-1:-1;;;;;15592:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;15641:1;15625:13;;:17;15592:50;15588:449;;;15694:3;15678:13;;15669:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;15662:35;;15764:13;;15745:16;;15738:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;15716:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;15588:449:0;;-1:-1:-1;15588:449:0;;-1:-1:-1;;;;;15840:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;15890:1;15875:12;;:16;15840:51;15837:200;;;15940:3;15925:12;;15916:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;15909:34;;16009:12;;15991:15;;15984:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;15962:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;15837:200:0;16056:8;;16053:89;;16084:42;16100:4;16114;16121;16084:15;:42::i;:::-;16155:14;16165:4;16155:14;;:::i;:::-;;;15530:651;16193:33;16209:4;16215:2;16219:6;16193:15;:33::i;:::-;13601:2633;;;;13522:2712;;;:::o;16827:557::-;16912:4;16868:23;2328:18;;;;;;;;;;;16957;;16991:20;;;:46;;-1:-1:-1;17015:22:0;;16991:46;16988:60;;;17040:7;;16827:557::o;16988:60::-;17081:18;;:23;;17102:2;17081:23;:::i;:::-;17063:15;:41;17060:113;;;17138:18;;:23;;17159:2;17138:23;:::i;:::-;17120:41;;17060:113;17185:12;17215:33;17232:15;17215:16;:33::i;:::-;17282:1;17261:18;:22;;;17320:16;;17312:64;;-1:-1:-1;;;;;17320:16:0;;;;17350:21;;17312:64;;17282:1;17312:64;17350:21;17320:16;17312:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16827:557:0:o;12515:236::-;-1:-1:-1;;;;;12598:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;12598:39:0;;;;;;;12648;12598:31;:39;12648:26;:39::i;4025:614::-;-1:-1:-1;;;;;4165:20:0;;4157:70;;;;-1:-1:-1;;;4157:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4246:23:0;;4238:71;;;;-1:-1:-1;;;4238:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4346:17:0;;4322:21;4346:17;;;;;;;;;;;4382:23;;;;4374:74;;;;-1:-1:-1;;;4374:74:0;;15923:2:1;4374:74:0;;;15905:21:1;15962:2;15942:18;;;15935:30;16001:34;15981:18;;;15974:62;-1:-1:-1;;;16052:18:1;;;16045:36;16098:19;;4374:74:0;15721:402:1;4374:74:0;-1:-1:-1;;;;;4484:17:0;;;:9;:17;;;;;;;;;;;4504:22;;;4484:42;;4548:20;;;;;;;;:30;;4520:6;;4484:9;4548:30;;4520:6;;4548:30;:::i;:::-;;;;;;;;4613:9;-1:-1:-1;;;;;4596:35:0;4605:6;-1:-1:-1;;;;;4596:35:0;;4624:6;4596:35;;;;1839:25:1;;1827:2;1812:18;;1693:177;4596:35:0;;;;;;;;4146:493;4025:614;;;:::o;16245:573::-;16397:16;;;16411:1;16397:16;;;;;;;;16373:21;;16397:16;;;;;;;;;;-1:-1:-1;16397:16:0;16373:40;;16442:4;16424;16429:1;16424:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16424:23:0;;;:7;;;;;;;;;;:23;;;;16468:9;;:16;;;-1:-1:-1;;;16468:16:0;;;;:9;;;;;:14;;:16;;;;;16424:7;;16468:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16458:4;16463:1;16458:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16458:26:0;;;:7;;;;;;;;;:26;16529:9;;16497:56;;16514:4;;16529:9;16541:11;16497:8;:56::i;:::-;16592:9;;:218;;-1:-1:-1;;;16592:218:0;;-1:-1:-1;;;;;16592:9:0;;;;:60;;:218;;16667:11;;16592:9;;16737:4;;16764;;16784:15;;16592:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11729:207;-1:-1:-1;;;;;11817:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;11817:52:0;;;;;;;;;;11885:43;;17801:51:1;;;17868:18;;;17861:50;11885:43:0;;17774:18:1;11885:43:0;;;;;;;11729:207;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:1;;858:42;;848:70;;914:1;911;904:12;929:315;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;1113:9;1100:23;1132:31;1157:5;1132:31;:::i;:::-;1182:5;1234:2;1219:18;;;;1206:32;;-1:-1:-1;;;929:315:1:o;1441:247::-;1500:6;1553:2;1541:9;1532:7;1528:23;1524:32;1521:52;;;1569:1;1566;1559:12;1521:52;1608:9;1595:23;1627:31;1652:5;1627:31;:::i;:::-;1677:5;1441:247;-1:-1:-1;;;1441:247:1:o;1875:456::-;1952:6;1960;1968;2021:2;2009:9;2000:7;1996:23;1992:32;1989:52;;;2037:1;2034;2027:12;1989:52;2076:9;2063:23;2095:31;2120:5;2095:31;:::i;:::-;2145:5;-1:-1:-1;2202:2:1;2187:18;;2174:32;2215:33;2174:32;2215:33;:::i;:::-;1875:456;;2267:7;;-1:-1:-1;;;2321:2:1;2306:18;;;;2293:32;;1875:456::o;2336:180::-;2395:6;2448:2;2436:9;2427:7;2423:23;2419:32;2416:52;;;2464:1;2461;2454:12;2416:52;-1:-1:-1;2487:23:1;;2336:180;-1:-1:-1;2336:180:1:o;2918:118::-;3004:5;2997:13;2990:21;2983:5;2980:32;2970:60;;3026:1;3023;3016:12;3041:241;3097:6;3150:2;3138:9;3129:7;3125:23;3121:32;3118:52;;;3166:1;3163;3156:12;3118:52;3205:9;3192:23;3224:28;3246:5;3224:28;:::i;3287:382::-;3352:6;3360;3413:2;3401:9;3392:7;3388:23;3384:32;3381:52;;;3429:1;3426;3419:12;3381:52;3468:9;3455:23;3487:31;3512:5;3487:31;:::i;:::-;3537:5;-1:-1:-1;3594:2:1;3579:18;;3566:32;3607:30;3566:32;3607:30;:::i;:::-;3656:7;3646:17;;;3287:382;;;;;:::o;3674:388::-;3742:6;3750;3803:2;3791:9;3782:7;3778:23;3774:32;3771:52;;;3819:1;3816;3809:12;3771:52;3858:9;3845:23;3877:31;3902:5;3877:31;:::i;:::-;3927:5;-1:-1:-1;3984:2:1;3969:18;;3956:32;3997:33;3956:32;3997:33;:::i;4067:380::-;4146:1;4142:12;;;;4189;;;4210:61;;4264:4;4256:6;4252:17;4242:27;;4210:61;4317:2;4309:6;4306:14;4286:18;4283:38;4280:161;;4363:10;4358:3;4354:20;4351:1;4344:31;4398:4;4395:1;4388:15;4426:4;4423:1;4416:15;4280:161;;4067:380;;;:::o;4452:356::-;4654:2;4636:21;;;4673:18;;;4666:30;4732:34;4727:2;4712:18;;4705:62;4799:2;4784:18;;4452:356::o;5628:127::-;5689:10;5684:3;5680:20;5677:1;5670:31;5720:4;5717:1;5710:15;5744:4;5741:1;5734:15;5760:168;5833:9;;;5864;;5881:15;;;5875:22;;5861:37;5851:71;;5902:18;;:::i;5933:217::-;5973:1;5999;5989:132;;6043:10;6038:3;6034:20;6031:1;6024:31;6078:4;6075:1;6068:15;6106:4;6103:1;6096:15;5989:132;-1:-1:-1;6135:9:1;;5933:217::o;6565:125::-;6630:9;;;6651:10;;;6648:36;;;6664:18;;:::i;8605:184::-;8675:6;8728:2;8716:9;8707:7;8703:23;8699:32;8696:52;;;8744:1;8741;8734:12;8696:52;-1:-1:-1;8767:16:1;;8605:184;-1:-1:-1;8605:184:1:o;9073:245::-;9140:6;9193:2;9181:9;9172:7;9168:23;9164:32;9161:52;;;9209:1;9206;9199:12;9161:52;9241:9;9235:16;9260:28;9282:5;9260:28;:::i;13247:401::-;13449:2;13431:21;;;13488:2;13468:18;;;13461:30;13527:34;13522:2;13507:18;;13500:62;-1:-1:-1;;;13593:2:1;13578:18;;13571:35;13638:3;13623:19;;13247:401::o;13653:399::-;13855:2;13837:21;;;13894:2;13874:18;;;13867:30;13933:34;13928:2;13913:18;;13906:62;-1:-1:-1;;;13999:2:1;13984:18;;13977:33;14042:3;14027:19;;13653:399::o;15588:128::-;15655:9;;;15676:11;;;15673:37;;;15690:18;;:::i;16260:127::-;16321:10;16316:3;16312:20;16309:1;16302:31;16352:4;16349:1;16342:15;16376:4;16373:1;16366:15;16392:251;16462:6;16515:2;16503:9;16494:7;16490:23;16486:32;16483:52;;;16531:1;16528;16521:12;16483:52;16563:9;16557:16;16582:31;16607:5;16582:31;:::i;16648:980::-;16910:4;16958:3;16947:9;16943:19;16989:6;16978:9;16971:25;17015:2;17053:6;17048:2;17037:9;17033:18;17026:34;17096:3;17091:2;17080:9;17076:18;17069:31;17120:6;17155;17149:13;17186:6;17178;17171:22;17224:3;17213:9;17209:19;17202:26;;17263:2;17255:6;17251:15;17237:29;;17284:1;17294:195;17308:6;17305:1;17302:13;17294:195;;;17373:13;;-1:-1:-1;;;;;17369:39:1;17357:52;;17464:15;;;;17429:12;;;;17405:1;17323:9;17294:195;;;-1:-1:-1;;;;;;;17545:32:1;;;;17540:2;17525:18;;17518:60;-1:-1:-1;;;17609:3:1;17594:19;17587:35;17506:3;16648:980;-1:-1:-1;;;16648:980:1:o

Swarm Source

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