ETH Price: $3,322.96 (+6.89%)
 

Overview

Max Total Supply

77,000,000,000 VRMS

Holders

153

Transfers

-
0

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
Vereum

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at basescan.org on 2024-10-25
*/

// SPDX-License-Identifier: MIT

/* 
Vereum

$VRMS

Contract created by: Service Bridge https://serbridge.com/ 
*/

pragma solidity 0.8.17;

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

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

interface IUniswapV3Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV3Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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 {
    
    using SafeMath for uint256;

    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);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        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");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(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);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }


    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }


    function mul(uint256 a, uint256 b) internal pure returns (uint256) {

        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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 for Uniswap Router

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV3Router02 is IUniswapV3Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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

// Main Vereum Token Contract

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

    IUniswapV3Router02 public uniswapV3Router;
    address public uniswapV3Pair;
    bool private swapping;

    address public marketingWallet;

    uint256 public percentForMarketing = 100;
    bool public buyBackEnabled = true;

    uint256 public swapTokensAtAmount;

    bool public swapEnabled = true;

    uint256 public feeDivisor = 1000;

    uint256 public totalSellFees;
    uint256 public marketingSellFee;

    uint256 public totalBuyFees;
    uint256 public marketingBuyFee;

    uint256 private tokensForMarketing;

    mapping (address => bool) private _isExcludedFromFees;

    mapping (address => bool) public automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);

    constructor() ERC20("Vereum", "VRMS"){

        address newOwner = address(0x8e9cD838ce77f62F4d11559f1161DEB1C394AA80);

        // Total Supply minted once during deployment and never minted again | Set number in exact tokens
        uint256 totalSupply = 77000000000 * (10**18);

        // Tokens threshold for conversion event | Set number in exact tokens
        swapTokensAtAmount = 50000 * (10**18);

        // Contracts Sell fees in percents | Static values
        marketingSellFee = 50;
        totalSellFees = marketingSellFee;

        // Contracts Buy fees in percents | Static values
        marketingBuyFee = 50;
        totalBuyFees = marketingBuyFee;

        // Project Marketing Wallet | In case of compromise, updateable
        marketingWallet = address(0x1495d6FD802B979310726B4780D01bA59c150389);

        // BaseChain Mainnet for Uniswap V2:
        // 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24

        IUniswapV3Router02 _uniswapV3Router = IUniswapV3Router02(0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24);

        address _uniswapV3Pair = IUniswapV3Factory(_uniswapV3Router.factory())
            .createPair(address(this), _uniswapV3Router.WETH());

        uniswapV3Router = _uniswapV3Router;
        uniswapV3Pair = _uniswapV3Pair;

        _setAutomatedMarketMakerPair(_uniswapV3Pair, true);

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

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

    receive() external payable {

      }

    // Change S.A.L token swap amounts | Set number in exact tokens
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
          swapTokensAtAmount = newAmount * (10**18);
          return true;
        }

    // Exclude a wallet from fees | Not to be abused
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    // Exclude multiple wallets from fees | Not to be abused
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV3Pair, "The UniSwap pair cannot be removed from AutomatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

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

    // Set a new project marketing wallet | Only for owner
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        require(newMarketingWallet != address(0), "cannot set to 0 address");
        excludeFromFees(newMarketingWallet, true);
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

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

         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        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 = !swapping;


        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;


        if(takeFee){

            if (automatedMarketMakerPairs[to] && totalSellFees > 0){
                fees = amount.mul(totalSellFees).div(feeDivisor);
                tokensForMarketing += fees * marketingSellFee / totalSellFees;
            }

            else if(automatedMarketMakerPairs[from] && totalBuyFees > 0) {
                fees = amount.mul(totalBuyFees).div(feeDivisor);
                tokensForMarketing += fees * marketingBuyFee / totalBuyFees;
                }


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

            amount -= fees;
        }

        super._transfer(from, to, amount);

    }

    function swapEthForNativeToken(uint256 ethAmount) private {
        if(ethAmount > 0){
            address[] memory path = new address[](2);
            path[0] = uniswapV3Router.WETH();
            path[1] = address(this);

            uniswapV3Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
                0,
                path,
                address(marketingWallet),
                block.timestamp
            );
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        uniswapV3Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {

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


        uniswapV3Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(0xdead),
            block.timestamp
        );

    }

    // For correcting sell pressure | Buyback percent adjustable between marketing wallet and buyback as %

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForMarketing;

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

        bool success;

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);

        if(buyBackEnabled){
            (success,) = address(marketingWallet).call{value: ethForMarketing * percentForMarketing / 100}("Automated BuyBack completed");
            swapEthForNativeToken(address(this).balance);
        } else {
            (success,) = address(marketingWallet).call{value: address(this).balance}("Success");
        }
    }

    // Recovery functions for stuck native balances and accidentally sent ERC20 tokens

    // Function to recover stuck ETH from the contract address. Only callable by the owner
    function recoverStuckETH() external onlyOwner {
        (bool success,) = address(msg.sender).call{value: address(this).balance}("Stuck ETH balance from contract address recovered");
        require(success, "Failed. Either caller is not the owner or address is not the contract address");
    }

    // Function to recover stuck or accidentaly sent ERC20 tokens from the contract
    function recoverStuckTokens(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success){
    return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    //Function for automated buyback settings. Set in percentages for example: 50% = 50% to buyback and 50% to marketing wallet
    function changeBuyBackSettings(bool _buyBackEnabled, uint256 _percentForMarketing) external onlyOwner {
        require(_percentForMarketing <= 100, "Must be set below 100%");
        percentForMarketing = _percentForMarketing;
        buyBackEnabled = _buyBackEnabled;
    }
}

Contract Security Audit

Contract ABI

API
[{"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":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","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":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"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":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_buyBackEnabled","type":"bool"},{"internalType":"uint256","name":"_percentForMarketing","type":"uint256"}],"name":"changeBuyBackSettings","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"percentForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"recoverStuckTokens","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","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":"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":[],"name":"uniswapV3Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV3Router","outputs":[{"internalType":"contract IUniswapV3Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526064600955600a8054600160ff199182168117909255600c805490911690911790556103e8600d553480156200003957600080fd5b506040518060400160405280600681526020016556657265756d60d01b8152506040518060400160405280600481526020016356524d5360e01b815250816003908162000087919062000755565b50600462000096828262000755565b5050506000620000ab6200034160201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062002946833981519152908290a350690a968163f0a57b400000600b556032600f819055600e8190556011819055601055600880546001600160a01b031916731495d6fd802b979310726b4780d01ba59c1503891790556040805163c45a015560e01b81529051738e9cd838ce77f62f4d11559f1161deb1c394aa80916bf8cce83c11b69251c800000091734752ba5dbc23f44d87826276bf6fd6b1c372ad2491600091839163c45a01559160048083019260209291908290030181865afa158015620001aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d0919062000821565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200021e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000244919062000821565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b8919062000821565b600680546001600160a01b038086166001600160a01b03199283161790925560078054928416929091169190911790559050620002f781600162000345565b6200030484600162000399565b6200031130600162000399565b6200032061dead600162000399565b6200032c848462000447565b620003378462000543565b505050506200086e565b3390565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620003e85760405162461bcd60e51b815260206004820181905260248201526000805160206200292683398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200049f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620003df565b620004bb816002546200064560201b62000fac1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620004ee91839062000fac62000645821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b031633146200058e5760405162461bcd60e51b81526020600482018190526024820152600080516020620029268339815191526044820152606401620003df565b6001600160a01b038116620005f55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620003df565b6005546040516001600160a01b038084169216906000805160206200294683398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b505050565b6000806200065483856200084c565b905083811015620006a85760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620003df565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006dc57607f821691505b602082108103620006fd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200064057600081815260208120601f850160051c810160208610156200072c5750805b601f850160051c820191505b818110156200074d5782815560010162000738565b505050505050565b81516001600160401b03811115620007715762000771620006b1565b6200078981620007828454620006c7565b8462000703565b602080601f831160018114620007c15760008415620007a85750858301515b600019600386901b1c1916600185901b1785556200074d565b600085815260208120601f198616915b82811015620007f257888601518255948401946001909101908401620007d1565b5085821015620008115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200083457600080fd5b81516001600160a01b0381168114620006a857600080fd5b80820180821115620006ab57634e487b7160e01b600052601160045260246000fd5b6120a8806200087e6000396000f3fe6080604052600436106102135760003560e01c806395d89b4111610118578063c0246668116100a0578063d257b34f1161006f578063d257b34f1461060d578063dd62ed3e1461062d578063e2f4560514610673578063e7f444b314610689578063f2fde38b1461069f57600080fd5b8063c024666814610597578063c492f046146105b7578063c596f3fe146105d7578063d0a39814146105f757600080fd5b8063a457c2d7116100e7578063a457c2d7146104f1578063a9059cbb14610511578063aacebbe314610531578063b62496f514610551578063b9e937001461058157600080fd5b806395d89b4114610490578063984f02d3146104a55780639a36f932146104bb5780639a7a23d6146104d157600080fd5b80636053a0e31161019b578063715018a61161016a578063715018a61461040857806375f0a8741461041d57806381a164451461043d57806388522998146104525780638da5cb5b1461047257600080fd5b80636053a0e31461038857806368078952146103a25780636ddd1713146103b857806370a08231146103d257600080fd5b80632c76d7a6116101e25780632c76d7a6146102b9578063313ce567146102f1578063395093511461030d5780633a919b6c1461032d5780634fbee1931461034f57600080fd5b806306fdde031461021f578063095ea7b31461024a57806318160ddd1461027a57806323b872dd1461029957600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506102346106bf565b6040516102419190611afd565b60405180910390f35b34801561025657600080fd5b5061026a610265366004611b60565b610751565b6040519015158152602001610241565b34801561028657600080fd5b506002545b604051908152602001610241565b3480156102a557600080fd5b5061026a6102b4366004611b8c565b610768565b3480156102c557600080fd5b506006546102d9906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b3480156102fd57600080fd5b5060405160128152602001610241565b34801561031957600080fd5b5061026a610328366004611b60565b6107d1565b34801561033957600080fd5b5061034d610348366004611bdb565b610807565b005b34801561035b57600080fd5b5061026a61036a366004611bf9565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561039457600080fd5b50600a5461026a9060ff1681565b3480156103ae57600080fd5b5061028b60115481565b3480156103c457600080fd5b50600c5461026a9060ff1681565b3480156103de57600080fd5b5061028b6103ed366004611bf9565b6001600160a01b031660009081526020819052604090205490565b34801561041457600080fd5b5061034d61089a565b34801561042957600080fd5b506008546102d9906001600160a01b031681565b34801561044957600080fd5b5061034d61090e565b34801561045e57600080fd5b506007546102d9906001600160a01b031681565b34801561047e57600080fd5b506005546001600160a01b03166102d9565b34801561049c57600080fd5b50610234610a54565b3480156104b157600080fd5b5061028b60095481565b3480156104c757600080fd5b5061028b600d5481565b3480156104dd57600080fd5b5061034d6104ec366004611c16565b610a63565b3480156104fd57600080fd5b5061026a61050c366004611b60565b610b29565b34801561051d57600080fd5b5061026a61052c366004611b60565b610b78565b34801561053d57600080fd5b5061034d61054c366004611bf9565b610b85565b34801561055d57600080fd5b5061026a61056c366004611bf9565b60146020526000908152604090205460ff1681565b34801561058d57600080fd5b5061028b60105481565b3480156105a357600080fd5b5061034d6105b2366004611c16565b610c6d565b3480156105c357600080fd5b5061034d6105d2366004611c4f565b610cf6565b3480156105e357600080fd5b5061026a6105f2366004611b60565b610dd2565b34801561060357600080fd5b5061028b600e5481565b34801561061957600080fd5b5061026a610628366004611cd5565b610e77565b34801561063957600080fd5b5061028b610648366004611cee565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561067f57600080fd5b5061028b600b5481565b34801561069557600080fd5b5061028b600f5481565b3480156106ab57600080fd5b5061034d6106ba366004611bf9565b610ec1565b6060600380546106ce90611d1c565b80601f01602080910402602001604051908101604052809291908181526020018280546106fa90611d1c565b80156107475780601f1061071c57610100808354040283529160200191610747565b820191906000526020600020905b81548152906001019060200180831161072a57829003601f168201915b5050505050905090565b600061075e33848461100b565b5060015b92915050565b6000610775848484611130565b6107c784336107c285604051806060016040528060288152602001612026602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611406565b61100b565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161075e9185906107c29086610fac565b6005546001600160a01b0316331461083a5760405162461bcd60e51b815260040161083190611d56565b60405180910390fd5b60648111156108845760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b6044820152606401610831565b600955600a805460ff1916911515919091179055565b6005546001600160a01b031633146108c45760405162461bcd60e51b815260040161083190611d56565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146109385760405162461bcd60e51b815260040161083190611d56565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d80600081146109bf576040519150601f19603f3d011682016040523d82523d6000602084013e6109c4565b606091505b5050905080610a515760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a401610831565b50565b6060600480546106ce90611d1c565b6005546001600160a01b03163314610a8d5760405162461bcd60e51b815260040161083190611d56565b6007546001600160a01b0390811690831603610b1b5760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a401610831565b610b258282611440565b5050565b600061075e33846107c28560405180606001604052806025815260200161204e602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611406565b600061075e338484611130565b6005546001600160a01b03163314610baf5760405162461bcd60e51b815260040161083190611d56565b6001600160a01b038116610c055760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f742073657420746f203020616464726573730000000000000000006044820152606401610831565b610c10816001610c6d565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c975760405162461bcd60e51b815260040161083190611d56565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610d205760405162461bcd60e51b815260040161083190611d56565b60005b82811015610d91578160136000868685818110610d4257610d42611d8b565b9050602002016020810190610d579190611bf9565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610d8981611db7565b915050610d23565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610dc593929190611dd0565b60405180910390a1505050565b6005546000906001600160a01b03163314610dff5760405162461bcd60e51b815260040161083190611d56565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e709190611e29565b9392505050565b6005546000906001600160a01b03163314610ea45760405162461bcd60e51b815260040161083190611d56565b610eb682670de0b6b3a7640000611e46565b600b55506001919050565b6005546001600160a01b03163314610eeb5760405162461bcd60e51b815260040161083190611d56565b6001600160a01b038116610f505760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610831565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080610fb98385611e5d565b905083811015610e705760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610831565b6001600160a01b03831661106d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610831565b6001600160a01b0382166110ce5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610831565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166111565760405162461bcd60e51b815260040161083190611e70565b6001600160a01b03821661117c5760405162461bcd60e51b815260040161083190611eb5565b806000036111955761119083836000611494565b505050565b30600090815260208190526040902054600b54811080159081906111bb5750600c5460ff165b80156111d15750600754600160a01b900460ff16155b80156111f657506001600160a01b03851660009081526014602052604090205460ff16155b801561121b57506001600160a01b03851660009081526013602052604090205460ff16155b801561124057506001600160a01b03841660009081526013602052604090205460ff16155b1561126e576007805460ff60a01b1916600160a01b17905561126061159d565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526013602052604090205460ff600160a01b9092048216159116806112bc57506001600160a01b03851660009081526013602052604090205460ff165b156112c5575060005b600081156113f2576001600160a01b03861660009081526014602052604090205460ff1680156112f757506000600e54115b156113565761131d600d54611317600e548861172390919063ffffffff16565b906117a5565b9050600e54600f54826113309190611e46565b61133a9190611ef8565b6012600082825461134b9190611e5d565b909155506113d49050565b6001600160a01b03871660009081526014602052604090205460ff16801561138057506000601054115b156113d4576113a0600d546113176010548861172390919063ffffffff16565b9050601054601154826113b39190611e46565b6113bd9190611ef8565b601260008282546113ce9190611e5d565b90915550505b80156113e5576113e5873083611494565b6113ef8186611f1a565b94505b6113fd878787611494565b50505050505050565b6000818484111561142a5760405162461bcd60e51b81526004016108319190611afd565b5060006114378486611f1a565b95945050505050565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166114ba5760405162461bcd60e51b815260040161083190611e70565b6001600160a01b0382166114e05760405162461bcd60e51b815260040161083190611eb5565b61151d81604051806060016040528060268152602001612000602691396001600160a01b0386166000908152602081905260409020549190611406565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461154c9082610fac565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611123565b306000908152602081905260409020546012548115806115bb575080155b156115c4575050565b6000476115d0846117e7565b60006115dc4783611939565b905060006115f9856113176012548561172390919063ffffffff16565b600a5490915060ff16156116af576008546009546001600160a01b03909116906064906116269084611e46565b6116309190611ef8565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d8060008114611696576040519150601f19603f3d011682016040523d82523d6000602084013e61169b565b606091505b5050809450506116aa4761197b565b61171b565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d8060008114611710576040519150601f19603f3d011682016040523d82523d6000602084013e611715565b606091505b50909450505b505050505050565b60008260000361173557506000610762565b60006117418385611e46565b90508261174e8583611ef8565b14610e705760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610831565b6000610e7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611acf565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061181c5761181c611d8b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118999190611f2d565b816001815181106118ac576118ac611d8b565b6001600160a01b0392831660209182029290920101526006546118d2913091168461100b565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061190b908590600090869030904290600401611f8e565b600060405180830381600087803b15801561192557600080fd5b505af115801561171b573d6000803e3d6000fd5b6000610e7083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611406565b8015610a51576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156119eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0f9190611f2d565b81600081518110611a2257611a22611d8b565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611a5657611a56611d8b565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611aa2926000928892909116904290600401611fca565b6000604051808303818588803b158015611abb57600080fd5b505af11580156113fd573d6000803e3d6000fd5b60008183611af05760405162461bcd60e51b81526004016108319190611afd565b5060006114378486611ef8565b600060208083528351808285015260005b81811015611b2a57858101830151858201604001528201611b0e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a5157600080fd5b60008060408385031215611b7357600080fd5b8235611b7e81611b4b565b946020939093013593505050565b600080600060608486031215611ba157600080fd5b8335611bac81611b4b565b92506020840135611bbc81611b4b565b929592945050506040919091013590565b8015158114610a5157600080fd5b60008060408385031215611bee57600080fd5b8235611b7e81611bcd565b600060208284031215611c0b57600080fd5b8135610e7081611b4b565b60008060408385031215611c2957600080fd5b8235611c3481611b4b565b91506020830135611c4481611bcd565b809150509250929050565b600080600060408486031215611c6457600080fd5b833567ffffffffffffffff80821115611c7c57600080fd5b818601915086601f830112611c9057600080fd5b813581811115611c9f57600080fd5b8760208260051b8501011115611cb457600080fd5b60209283019550935050840135611cca81611bcd565b809150509250925092565b600060208284031215611ce757600080fd5b5035919050565b60008060408385031215611d0157600080fd5b8235611d0c81611b4b565b91506020830135611c4481611b4b565b600181811c90821680611d3057607f821691505b602082108103611d5057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611dc957611dc9611da1565b5060010190565b6040808252810183905260008460608301825b86811015611e13578235611df681611b4b565b6001600160a01b0316825260209283019290910190600101611de3565b5080925050508215156020830152949350505050565b600060208284031215611e3b57600080fd5b8151610e7081611bcd565b808202811582820484141761076257610762611da1565b8082018082111561076257610762611da1565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600082611f1557634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561076257610762611da1565b600060208284031215611f3f57600080fd5b8151610e7081611b4b565b600081518084526020808501945080840160005b83811015611f835781516001600160a01b031687529582019590820190600101611f5e565b509495945050505050565b85815284602082015260a060408201526000611fad60a0830186611f4a565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000611fe36080830186611f4a565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122065e0ec2cf429e2345cf3db9827ff7ac55d28e42f8c3475f3f4581859923da8a664736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106102135760003560e01c806395d89b4111610118578063c0246668116100a0578063d257b34f1161006f578063d257b34f1461060d578063dd62ed3e1461062d578063e2f4560514610673578063e7f444b314610689578063f2fde38b1461069f57600080fd5b8063c024666814610597578063c492f046146105b7578063c596f3fe146105d7578063d0a39814146105f757600080fd5b8063a457c2d7116100e7578063a457c2d7146104f1578063a9059cbb14610511578063aacebbe314610531578063b62496f514610551578063b9e937001461058157600080fd5b806395d89b4114610490578063984f02d3146104a55780639a36f932146104bb5780639a7a23d6146104d157600080fd5b80636053a0e31161019b578063715018a61161016a578063715018a61461040857806375f0a8741461041d57806381a164451461043d57806388522998146104525780638da5cb5b1461047257600080fd5b80636053a0e31461038857806368078952146103a25780636ddd1713146103b857806370a08231146103d257600080fd5b80632c76d7a6116101e25780632c76d7a6146102b9578063313ce567146102f1578063395093511461030d5780633a919b6c1461032d5780634fbee1931461034f57600080fd5b806306fdde031461021f578063095ea7b31461024a57806318160ddd1461027a57806323b872dd1461029957600080fd5b3661021a57005b600080fd5b34801561022b57600080fd5b506102346106bf565b6040516102419190611afd565b60405180910390f35b34801561025657600080fd5b5061026a610265366004611b60565b610751565b6040519015158152602001610241565b34801561028657600080fd5b506002545b604051908152602001610241565b3480156102a557600080fd5b5061026a6102b4366004611b8c565b610768565b3480156102c557600080fd5b506006546102d9906001600160a01b031681565b6040516001600160a01b039091168152602001610241565b3480156102fd57600080fd5b5060405160128152602001610241565b34801561031957600080fd5b5061026a610328366004611b60565b6107d1565b34801561033957600080fd5b5061034d610348366004611bdb565b610807565b005b34801561035b57600080fd5b5061026a61036a366004611bf9565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561039457600080fd5b50600a5461026a9060ff1681565b3480156103ae57600080fd5b5061028b60115481565b3480156103c457600080fd5b50600c5461026a9060ff1681565b3480156103de57600080fd5b5061028b6103ed366004611bf9565b6001600160a01b031660009081526020819052604090205490565b34801561041457600080fd5b5061034d61089a565b34801561042957600080fd5b506008546102d9906001600160a01b031681565b34801561044957600080fd5b5061034d61090e565b34801561045e57600080fd5b506007546102d9906001600160a01b031681565b34801561047e57600080fd5b506005546001600160a01b03166102d9565b34801561049c57600080fd5b50610234610a54565b3480156104b157600080fd5b5061028b60095481565b3480156104c757600080fd5b5061028b600d5481565b3480156104dd57600080fd5b5061034d6104ec366004611c16565b610a63565b3480156104fd57600080fd5b5061026a61050c366004611b60565b610b29565b34801561051d57600080fd5b5061026a61052c366004611b60565b610b78565b34801561053d57600080fd5b5061034d61054c366004611bf9565b610b85565b34801561055d57600080fd5b5061026a61056c366004611bf9565b60146020526000908152604090205460ff1681565b34801561058d57600080fd5b5061028b60105481565b3480156105a357600080fd5b5061034d6105b2366004611c16565b610c6d565b3480156105c357600080fd5b5061034d6105d2366004611c4f565b610cf6565b3480156105e357600080fd5b5061026a6105f2366004611b60565b610dd2565b34801561060357600080fd5b5061028b600e5481565b34801561061957600080fd5b5061026a610628366004611cd5565b610e77565b34801561063957600080fd5b5061028b610648366004611cee565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561067f57600080fd5b5061028b600b5481565b34801561069557600080fd5b5061028b600f5481565b3480156106ab57600080fd5b5061034d6106ba366004611bf9565b610ec1565b6060600380546106ce90611d1c565b80601f01602080910402602001604051908101604052809291908181526020018280546106fa90611d1c565b80156107475780601f1061071c57610100808354040283529160200191610747565b820191906000526020600020905b81548152906001019060200180831161072a57829003601f168201915b5050505050905090565b600061075e33848461100b565b5060015b92915050565b6000610775848484611130565b6107c784336107c285604051806060016040528060288152602001612026602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611406565b61100b565b5060019392505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161075e9185906107c29086610fac565b6005546001600160a01b0316331461083a5760405162461bcd60e51b815260040161083190611d56565b60405180910390fd5b60648111156108845760405162461bcd60e51b81526020600482015260166024820152754d757374206265207365742062656c6f77203130302560501b6044820152606401610831565b600955600a805460ff1916911515919091179055565b6005546001600160a01b031633146108c45760405162461bcd60e51b815260040161083190611d56565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146109385760405162461bcd60e51b815260040161083190611d56565b6040517f537475636b204554482062616c616e63652066726f6d20636f6e7472616374208152701859191c995cdcc81c9958dbdd995c9959607a1b60208201526000903390479060310160006040518083038185875af1925050503d80600081146109bf576040519150601f19603f3d011682016040523d82523d6000602084013e6109c4565b606091505b5050905080610a515760405162461bcd60e51b815260206004820152604d60248201527f4661696c65642e204569746865722063616c6c6572206973206e6f742074686560448201527f206f776e6572206f722061646472657373206973206e6f742074686520636f6e60648201526c7472616374206164647265737360981b608482015260a401610831565b50565b6060600480546106ce90611d1c565b6005546001600160a01b03163314610a8d5760405162461bcd60e51b815260040161083190611d56565b6007546001600160a01b0390811690831603610b1b5760405162461bcd60e51b815260206004820152604160248201527f54686520556e695377617020706169722063616e6e6f742062652072656d6f7660448201527f65642066726f6d204175746f6d617465644d61726b65744d616b6572506169726064820152607360f81b608482015260a401610831565b610b258282611440565b5050565b600061075e33846107c28560405180606001604052806025815260200161204e602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611406565b600061075e338484611130565b6005546001600160a01b03163314610baf5760405162461bcd60e51b815260040161083190611d56565b6001600160a01b038116610c055760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f742073657420746f203020616464726573730000000000000000006044820152606401610831565b610c10816001610c6d565b6008546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610c975760405162461bcd60e51b815260040161083190611d56565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610d205760405162461bcd60e51b815260040161083190611d56565b60005b82811015610d91578160136000868685818110610d4257610d42611d8b565b9050602002016020810190610d579190611bf9565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610d8981611db7565b915050610d23565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610dc593929190611dd0565b60405180910390a1505050565b6005546000906001600160a01b03163314610dff5760405162461bcd60e51b815260040161083190611d56565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af1158015610e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e709190611e29565b9392505050565b6005546000906001600160a01b03163314610ea45760405162461bcd60e51b815260040161083190611d56565b610eb682670de0b6b3a7640000611e46565b600b55506001919050565b6005546001600160a01b03163314610eeb5760405162461bcd60e51b815260040161083190611d56565b6001600160a01b038116610f505760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610831565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080610fb98385611e5d565b905083811015610e705760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610831565b6001600160a01b03831661106d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610831565b6001600160a01b0382166110ce5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610831565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166111565760405162461bcd60e51b815260040161083190611e70565b6001600160a01b03821661117c5760405162461bcd60e51b815260040161083190611eb5565b806000036111955761119083836000611494565b505050565b30600090815260208190526040902054600b54811080159081906111bb5750600c5460ff165b80156111d15750600754600160a01b900460ff16155b80156111f657506001600160a01b03851660009081526014602052604090205460ff16155b801561121b57506001600160a01b03851660009081526013602052604090205460ff16155b801561124057506001600160a01b03841660009081526013602052604090205460ff16155b1561126e576007805460ff60a01b1916600160a01b17905561126061159d565b6007805460ff60a01b191690555b6007546001600160a01b03861660009081526013602052604090205460ff600160a01b9092048216159116806112bc57506001600160a01b03851660009081526013602052604090205460ff165b156112c5575060005b600081156113f2576001600160a01b03861660009081526014602052604090205460ff1680156112f757506000600e54115b156113565761131d600d54611317600e548861172390919063ffffffff16565b906117a5565b9050600e54600f54826113309190611e46565b61133a9190611ef8565b6012600082825461134b9190611e5d565b909155506113d49050565b6001600160a01b03871660009081526014602052604090205460ff16801561138057506000601054115b156113d4576113a0600d546113176010548861172390919063ffffffff16565b9050601054601154826113b39190611e46565b6113bd9190611ef8565b601260008282546113ce9190611e5d565b90915550505b80156113e5576113e5873083611494565b6113ef8186611f1a565b94505b6113fd878787611494565b50505050505050565b6000818484111561142a5760405162461bcd60e51b81526004016108319190611afd565b5060006114378486611f1a565b95945050505050565b6001600160a01b038216600081815260146020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166114ba5760405162461bcd60e51b815260040161083190611e70565b6001600160a01b0382166114e05760405162461bcd60e51b815260040161083190611eb5565b61151d81604051806060016040528060268152602001612000602691396001600160a01b0386166000908152602081905260409020549190611406565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461154c9082610fac565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611123565b306000908152602081905260409020546012548115806115bb575080155b156115c4575050565b6000476115d0846117e7565b60006115dc4783611939565b905060006115f9856113176012548561172390919063ffffffff16565b600a5490915060ff16156116af576008546009546001600160a01b03909116906064906116269084611e46565b6116309190611ef8565b6040517f4175746f6d61746564204275794261636b20636f6d706c6574656400000000008152601b0160006040518083038185875af1925050503d8060008114611696576040519150601f19603f3d011682016040523d82523d6000602084013e61169b565b606091505b5050809450506116aa4761197b565b61171b565b600854604051665375636365737360c81b81526001600160a01b0390911690479060070160006040518083038185875af1925050503d8060008114611710576040519150601f19603f3d011682016040523d82523d6000602084013e611715565b606091505b50909450505b505050505050565b60008260000361173557506000610762565b60006117418385611e46565b90508261174e8583611ef8565b14610e705760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610831565b6000610e7083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611acf565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061181c5761181c611d8b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118999190611f2d565b816001815181106118ac576118ac611d8b565b6001600160a01b0392831660209182029290920101526006546118d2913091168461100b565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061190b908590600090869030904290600401611f8e565b600060405180830381600087803b15801561192557600080fd5b505af115801561171b573d6000803e3d6000fd5b6000610e7083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611406565b8015610a51576040805160028082526060820183526000926020830190803683375050600654604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156119eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0f9190611f2d565b81600081518110611a2257611a22611d8b565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611a5657611a56611d8b565b6001600160a01b03928316602091820292909201015260065460085460405163b6f9de9560e01b81529183169263b6f9de95928692611aa2926000928892909116904290600401611fca565b6000604051808303818588803b158015611abb57600080fd5b505af11580156113fd573d6000803e3d6000fd5b60008183611af05760405162461bcd60e51b81526004016108319190611afd565b5060006114378486611ef8565b600060208083528351808285015260005b81811015611b2a57858101830151858201604001528201611b0e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a5157600080fd5b60008060408385031215611b7357600080fd5b8235611b7e81611b4b565b946020939093013593505050565b600080600060608486031215611ba157600080fd5b8335611bac81611b4b565b92506020840135611bbc81611b4b565b929592945050506040919091013590565b8015158114610a5157600080fd5b60008060408385031215611bee57600080fd5b8235611b7e81611bcd565b600060208284031215611c0b57600080fd5b8135610e7081611b4b565b60008060408385031215611c2957600080fd5b8235611c3481611b4b565b91506020830135611c4481611bcd565b809150509250929050565b600080600060408486031215611c6457600080fd5b833567ffffffffffffffff80821115611c7c57600080fd5b818601915086601f830112611c9057600080fd5b813581811115611c9f57600080fd5b8760208260051b8501011115611cb457600080fd5b60209283019550935050840135611cca81611bcd565b809150509250925092565b600060208284031215611ce757600080fd5b5035919050565b60008060408385031215611d0157600080fd5b8235611d0c81611b4b565b91506020830135611c4481611b4b565b600181811c90821680611d3057607f821691505b602082108103611d5057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611dc957611dc9611da1565b5060010190565b6040808252810183905260008460608301825b86811015611e13578235611df681611b4b565b6001600160a01b0316825260209283019290910190600101611de3565b5080925050508215156020830152949350505050565b600060208284031215611e3b57600080fd5b8151610e7081611bcd565b808202811582820484141761076257610762611da1565b8082018082111561076257610762611da1565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600082611f1557634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561076257610762611da1565b600060208284031215611f3f57600080fd5b8151610e7081611b4b565b600081518084526020808501945080840160005b83811015611f835781516001600160a01b031687529582019590820190600101611f5e565b509495945050505050565b85815284602082015260a060408201526000611fad60a0830186611f4a565b6001600160a01b0394909416606083015250608001529392505050565b848152608060208201526000611fe36080830186611f4a565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122065e0ec2cf429e2345cf3db9827ff7ac55d28e42f8c3475f3f4581859923da8a664736f6c63430008110033

Deployed Bytecode Sourcemap

15555:9886:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4749:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5663:169;;;;;;;;;;-1:-1:-1;5663:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;5663:169:0;1023:187:1;5070:108:0;;;;;;;;;;-1:-1:-1;5158:12:0;;5070:108;;;1361:25:1;;;1349:2;1334:18;5070:108:0;1215:177:1;5840:355:0;;;;;;;;;;-1:-1:-1;5840:355:0;;;;;:::i;:::-;;:::i;15631:41::-;;;;;;;;;;-1:-1:-1;15631:41:0;;;;-1:-1:-1;;;;;15631:41:0;;;;;;-1:-1:-1;;;;;2049:32:1;;;2031:51;;2019:2;2004:18;15631:41:0;1858:230:1;4969:93:0;;;;;;;;;;-1:-1:-1;4969:93:0;;5052:2;2235:36:1;;2223:2;2208:18;4969:93:0;2093:184:1;6203:218:0;;;;;;;;;;-1:-1:-1;6203:218:0;;;;;:::i;:::-;;:::i;25159:279::-;;;;;;;;;;-1:-1:-1;25159:279:0;;;;;:::i;:::-;;:::i;:::-;;20035:125;;;;;;;;;;-1:-1:-1;20035:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;20124:28:0;20100:4;20124:28;;;:19;:28;;;;;;;;;20035:125;15830:33;;;;;;;;;;-1:-1:-1;15830:33:0;;;;;;;;16103:30;;;;;;;;;;;;;;;;15914;;;;;;;;;;-1:-1:-1;15914:30:0;;;;;;;;5186:127;;;;;;;;;;-1:-1:-1;5186:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;5287:18:0;5260:7;5287:18;;;;;;;;;;;;5186:127;10215:150;;;;;;;;;;;;;:::i;15744:30::-;;;;;;;;;;-1:-1:-1;15744:30:0;;;;-1:-1:-1;;;;;15744:30:0;;;24454:298;;;;;;;;;;;;;:::i;15679:28::-;;;;;;;;;;-1:-1:-1;15679:28:0;;;;-1:-1:-1;;;;;15679:28:0;;;10001:79;;;;;;;;;;-1:-1:-1;10066:6:0;;-1:-1:-1;;;;;10066:6:0;10001:79;;4857:104;;;;;;;;;;;;;:::i;15783:40::-;;;;;;;;;;;;;;;;15953:32;;;;;;;;;;;;;;;;19176:250;;;;;;;;;;-1:-1:-1;19176:250:0;;;;;:::i;:::-;;:::i;6429:269::-;;;;;;;;;;-1:-1:-1;6429:269:0;;;;;:::i;:::-;;:::i;5321:175::-;;;;;;;;;;-1:-1:-1;5321:175:0;;;;;:::i;:::-;;:::i;19688:339::-;;;;;;;;;;-1:-1:-1;19688:339:0;;;;;:::i;:::-;;:::i;16247:58::-;;;;;;;;;;-1:-1:-1;16247:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16069:27;;;;;;;;;;;;;;;;18608:184;;;;;;;;;;-1:-1:-1;18608:184:0;;;;;:::i;:::-;;:::i;18862:306::-;;;;;;;;;;-1:-1:-1;18862:306:0;;;;;:::i;:::-;;:::i;24845:177::-;;;;;;;;;;-1:-1:-1;24845:177:0;;;;;:::i;:::-;;:::i;15994:28::-;;;;;;;;;;;;;;;;18370:176;;;;;;;;;;-1:-1:-1;18370:176:0;;;;;:::i;:::-;;:::i;5504:151::-;;;;;;;;;;-1:-1:-1;5504:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5620:18:0;;;5593:7;5620:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5504:151;15872:33;;;;;;;;;;;;;;;;16029:31;;;;;;;;;;;;;;;;10375:244;;;;;;;;;;-1:-1:-1;10375:244:0;;;;;:::i;:::-;;:::i;4749:100::-;4803:13;4836:5;4829:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4749:100;:::o;5663:169::-;5746:4;5763:39;266:10;5786:7;5795:6;5763:8;:39::i;:::-;-1:-1:-1;5820:4:0;5663:169;;;;;:::o;5840:355::-;5980:4;5997:36;6007:6;6015:9;6026:6;5997:9;:36::i;:::-;6044:121;6053:6;266:10;6075:89;6113:6;6075:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6075:19:0;;;;;;:11;:19;;;;;;;;266:10;6075:33;;;;;;;;;;:37;:89::i;:::-;6044:8;:121::i;:::-;-1:-1:-1;6183:4:0;5840:355;;;;;:::o;6203:218::-;266:10;6291:4;6340:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6340:34:0;;;;;;;;;;6291:4;;6308:83;;6331:7;;6340:50;;6379:10;6340:38;:50::i;25159:279::-;10128:6;;-1:-1:-1;;;;;10128:6:0;266:10;10128:22;10120:67;;;;-1:-1:-1;;;10120:67:0;;;;;;;:::i;:::-;;;;;;;;;25304:3:::1;25280:20;:27;;25272:62;;;::::0;-1:-1:-1;;;25272:62:0;;5847:2:1;25272:62:0::1;::::0;::::1;5829:21:1::0;5886:2;5866:18;;;5859:30;-1:-1:-1;;;5905:18:1;;;5898:52;5967:18;;25272:62:0::1;5645:346:1::0;25272:62:0::1;25345:19;:42:::0;25398:14:::1;:32:::0;;-1:-1:-1;;25398:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25159:279::o;10215:150::-;10128:6;;-1:-1:-1;;;;;10128:6:0;266:10;10128:22;10120:67;;;;-1:-1:-1;;;10120:67:0;;;;;;;:::i;:::-;10308:6:::1;::::0;10287:40:::1;::::0;10324:1:::1;::::0;-1:-1:-1;;;;;10308:6:0::1;::::0;10287:40:::1;::::0;10324:1;;10287:40:::1;10338:6;:19:::0;;-1:-1:-1;;;;;;10338:19:0::1;::::0;;10215:150::o;24454:298::-;10128:6;;-1:-1:-1;;;;;10128:6:0;266:10;10128:22;10120:67;;;;-1:-1:-1;;;10120:67:0;;;;;;;:::i;:::-;24529:107:::1;::::0;6209:34:1;6197:47;;-1:-1:-1;;;6269:2:1;6260:12;;6253:41;24512:12:0::1;::::0;24537:10:::1;::::0;24561:21:::1;::::0;6319:2:1;6310:12;24529:107:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24511:125;;;24655:7;24647:97;;;::::0;-1:-1:-1;;;24647:97:0;;6535:2:1;24647:97:0::1;::::0;::::1;6517:21:1::0;6574:2;6554:18;;;6547:30;6613:34;6593:18;;;6586:62;6684:34;6664:18;;;6657:62;-1:-1:-1;;;6735:19:1;;;6728:44;6789:19;;24647:97:0::1;6333:481:1::0;24647:97:0::1;24500:252;24454:298::o:0;4857:104::-;4913:13;4946:7;4939:14;;;;;:::i;19176:250::-;10128:6;;-1:-1:-1;;;;;10128:6:0;266:10;10128:22;10120:67;;;;-1:-1:-1;;;10120:67:0;;;;;;;:::i;:::-;19283:13:::1;::::0;-1:-1:-1;;;;;19283:13:0;;::::1;19275:21:::0;;::::1;::::0;19267:99:::1;;;::::0;-1:-1:-1;;;19267:99:0;;7021:2:1;19267:99:0::1;::::0;::::1;7003:21:1::0;7060:2;7040:18;;;7033:30;7099:34;7079:18;;;7072:62;7170:34;7150:18;;;7143:62;-1:-1:-1;;;7221:19:1;;;7214:32;7263:19;;19267:99:0::1;6819:469:1::0;19267:99:0::1;19377:41;19406:4;19412:5;19377:28;:41::i;:::-;19176:250:::0;;:::o;6429:269::-;6522:4;6539:129;266:10;6562:7;6571:96;6610:15;6571:96;;;;;;;;;;;;;;;;;266:10;6571:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6571:34:0;;;;;;;;;;;;:38;:96::i;5321:175::-;5407:4;5424:42;266:10;5448:9;5459:6;5424:9;:42::i;19688:339::-;10128:6;;-1:-1:-1;;;;;10128:6:0;266:10;10128:22;10120:67;;;;-1:-1:-1;;;10120:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19785:32:0;::::1;19777:68;;;::::0;-1:-1:-1;;;19777:68:0;;7495:2:1;19777:68:0::1;::::0;::::1;7477:21:1::0;7534:2;7514:18;;;7507:30;7573:25;7553:18;;;7546:53;7616:18;;19777:68:0::1;7293:347:1::0;19777:68:0::1;19856:41;19872:18;19892:4;19856:15;:41::i;:::-;19956:15;::::0;19913:59:::1;::::0;-1:-1:-1;;;;;19956:15:0;;::::1;::::0;19913:59;::::1;::::0;::::1;::::0;19956:15:::1;::::0;19913:59:::1;19983:15;:36:::0;;-1:-1:-1;;;;;;19983:36:0::1;-1:-1:-1::0;;;;;19983:36:0;;;::::1;::::0;;;::::1;::::0;;19688:339::o;18608:184::-;10128:6;;-1:-1:-1;;;;;10128:6:0;266:10;10128:22;10120:67;;;;-1:-1:-1;;;10120:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18693:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;18693:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;18750:34;;1163:41:1;;;18750:34:0::1;::::0;1136:18:1;18750:34:0::1;;;;;;;18608:184:::0;;:::o;18862:306::-;10128:6;;-1:-1:-1;;;;;10128:6:0;266:10;10128:22;10120:67;;;;-1:-1:-1;;;10120:67:0;;;;;;;:::i;:::-;18981:9:::1;18977:115;18996:19:::0;;::::1;18977:115;;;19072:8;19037:19;:32;19057:8;;19066:1;19057:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19037:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19037:32:0;:43;;-1:-1:-1;;19037:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19017:3;::::1;::::0;::::1;:::i;:::-;;;;18977:115;;;;19109:51;19141:8;;19151;19109:51;;;;;;;;:::i;:::-;;;;;;;;18862:306:::0;;;:::o;24845:177::-;10128:6;;24939:12;;-1:-1:-1;;;;;10128:6:0;266:10;10128:22;10120:67;;;;-1:-1:-1;;;10120:67:0;;;;;;;:::i;:::-;24966:48:::1;::::0;-1:-1:-1;;;24966:48:0;;24995:10:::1;24966:48;::::0;::::1;9022:51:1::0;9089:18;;;9082:34;;;-1:-1:-1;;;;;24966:28:0;::::1;::::0;::::1;::::0;8995:18:1;;24966:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24959:55:::0;24845:177;-1:-1:-1;;;24845:177:0:o;18370:176::-;10128:6;;18451:4;;-1:-1:-1;;;;;10128:6:0;266:10;10128:22;10120:67;;;;-1:-1:-1;;;10120:67:0;;;;;;;:::i;:::-;18490:20:::1;:9:::0;18503:6:::1;18490:20;:::i;:::-;18469:18;:41:::0;-1:-1:-1;18530:4:0::1;18370:176:::0;;;:::o;10375:244::-;10128:6;;-1:-1:-1;;;;;10128:6:0;266:10;10128:22;10120:67;;;;-1:-1:-1;;;10120:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10464:22:0;::::1;10456:73;;;::::0;-1:-1:-1;;;10456:73:0;;9752:2:1;10456:73:0::1;::::0;::::1;9734:21:1::0;9791:2;9771:18;;;9764:30;9830:34;9810:18;;;9803:62;-1:-1:-1;;;9881:18:1;;;9874:36;9927:19;;10456:73:0::1;9550:402:1::0;10456:73:0::1;10566:6;::::0;10545:38:::1;::::0;-1:-1:-1;;;;;10545:38:0;;::::1;::::0;10566:6:::1;::::0;10545:38:::1;::::0;10566:6:::1;::::0;10545:38:::1;10594:6;:17:::0;;-1:-1:-1;;;;;;10594:17:0::1;-1:-1:-1::0;;;;;10594:17:0;;;::::1;::::0;;;::::1;::::0;;10375:244::o;8234:181::-;8292:7;;8324:5;8328:1;8324;:5;:::i;:::-;8312:17;;8353:1;8348;:6;;8340:46;;;;-1:-1:-1;;;8340:46:0;;10289:2:1;8340:46:0;;;10271:21:1;10328:2;10308:18;;;10301:30;10367:29;10347:18;;;10340:57;10414:18;;8340:46:0;10087:351:1;7688:380:0;-1:-1:-1;;;;;7824:19:0;;7816:68;;;;-1:-1:-1;;;7816:68:0;;10645:2:1;7816:68:0;;;10627:21:1;10684:2;10664:18;;;10657:30;10723:34;10703:18;;;10696:62;-1:-1:-1;;;10774:18:1;;;10767:34;10818:19;;7816:68:0;10443:400:1;7816:68:0;-1:-1:-1;;;;;7903:21:0;;7895:68;;;;-1:-1:-1;;;7895:68:0;;11050:2:1;7895:68:0;;;11032:21:1;11089:2;11069:18;;;11062:30;11128:34;11108:18;;;11101:62;-1:-1:-1;;;11179:18:1;;;11172:32;11221:19;;7895:68:0;10848:398:1;7895:68:0;-1:-1:-1;;;;;7976:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8028:32;;1361:25:1;;;8028:32:0;;1334:18:1;8028:32:0;;;;;;;;7688:380;;;:::o;20168:1728::-;-1:-1:-1;;;;;20300:18:0;;20292:68;;;;-1:-1:-1;;;20292:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20379:16:0;;20371:64;;;;-1:-1:-1;;;20371:64:0;;;;;;;:::i;:::-;20452:6;20462:1;20452:11;20449:92;;20480:28;20496:4;20502:2;20506:1;20480:15;:28::i;:::-;20168:1728;;;:::o;20449:92::-;20602:4;20553:28;5287:18;;;;;;;;;;;20660;;20636:42;;;;;;;20708:35;;-1:-1:-1;20732:11:0;;;;20708:35;:61;;;;-1:-1:-1;20761:8:0;;-1:-1:-1;;;20761:8:0;;;;20760:9;20708:61;:110;;;;-1:-1:-1;;;;;;20787:31:0;;;;;;:25;:31;;;;;;;;20786:32;20708:110;:153;;;;-1:-1:-1;;;;;;20836:25:0;;;;;;:19;:25;;;;;;;;20835:26;20708:153;:194;;;;-1:-1:-1;;;;;;20879:23:0;;;;;;:19;:23;;;;;;;;20878:24;20708:194;20691:321;;;20929:8;:15;;-1:-1:-1;;;;20929:15:0;-1:-1:-1;;;20929:15:0;;;20959:10;:8;:10::i;:::-;20984:8;:16;;-1:-1:-1;;;;20984:16:0;;;20691:321;21040:8;;-1:-1:-1;;;;;21066:25:0;;21024:12;21066:25;;;:19;:25;;;;;;21040:8;-1:-1:-1;;;21040:8:0;;;;;21039:9;;21066:25;;:52;;-1:-1:-1;;;;;;21095:23:0;;;;;;:19;:23;;;;;;;;21066:52;21063:99;;;-1:-1:-1;21145:5:0;21063:99;21174:12;21208:7;21205:636;;;-1:-1:-1;;;;;21237:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;21286:1;21270:13;;:17;21237:50;21233:459;;;21314:41;21344:10;;21314:25;21325:13;;21314:6;:10;;:25;;;;:::i;:::-;:29;;:41::i;:::-;21307:48;;21422:13;;21403:16;;21396:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;21374:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;21233:459:0;;-1:-1:-1;21233:459:0;;-1:-1:-1;;;;;21475:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;21525:1;21510:12;;:16;21475:51;21472:220;;;21554:40;21583:10;;21554:24;21565:12;;21554:6;:10;;:24;;;;:::i;:40::-;21547:47;;21660:12;;21642:15;;21635:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21613:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;21472:220:0;21713:8;;21710:89;;21741:42;21757:4;21771;21778;21741:15;:42::i;:::-;21815:14;21825:4;21815:14;;:::i;:::-;;;21205:636;21853:33;21869:4;21875:2;21879:6;21853:15;:33::i;:::-;20281:1615;;;;20168:1728;;;:::o;8569:192::-;8655:7;8691:12;8683:6;;;;8675:29;;;;-1:-1:-1;;;8675:29:0;;;;;;;;:::i;:::-;-1:-1:-1;8715:9:0;8727:5;8731:1;8727;:5;:::i;:::-;8715:17;8569:192;-1:-1:-1;;;;;8569:192:0:o;19434:186::-;-1:-1:-1;;;;;19517:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;19517:39:0;;;;;;;;;;19572:40;;19517:39;;:31;19572:40;;;19434:186;;:::o;6706:573::-;-1:-1:-1;;;;;6846:20:0;;6838:70;;;;-1:-1:-1;;;6838:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6927:23:0;;6919:71;;;;-1:-1:-1;;;6919:71:0;;;;;;;:::i;:::-;7083;7105:6;7083:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7083:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7063:17:0;;;:9;:17;;;;;;;;;;;:91;;;;7188:20;;;;;;;:32;;7213:6;7188:24;:32::i;:::-;-1:-1:-1;;;;;7165:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;7236:35;1361:25:1;;;7165:20:0;;7236:35;;;;;;1334:18:1;7236:35:0;1215:177:1;23374:890:0;23457:4;23413:23;5287:18;;;;;;;;;;;23502;;23536:20;;;:46;;-1:-1:-1;23560:22:0;;23536:46;23533:60;;;23585:7;;23374:890::o;23533:60::-;23605:12;23658:21;23692:33;23709:15;23692:16;:33::i;:::-;23738:18;23759:44;:21;23785:17;23759:25;:44::i;:::-;23738:65;;23816:23;23842:57;23881:17;23842:34;23857:18;;23842:10;:14;;:34;;;;:::i;:57::-;23915:14;;23816:83;;-1:-1:-1;23915:14:0;;23912:345;;;23966:15;;24013:19;;-1:-1:-1;;;;;23966:15:0;;;;24035:3;;23995:37;;:15;:37;:::i;:::-;:43;;;;:::i;:::-;23958:112;;12629:29:1;12617:42;;12684:2;12675:12;23958:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23945:125;;;;;24085:44;24107:21;24085;:44::i;:::-;23912:345;;;24183:15;;24175:70;;-1:-1:-1;;;12899:22:1;;-1:-1:-1;;;;;24183:15:0;;;;24212:21;;12946:1:1;12937:11;24175:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24162:83:0;;-1:-1:-1;;23912:345:0;23402:862;;;;;;23374:890::o;8771:252::-;8829:7;8855:1;8860;8855:6;8851:47;;-1:-1:-1;8885:1:0;8878:8;;8851:47;8910:9;8922:5;8926:1;8922;:5;:::i;:::-;8910:17;-1:-1:-1;8955:1:0;8946:5;8950:1;8910:17;8946:5;:::i;:::-;:10;8938:56;;;;-1:-1:-1;;;8938:56:0;;13161:2:1;8938:56:0;;;13143:21:1;13200:2;13180:18;;;13173:30;13239:34;13219:18;;;13212:62;-1:-1:-1;;;13290:18:1;;;13283:31;13331:19;;8938:56:0;12959:397:1;9031:132:0;9089:7;9116:39;9120:1;9123;9116:39;;;;;;;;;;;;;;;;;:3;:39::i;22393:479::-;22485:16;;;22499:1;22485:16;;;;;;;;22461:21;;22485:16;;;;;;;;;;-1:-1:-1;22485:16:0;22461:40;;22530:4;22512;22517:1;22512:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22512:23:0;;;:7;;;;;;;;;;:23;;;;22556:15;;:22;;;-1:-1:-1;;;22556:22:0;;;;:15;;;;;:20;;:22;;;;;22512:7;;22556:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22546:4;22551:1;22546:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22546:32:0;;;:7;;;;;;;;;:32;22623:15;;22591:62;;22608:4;;22623:15;22641:11;22591:8;:62::i;:::-;22666:15;;:196;;-1:-1:-1;;;22666:196:0;;-1:-1:-1;;;;;22666:15:0;;;;:66;;:196;;22747:11;;22666:15;;22789:4;;22816;;22836:15;;22666:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8425:136;8483:7;8510:43;8514:1;8517;8510:43;;;;;;;;;;;;;;;;;:3;:43::i;21904:481::-;21976:13;;21973:405;;22029:16;;;22043:1;22029:16;;;;;;;;22005:21;;22029:16;;;;;;;;-1:-1:-1;;22070:15:0;;:22;;;-1:-1:-1;;;22070:22:0;;;;22005:40;;-1:-1:-1;;;;;;22070:15:0;;;;:20;;-1:-1:-1;22070:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22060:4;22065:1;22060:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;22060:32:0;;;-1:-1:-1;;;;;22060:32:0;;;;;22125:4;22107;22112:1;22107:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22107:23:0;;;:7;;;;;;;;;:23;22147:15;;22301;;22147:219;;-1:-1:-1;;;22147:219:0;;:15;;;;:66;;22221:9;;22147:219;;:15;;22270:4;;22301:15;;;;22336;;22147:219;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9171:191;9257:7;9292:12;9285:5;9277:28;;;;-1:-1:-1;;;9277:28:0;;;;;;;;:::i;:::-;-1:-1:-1;9316:9:0;9328:5;9332:1;9328;:5;:::i;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;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2282:118::-;2368:5;2361:13;2354:21;2347:5;2344:32;2334:60;;2390:1;2387;2380:12;2405:309;2470:6;2478;2531:2;2519:9;2510:7;2506:23;2502:32;2499:52;;;2547:1;2544;2537:12;2499:52;2586:9;2573:23;2605:28;2627:5;2605:28;:::i;2719:247::-;2778:6;2831:2;2819:9;2810:7;2806:23;2802:32;2799:52;;;2847:1;2844;2837:12;2799:52;2886:9;2873:23;2905:31;2930:5;2905:31;:::i;3179:382::-;3244:6;3252;3305:2;3293:9;3284:7;3280:23;3276:32;3273:52;;;3321:1;3318;3311:12;3273:52;3360:9;3347:23;3379:31;3404:5;3379:31;:::i;:::-;3429:5;-1:-1:-1;3486:2:1;3471:18;;3458:32;3499:30;3458:32;3499:30;:::i;:::-;3548:7;3538:17;;;3179:382;;;;;:::o;3566:750::-;3658:6;3666;3674;3727:2;3715:9;3706:7;3702:23;3698:32;3695:52;;;3743:1;3740;3733:12;3695:52;3783:9;3770:23;3812:18;3853:2;3845:6;3842:14;3839:34;;;3869:1;3866;3859:12;3839:34;3907:6;3896:9;3892:22;3882:32;;3952:7;3945:4;3941:2;3937:13;3933:27;3923:55;;3974:1;3971;3964:12;3923:55;4014:2;4001:16;4040:2;4032:6;4029:14;4026:34;;;4056:1;4053;4046:12;4026:34;4111:7;4104:4;4094:6;4091:1;4087:14;4083:2;4079:23;4075:34;4072:47;4069:67;;;4132:1;4129;4122:12;4069:67;4163:4;4155:13;;;;-1:-1:-1;4187:6:1;-1:-1:-1;;4228:20:1;;4215:34;4258:28;4215:34;4258:28;:::i;:::-;4305:5;4295:15;;;3566:750;;;;;:::o;4321:180::-;4380:6;4433:2;4421:9;4412:7;4408:23;4404:32;4401:52;;;4449:1;4446;4439:12;4401:52;-1:-1:-1;4472:23:1;;4321:180;-1:-1:-1;4321:180:1:o;4506:388::-;4574:6;4582;4635:2;4623:9;4614:7;4610:23;4606:32;4603:52;;;4651:1;4648;4641:12;4603:52;4690:9;4677:23;4709:31;4734:5;4709:31;:::i;:::-;4759:5;-1:-1:-1;4816:2:1;4801:18;;4788:32;4829:33;4788:32;4829:33;:::i;4899:380::-;4978:1;4974:12;;;;5021;;;5042:61;;5096:4;5088:6;5084:17;5074:27;;5042:61;5149:2;5141:6;5138:14;5118:18;5115:38;5112:161;;5195:10;5190:3;5186:20;5183:1;5176:31;5230:4;5227:1;5220:15;5258:4;5255:1;5248:15;5112:161;;4899:380;;;:::o;5284:356::-;5486:2;5468:21;;;5505:18;;;5498:30;5564:34;5559:2;5544:18;;5537:62;5631:2;5616:18;;5284:356::o;7645:127::-;7706:10;7701:3;7697:20;7694:1;7687:31;7737:4;7734:1;7727:15;7761:4;7758:1;7751:15;7777:127;7838:10;7833:3;7829:20;7826:1;7819:31;7869:4;7866:1;7859:15;7893:4;7890:1;7883:15;7909:135;7948:3;7969:17;;;7966:43;;7989:18;;:::i;:::-;-1:-1:-1;8036:1:1;8025:13;;7909:135::o;8049:794::-;8271:2;8283:21;;;8256:18;;8339:22;;;8223:4;8418:6;8392:2;8377:18;;8223:4;8452:304;8466:6;8463:1;8460:13;8452:304;;;8541:6;8528:20;8561:31;8586:5;8561:31;:::i;:::-;-1:-1:-1;;;;;8617:31:1;8605:44;;8672:4;8731:15;;;;8696:12;;;;8645:1;8481:9;8452:304;;;8456:3;8773;8765:11;;;;8828:6;8821:14;8814:22;8807:4;8796:9;8792:20;8785:52;8049:794;;;;;;:::o;9127:245::-;9194:6;9247:2;9235:9;9226:7;9222:23;9218:32;9215:52;;;9263:1;9260;9253:12;9215:52;9295:9;9289:16;9314:28;9336:5;9314:28;:::i;9377:168::-;9450:9;;;9481;;9498:15;;;9492:22;;9478:37;9468:71;;9519:18;;:::i;9957:125::-;10022:9;;;10043:10;;;10040:36;;;10056:18;;:::i;11251:401::-;11453:2;11435:21;;;11492:2;11472:18;;;11465:30;11531:34;11526:2;11511:18;;11504:62;-1:-1:-1;;;11597:2:1;11582:18;;11575:35;11642:3;11627:19;;11251:401::o;11657:399::-;11859:2;11841:21;;;11898:2;11878:18;;;11871:30;11937:34;11932:2;11917:18;;11910:62;-1:-1:-1;;;12003:2:1;11988:18;;11981:33;12046:3;12031:19;;11657:399::o;12061:217::-;12101:1;12127;12117:132;;12171:10;12166:3;12162:20;12159:1;12152:31;12206:4;12203:1;12196:15;12234:4;12231:1;12224:15;12117:132;-1:-1:-1;12263:9:1;;12061:217::o;12283:128::-;12350:9;;;12371:11;;;12368:37;;;12385:18;;:::i;13493:251::-;13563:6;13616:2;13604:9;13595:7;13591:23;13587:32;13584:52;;;13632:1;13629;13622:12;13584:52;13664:9;13658:16;13683:31;13708:5;13683:31;:::i;13749:461::-;13802:3;13840:5;13834:12;13867:6;13862:3;13855:19;13893:4;13922:2;13917:3;13913:12;13906:19;;13959:2;13952:5;13948:14;13980:1;13990:195;14004:6;14001:1;13998:13;13990:195;;;14069:13;;-1:-1:-1;;;;;14065:39:1;14053:52;;14125:12;;;;14160:15;;;;14101:1;14019:9;13990:195;;;-1:-1:-1;14201:3:1;;13749:461;-1:-1:-1;;;;;13749:461:1:o;14215:582::-;14514:6;14503:9;14496:25;14557:6;14552:2;14541:9;14537:18;14530:34;14600:3;14595:2;14584:9;14580:18;14573:31;14477:4;14621:57;14673:3;14662:9;14658:19;14650:6;14621:57;:::i;:::-;-1:-1:-1;;;;;14714:32:1;;;;14709:2;14694:18;;14687:60;-1:-1:-1;14778:3:1;14763:19;14756:35;14613:65;14215:582;-1:-1:-1;;;14215:582:1:o;14802:510::-;15073:6;15062:9;15055:25;15116:3;15111:2;15100:9;15096:18;15089:31;15036:4;15137:57;15189:3;15178:9;15174:19;15166:6;15137:57;:::i;:::-;-1:-1:-1;;;;;15230:32:1;;;;15225:2;15210:18;;15203:60;-1:-1:-1;15294:2:1;15279:18;15272:34;15129:65;14802:510;-1:-1:-1;;14802:510:1:o

Swarm Source

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