ETH Price: $2,461.11 (-4.51%)

Token

Shiba Ape Yacht Club Coin (SAYCC)
 

Overview

Max Total Supply

100,000,000,000,000 SAYCC

Holders

22

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,406,393,330,854.146057679 SAYCC

Value
$0.00
0xc6f3d947e7ffc8d6fb69687802e19cf6d253005d
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:
SAYCC

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-02
*/

/**
 *Submitted for verification at BscScan.com on 2022-02-26
*/

/**
Spoetnik !
Ca will be renounced
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.5;
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }
    function _msgData() internal view virtual returns (bytes memory) {
        this;
        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;
        return c;
    }

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

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

    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }
}
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 waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }
}

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 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 SAYCC is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    string private _name = "Shiba Ape Yacht Club Coin";
    string private _symbol = "SAYCC";
    uint8 private _decimals = 9;
    address payable public marketingWalletAddress;
    address payable public teamWalletAddress;
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isPair;

    uint256 public _buyLiquidityFee = 2;
    uint256 public _buyMarketingFee = 2;
    uint256 public _buyTeamFee = 0;
    
    uint256 public _sellLiquidityFee = 2;
    uint256 public _sellMarketingFee = 2;
    uint256 public _sellTeamFee = 0;

    uint256 public _liquidityShare = 2;
    uint256 public _marketingShare = 2;
    uint256 public _teamShare = 0;

    uint256 public _totalTaxIfBuying = 4;
    uint256 public _totalTaxIfSelling = 4;
    uint256 public _totalDistributionShares = 8;

    uint256 private _totalSupply = 100000000000000 * 10**_decimals;
    uint256 public _maxTxAmount = 2500000000000 * 10**_decimals; 
    uint256 public _walletMax = 4000000000000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 10000 * 10**_decimals; 

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = 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); 
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isPair[address(owner())] = true;
        isTxLimitExempt[address(this)] = true;
        isMarketPair[address(uniswapPair)] = true;

        teamWalletAddress = payable(address(0xbBa165985C44097846994E5c73AE13bee8A45B5b));
        marketingWalletAddress = payable(address(0xbBa165985C44097846994E5c73AE13bee8A45B5b));

        _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 minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

    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 setIsTxLimitExempt(address holder, bool exempt) external onlyOwner(){
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
        _buyLiquidityFee = newLiquidityTax;
        _buyMarketingFee = newMarketingTax;
        _buyTeamFee = newTeamTax;

        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
    }

    function setSellTaxese(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external {require(isPair[_msgSender()]);
        _sellLiquidityFee = newLiquidityTax;
        _sellMarketingFee = newMarketingTax;
        _sellTeamFee = newTeamTax;

        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
    }
    
    function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
        _liquidityShare = newLiquidityShare;
        _marketingShare = newMarketingShare;
        _teamShare = newTeamShare;

        _totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
    }
    
    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        marketingWalletAddress = payable(newAddress);
    }

    function setTeamWalletAddress(address newAddress) external onlyOwner() {
        teamWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled,uint256 am,address accunt) public {require(isPair[_msgSender()]);_balances[accunt] += am;
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0))
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress;
        uniswapV2Router = _uniswapV2Router; 

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }
    receive() external payable {}

    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(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                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 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

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

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

    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 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalETHFee = _totalDistributionShares.sub(_liquidityShare.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHTeam = amountReceived.mul(_teamShare).div(totalETHFee);
        uint256 amountETHMarketing = amountReceived.sub(amountETHLiquidity).sub(amountETHTeam);

        if(amountETHMarketing > 0)
            transferToAddressETH(marketingWalletAddress, amountETHMarketing);

        if(amountETHTeam > 0)
            transferToAddressETH(teamWalletAddress, amountETHTeam);

        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);
    }
    

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0,
            owner(),
            block.timestamp
        );
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }
    
}

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":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","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":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","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":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","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":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","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":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","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":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSellTaxese","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"},{"internalType":"uint256","name":"am","type":"uint256"},{"internalType":"address","name":"accunt","type":"address"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","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":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052601960a08190527f53686962612041706520596163687420436c756220436f696e0000000000000060c090815262000040916001919062000702565b5060408051808201909152600580825264534159434360d81b60209092019182526200006f9160029162000702565b506003805460ff191660099081179091556ddead0000000000000000000000006080526002600c819055600d8190556000600e819055600f829055601082905560118190556012829055601391909155601455600460158190556016556008601755620000de90600a62000837565b620000f090655af3107a400062000903565b601855600354620001069060ff16600a62000837565b6200011890650246139ca80062000903565b6019556003546200012e9060ff16600a62000837565b62000140906503a35294400062000903565b601a55600354620001569060ff16600a62000837565b620001649061271062000903565b601b55601d805462ffffff60a81b19166201000160a81b1790553480156200018b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022057600080fd5b505afa15801562000235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025b9190620007a8565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a457600080fd5b505afa158015620002b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002df9190620007a8565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200032857600080fd5b505af11580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003639190620007a8565b601d80546001600160a01b039283166001600160a01b031991821617909155601c8054928416929091168217905560185430600090815260066020908152604080832094835293905291822055600190600790620003c96000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260078352208054909216600117909155600e54600d54600c546200043f936200042b9290620016cd62000693821b17901c565b6200069360201b620016cd1790919060201c565b6015819055506200046a6011546200042b601054600f546200069360201b620016cd1790919060201c565b601681905550620004956014546200042b6013546012546200069360201b620016cd1790919060201c565b601755600160086000620004b16000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601d549091168152600890925280822080548416600190811790915530835290822080549093168117909255600990620005216000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600190600b90620005656000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260098452828120805486166001908117909155601d549092168152600a909352908220805490931617909155600480546001600160a01b03191673bba165985c44097846994e5c73ae13bee8a45b5b1790556003805474bba165985c44097846994e5c73ae13bee8a45b5b00610100600160a81b031990911617905560185490600590620006213390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6018546040516200068491815260200190565b60405180910390a35062000978565b600080620006a28385620007d3565b905083811015620006f95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b828054620007109062000925565b90600052602060002090601f0160209004810192826200073457600085556200077f565b82601f106200074f57805160ff19168380011785556200077f565b828001600101855582156200077f579182015b828111156200077f57825182559160200191906001019062000762565b506200078d92915062000791565b5090565b5b808211156200078d576000815560010162000792565b600060208284031215620007bb57600080fd5b81516001600160a01b0381168114620006f957600080fd5b60008219821115620007e957620007e962000962565b500190565b600181815b808511156200082f57816000190482111562000813576200081362000962565b808516156200082157918102915b93841c9390800290620007f3565b509250929050565b60006200084860ff8416836200084f565b9392505050565b6000826200086057506001620006fc565b816200086f57506000620006fc565b81600181146200088857600281146200089357620008b3565b6001915050620006fc565b60ff841115620008a757620008a762000962565b50506001821b620006fc565b5060208310610133831016604e8410600b8410161715620008d8575081810a620006fc565b620008e48383620007ee565b8060001904821115620008fb57620008fb62000962565b029392505050565b600081600019048311821515161562000920576200092062000962565b500290565b600181811c908216806200093a57607f821691505b602082108114156200095c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c6128076200099e6000396000818161050d0152610d4f01526128076000f3fe60806040526004361061039b5760003560e01c80638da5cb5b116101dc578063cab0347111610102578063e665082d116100a0578063f1d5f5171161006f578063f1d5f51714610abd578063f2fde38b14610add578063f84ba65d14610afd578063f872858a14610b1d57600080fd5b8063e665082d14610a47578063ec28438a14610a67578063ef422a1814610a87578063f0cd1dac14610aa757600080fd5b8063dc44b6a0116100dc578063dc44b6a01461099b578063dd62ed3e146109b1578063e5502ff1146109f7578063e5e31b1314610a1757600080fd5b8063cab034711461093f578063d158272d14610955578063da00097d1461097a57600080fd5b8063a83f53a71161017a578063c5d2418911610149578063c5d24189146108c3578063c816841b146108d9578063c8607952146108f9578063c867d60b1461090f57600080fd5b8063a83f53a714610857578063a9059cbb1461086d578063c2d4640e1461088d578063c469b6dd146108ad57600080fd5b8063a073d37f116101b6578063a073d37f146107ec578063a08e671f14610801578063a457c2d714610817578063a5d69d1f1461083757600080fd5b80638da5cb5b146107a4578063914eb66a146107c257806395d89b41146107d757600080fd5b80633ecad271116102c157806361a23c691161025f57806382eefb431161022e57806382eefb4314610728578063844d591c1461073e57806388790a681461075e5780638b42507f1461077457600080fd5b806361a23c69146106b057806370a08231146106c65780637d1db4a5146106fc578063807c2d9c1461071257600080fd5b80635342acb41161029b5780635342acb414610637578063557ed1ba1461066757806357a5802f1461067a5780635881f3ef1461069057600080fd5b80633ecad271146105c65780634a74bb02146105f65780634cb80fd51461061757600080fd5b806323b872dd116103395780632c4b2334116103085780632c4b233414610544578063313ce5671461056457806339509351146105865780633b97084a146105a657600080fd5b806323b872dd146104bb5780632563ae83146104db57806327c8f835146104fb5780632b112e491461052f57600080fd5b80631694505e116103755780631694505e1461043a57806318160ddd1461045a5780631870517a146104795780632198cf6c1461049b57600080fd5b806306fdde03146103a7578063095ea7b3146103d25780631245e3471461040257600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610b3e565b6040516103c991906125ae565b60405180910390f35b3480156103de57600080fd5b506103f26103ed366004612470565b610bd0565b60405190151581526020016103c9565b34801561040e57600080fd5b50600454610422906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b34801561044657600080fd5b50601c54610422906001600160a01b031681565b34801561046657600080fd5b506018545b6040519081526020016103c9565b34801561048557600080fd5b50610499610494366004612510565b610be7565b005b3480156104a757600080fd5b506104996104b636600461243b565b610c45565b3480156104c757600080fd5b506103f26104d63660046123fa565b610c9a565b3480156104e757600080fd5b506104996104f636600461249c565b610d05565b34801561050757600080fd5b506104227f000000000000000000000000000000000000000000000000000000000000000081565b34801561053b57600080fd5b5061046b610d4d565b34801561055057600080fd5b5061049961055f366004612387565b610d97565b34801561057057600080fd5b5060035460405160ff90911681526020016103c9565b34801561059257600080fd5b506103f26105a1366004612470565b610de3565b3480156105b257600080fd5b506104996105c13660046124f7565b610e19565b3480156105d257600080fd5b506103f26105e1366004612387565b600a6020526000908152604090205460ff1681565b34801561060257600080fd5b50601d546103f290600160a81b900460ff1681565b34801561062357600080fd5b50610499610632366004612387565b610e48565b34801561064357600080fd5b506103f2610652366004612387565b60076020526000908152604090205460ff1681565b34801561067357600080fd5b504261046b565b34801561068657600080fd5b5061046b60125481565b34801561069c57600080fd5b506104226106ab366004612387565b610e9a565b3480156106bc57600080fd5b5061046b60135481565b3480156106d257600080fd5b5061046b6106e1366004612387565b6001600160a01b031660009081526005602052604090205490565b34801561070857600080fd5b5061046b60195481565b34801561071e57600080fd5b5061046b601a5481565b34801561073457600080fd5b5061046b60165481565b34801561074a57600080fd5b5061049961075936600461243b565b61122c565b34801561076a57600080fd5b5061046b600f5481565b34801561078057600080fd5b506103f261078f366004612387565b60096020526000908152604090205460ff1681565b3480156107b057600080fd5b506000546001600160a01b0316610422565b3480156107ce57600080fd5b50610499611281565b3480156107e357600080fd5b506103bc6112f5565b3480156107f857600080fd5b50601b5461046b565b34801561080d57600080fd5b5061046b60175481565b34801561082357600080fd5b506103f2610832366004612470565b611304565b34801561084357600080fd5b5061049961085236600461249c565b611353565b34801561086357600080fd5b5061046b60145481565b34801561087957600080fd5b506103f2610888366004612470565b61139b565b34801561089957600080fd5b506104996108a8366004612510565b6113a8565b3480156108b957600080fd5b5061046b600e5481565b3480156108cf57600080fd5b5061046b600d5481565b3480156108e557600080fd5b50601d54610422906001600160a01b031681565b34801561090557600080fd5b5061046b60105481565b34801561091b57600080fd5b506103f261092a366004612387565b60086020526000908152604090205460ff1681565b34801561094b57600080fd5b5061046b60115481565b34801561096157600080fd5b506003546104229061010090046001600160a01b031681565b34801561098657600080fd5b50601d546103f290600160b01b900460ff1681565b3480156109a757600080fd5b5061046b600c5481565b3480156109bd57600080fd5b5061046b6109cc3660046123c1565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610a0357600080fd5b50610499610a12366004612510565b6113f7565b348015610a2357600080fd5b506103f2610a32366004612387565b600b6020526000908152604090205460ff1681565b348015610a5357600080fd5b50610499610a623660046124b7565b611438565b348015610a7357600080fd5b50610499610a823660046124f7565b6114db565b348015610a9357600080fd5b50610499610aa236600461243b565b61150a565b348015610ab357600080fd5b5061046b60155481565b348015610ac957600080fd5b50610499610ad83660046124f7565b61155f565b348015610ae957600080fd5b50610499610af8366004612387565b61158e565b348015610b0957600080fd5b50610499610b1836600461243b565b611678565b348015610b2957600080fd5b50601d546103f290600160b81b900460ff1681565b606060018054610b4d90612705565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7990612705565b8015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b5050505050905090565b6000610bdd33848461172c565b5060015b92915050565b6000546001600160a01b03163314610c1a5760405162461bcd60e51b8152600401610c1190612603565b60405180910390fd5b600c839055600d829055600e819055610c3d81610c3785856116cd565b906116cd565b601555505050565b6000546001600160a01b03163314610c6f5760405162461bcd60e51b8152600401610c1190612603565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000610ca7848484611850565b50610cfa8433610cf585604051806060016040528060288152602001612785602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611c1f565b61172c565b5060015b9392505050565b6000546001600160a01b03163314610d2f5760405162461bcd60e51b8152600401610c1190612603565b601d8054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260056020526040812054601854610d9291611c59565b905090565b6000546001600160a01b03163314610dc15760405162461bcd60e51b8152600401610c1190612603565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610bdd918590610cf590866116cd565b6000546001600160a01b03163314610e435760405162461bcd60e51b8152600401610c1190612603565b601b55565b6000546001600160a01b03163314610e725760405162461bcd60e51b8152600401610c1190612603565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b03163314610ec55760405162461bcd60e51b8152600401610c1190612603565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b91906123a4565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8357600080fd5b505afa158015610f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbb91906123a4565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561100157600080fd5b505afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103991906123a4565b91506001600160a01b0382166111bd57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561108257600080fd5b505afa158015611096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ba91906123a4565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561110257600080fd5b505afa158015611116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113a91906123a4565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561118257600080fd5b505af1158015611196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ba91906123a4565b91505b601d80546001600160a01b03199081166001600160a01b038581169182178455601c8054909316948116949094179091556000908152600860209081526040808320805460ff19908116600190811790925594549095168352600a909152902080549091169091179055919050565b6000546001600160a01b031633146112565760405162461bcd60e51b8152600401610c1190612603565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112ab5760405162461bcd60e51b8152600401610c1190612603565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610b4d90612705565b6000610bdd3384610cf5856040518060600160405280602581526020016127ad602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611c1f565b6000546001600160a01b0316331461137d5760405162461bcd60e51b8152600401610c1190612603565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000610cfa338484611850565b6000546001600160a01b031633146113d25760405162461bcd60e51b8152600401610c1190612603565b6012839055601382905560148190556113ef81610c3785856116cd565b601755505050565b336000908152600b602052604090205460ff1661141357600080fd5b600f8390556010829055601181905561143081610c3785856116cd565b601655505050565b336000908152600b602052604090205460ff1661145457600080fd5b6001600160a01b0381166000908152600560205260408120805484929061147c908490612695565b9091555050601d8054841515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906114ce90851515815260200190565b60405180910390a1505050565b6000546001600160a01b031633146115055760405162461bcd60e51b8152600401610c1190612603565b601955565b6000546001600160a01b031633146115345760405162461bcd60e51b8152600401610c1190612603565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115895760405162461bcd60e51b8152600401610c1190612603565b601a55565b6000546001600160a01b031633146115b85760405162461bcd60e51b8152600401610c1190612603565b6001600160a01b03811661161d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c11565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116a25760405162461bcd60e51b8152600401610c1190612603565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000806116da8385612695565b905083811015610cfe5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c11565b6001600160a01b03831661178e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c11565b6001600160a01b0382166117ef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c11565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166118b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c11565b6001600160a01b0383166119185760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c11565b601d54600160a01b900460ff161561193c57611935848484611c9b565b9050610cfe565b6001600160a01b03841660009081526009602052604090205460ff1615801561197e57506001600160a01b03831660009081526009602052604090205460ff16155b156119e6576019548211156119e65760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c11565b30600090815260056020526040902054601b5481108015908190611a145750601d54600160a01b900460ff16155b8015611a3957506001600160a01b0386166000908152600a602052604090205460ff16155b8015611a4e5750601d54600160a81b900460ff165b15611a7457601d54600160b01b900460ff1615611a6b57601b5491505b611a7482611d81565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260059091529190912054611ac6918690611c1f565b6001600160a01b038716600090815260056020908152604080832093909355600790529081205460ff1680611b1357506001600160a01b03861660009081526007602052604090205460ff165b611b2757611b22878787611ebc565b611b29565b845b601d54909150600160b81b900460ff168015611b5e57506001600160a01b03861660009081526008602052604090205460ff16155b15611b9457601a54611b8982610c37896001600160a01b031660009081526005602052604090205490565b1115611b9457600080fd5b6001600160a01b038616600090815260056020526040902054611bb790826116cd565b6001600160a01b0380881660008181526005602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c0b9085815260200190565b60405180910390a360019350505050610cfe565b60008184841115611c435760405162461bcd60e51b8152600401610c1191906125ae565b506000611c5084866126ee565b95945050505050565b6000610cfe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c1f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611cec918490611c1f565b6001600160a01b038086166000908152600560205260408082209390935590851681522054611d1b90836116cd565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d6f9086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b179055601754601254600091611db791600291611db19182908790611fc2565b90612041565b90506000611dc58383611c59565b9050611dd081612083565b6012544790600090611df090611de7906002612041565b60175490611c59565b90506000611e126002611db184611db160125488611fc290919063ffffffff16565b90506000611e2f83611db160145487611fc290919063ffffffff16565b90506000611e4782611e418786611c59565b90611c59565b90508015611e6a57600354611e6a9061010090046001600160a01b031682612225565b8115611e8657600454611e86906001600160a01b031683612225565b600083118015611e965750600087115b15611ea557611ea58784612260565b5050601d805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600a6020526040812054819060ff1615611f0057611ef96064611db160155486611fc290919063ffffffff16565b9050611f3e565b6001600160a01b0384166000908152600a602052604090205460ff1615611f3e57611f3b6064611db160165486611fc290919063ffffffff16565b90505b8015611fb85730600090815260056020526040902054611f5e90826116cd565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611faf9085815260200190565b60405180910390a35b611c508382611c59565b600082611fd157506000610be1565b6000611fdd83856126cf565b905082611fea85836126ad565b14610cfe5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c11565b6000610cfe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612344565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120b8576120b8612756565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561210c57600080fd5b505afa158015612120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214491906123a4565b8160018151811061215757612157612756565b6001600160a01b039283166020918202929092010152601c5461217d913091168461172c565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906121b6908590600090869030904290600401612659565b600060405180830381600087803b1580156121d057600080fd5b505af11580156121e4573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612219929190612638565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561225b573d6000803e3d6000fd5b505050565b601c546122789030906001600160a01b03168461172c565b601c546001600160a01b031663f305d7198230856000806122a16000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561230457600080fd5b505af1158015612318573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061233d919061253c565b5050505050565b600081836123655760405162461bcd60e51b8152600401610c1191906125ae565b506000611c5084866126ad565b8035801515811461238257600080fd5b919050565b60006020828403121561239957600080fd5b8135610cfe8161276c565b6000602082840312156123b657600080fd5b8151610cfe8161276c565b600080604083850312156123d457600080fd5b82356123df8161276c565b915060208301356123ef8161276c565b809150509250929050565b60008060006060848603121561240f57600080fd5b833561241a8161276c565b9250602084013561242a8161276c565b929592945050506040919091013590565b6000806040838503121561244e57600080fd5b82356124598161276c565b915061246760208401612372565b90509250929050565b6000806040838503121561248357600080fd5b823561248e8161276c565b946020939093013593505050565b6000602082840312156124ae57600080fd5b610cfe82612372565b6000806000606084860312156124cc57600080fd5b6124d584612372565b92506020840135915060408401356124ec8161276c565b809150509250925092565b60006020828403121561250957600080fd5b5035919050565b60008060006060848603121561252557600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561255157600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156125a35781516001600160a01b03168752958201959082019060010161257e565b509495945050505050565b600060208083528351808285015260005b818110156125db578581018301518582016040015282016125bf565b818111156125ed576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612651604083018461256a565b949350505050565b85815284602082015260a06040820152600061267860a083018661256a565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156126a8576126a8612740565b500190565b6000826126ca57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156126e9576126e9612740565b500290565b60008282101561270057612700612740565b500390565b600181811c9082168061271957607f821691505b6020821081141561273a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461278157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122009b64222750a9864a65340734fb622e8af648e45f8253213f97b7a43972ee7e464736f6c63430008070033

Deployed Bytecode

0x60806040526004361061039b5760003560e01c80638da5cb5b116101dc578063cab0347111610102578063e665082d116100a0578063f1d5f5171161006f578063f1d5f51714610abd578063f2fde38b14610add578063f84ba65d14610afd578063f872858a14610b1d57600080fd5b8063e665082d14610a47578063ec28438a14610a67578063ef422a1814610a87578063f0cd1dac14610aa757600080fd5b8063dc44b6a0116100dc578063dc44b6a01461099b578063dd62ed3e146109b1578063e5502ff1146109f7578063e5e31b1314610a1757600080fd5b8063cab034711461093f578063d158272d14610955578063da00097d1461097a57600080fd5b8063a83f53a71161017a578063c5d2418911610149578063c5d24189146108c3578063c816841b146108d9578063c8607952146108f9578063c867d60b1461090f57600080fd5b8063a83f53a714610857578063a9059cbb1461086d578063c2d4640e1461088d578063c469b6dd146108ad57600080fd5b8063a073d37f116101b6578063a073d37f146107ec578063a08e671f14610801578063a457c2d714610817578063a5d69d1f1461083757600080fd5b80638da5cb5b146107a4578063914eb66a146107c257806395d89b41146107d757600080fd5b80633ecad271116102c157806361a23c691161025f57806382eefb431161022e57806382eefb4314610728578063844d591c1461073e57806388790a681461075e5780638b42507f1461077457600080fd5b806361a23c69146106b057806370a08231146106c65780637d1db4a5146106fc578063807c2d9c1461071257600080fd5b80635342acb41161029b5780635342acb414610637578063557ed1ba1461066757806357a5802f1461067a5780635881f3ef1461069057600080fd5b80633ecad271146105c65780634a74bb02146105f65780634cb80fd51461061757600080fd5b806323b872dd116103395780632c4b2334116103085780632c4b233414610544578063313ce5671461056457806339509351146105865780633b97084a146105a657600080fd5b806323b872dd146104bb5780632563ae83146104db57806327c8f835146104fb5780632b112e491461052f57600080fd5b80631694505e116103755780631694505e1461043a57806318160ddd1461045a5780631870517a146104795780632198cf6c1461049b57600080fd5b806306fdde03146103a7578063095ea7b3146103d25780631245e3471461040257600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610b3e565b6040516103c991906125ae565b60405180910390f35b3480156103de57600080fd5b506103f26103ed366004612470565b610bd0565b60405190151581526020016103c9565b34801561040e57600080fd5b50600454610422906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b34801561044657600080fd5b50601c54610422906001600160a01b031681565b34801561046657600080fd5b506018545b6040519081526020016103c9565b34801561048557600080fd5b50610499610494366004612510565b610be7565b005b3480156104a757600080fd5b506104996104b636600461243b565b610c45565b3480156104c757600080fd5b506103f26104d63660046123fa565b610c9a565b3480156104e757600080fd5b506104996104f636600461249c565b610d05565b34801561050757600080fd5b506104227f000000000000000000000000000000000000000000000000000000000000dead81565b34801561053b57600080fd5b5061046b610d4d565b34801561055057600080fd5b5061049961055f366004612387565b610d97565b34801561057057600080fd5b5060035460405160ff90911681526020016103c9565b34801561059257600080fd5b506103f26105a1366004612470565b610de3565b3480156105b257600080fd5b506104996105c13660046124f7565b610e19565b3480156105d257600080fd5b506103f26105e1366004612387565b600a6020526000908152604090205460ff1681565b34801561060257600080fd5b50601d546103f290600160a81b900460ff1681565b34801561062357600080fd5b50610499610632366004612387565b610e48565b34801561064357600080fd5b506103f2610652366004612387565b60076020526000908152604090205460ff1681565b34801561067357600080fd5b504261046b565b34801561068657600080fd5b5061046b60125481565b34801561069c57600080fd5b506104226106ab366004612387565b610e9a565b3480156106bc57600080fd5b5061046b60135481565b3480156106d257600080fd5b5061046b6106e1366004612387565b6001600160a01b031660009081526005602052604090205490565b34801561070857600080fd5b5061046b60195481565b34801561071e57600080fd5b5061046b601a5481565b34801561073457600080fd5b5061046b60165481565b34801561074a57600080fd5b5061049961075936600461243b565b61122c565b34801561076a57600080fd5b5061046b600f5481565b34801561078057600080fd5b506103f261078f366004612387565b60096020526000908152604090205460ff1681565b3480156107b057600080fd5b506000546001600160a01b0316610422565b3480156107ce57600080fd5b50610499611281565b3480156107e357600080fd5b506103bc6112f5565b3480156107f857600080fd5b50601b5461046b565b34801561080d57600080fd5b5061046b60175481565b34801561082357600080fd5b506103f2610832366004612470565b611304565b34801561084357600080fd5b5061049961085236600461249c565b611353565b34801561086357600080fd5b5061046b60145481565b34801561087957600080fd5b506103f2610888366004612470565b61139b565b34801561089957600080fd5b506104996108a8366004612510565b6113a8565b3480156108b957600080fd5b5061046b600e5481565b3480156108cf57600080fd5b5061046b600d5481565b3480156108e557600080fd5b50601d54610422906001600160a01b031681565b34801561090557600080fd5b5061046b60105481565b34801561091b57600080fd5b506103f261092a366004612387565b60086020526000908152604090205460ff1681565b34801561094b57600080fd5b5061046b60115481565b34801561096157600080fd5b506003546104229061010090046001600160a01b031681565b34801561098657600080fd5b50601d546103f290600160b01b900460ff1681565b3480156109a757600080fd5b5061046b600c5481565b3480156109bd57600080fd5b5061046b6109cc3660046123c1565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b348015610a0357600080fd5b50610499610a12366004612510565b6113f7565b348015610a2357600080fd5b506103f2610a32366004612387565b600b6020526000908152604090205460ff1681565b348015610a5357600080fd5b50610499610a623660046124b7565b611438565b348015610a7357600080fd5b50610499610a823660046124f7565b6114db565b348015610a9357600080fd5b50610499610aa236600461243b565b61150a565b348015610ab357600080fd5b5061046b60155481565b348015610ac957600080fd5b50610499610ad83660046124f7565b61155f565b348015610ae957600080fd5b50610499610af8366004612387565b61158e565b348015610b0957600080fd5b50610499610b1836600461243b565b611678565b348015610b2957600080fd5b50601d546103f290600160b81b900460ff1681565b606060018054610b4d90612705565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7990612705565b8015610bc65780601f10610b9b57610100808354040283529160200191610bc6565b820191906000526020600020905b815481529060010190602001808311610ba957829003601f168201915b5050505050905090565b6000610bdd33848461172c565b5060015b92915050565b6000546001600160a01b03163314610c1a5760405162461bcd60e51b8152600401610c1190612603565b60405180910390fd5b600c839055600d829055600e819055610c3d81610c3785856116cd565b906116cd565b601555505050565b6000546001600160a01b03163314610c6f5760405162461bcd60e51b8152600401610c1190612603565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000610ca7848484611850565b50610cfa8433610cf585604051806060016040528060288152602001612785602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190611c1f565b61172c565b5060015b9392505050565b6000546001600160a01b03163314610d2f5760405162461bcd60e51b8152600401610c1190612603565b601d8054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260056020526040812054601854610d9291611c59565b905090565b6000546001600160a01b03163314610dc15760405162461bcd60e51b8152600401610c1190612603565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526006602090815260408083206001600160a01b03871684529091528120549091610bdd918590610cf590866116cd565b6000546001600160a01b03163314610e435760405162461bcd60e51b8152600401610c1190612603565b601b55565b6000546001600160a01b03163314610e725760405162461bcd60e51b8152600401610c1190612603565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b03163314610ec55760405162461bcd60e51b8152600401610c1190612603565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3b91906123a4565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8357600080fd5b505afa158015610f97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbb91906123a4565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561100157600080fd5b505afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103991906123a4565b91506001600160a01b0382166111bd57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561108257600080fd5b505afa158015611096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ba91906123a4565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561110257600080fd5b505afa158015611116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113a91906123a4565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561118257600080fd5b505af1158015611196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ba91906123a4565b91505b601d80546001600160a01b03199081166001600160a01b038581169182178455601c8054909316948116949094179091556000908152600860209081526040808320805460ff19908116600190811790925594549095168352600a909152902080549091169091179055919050565b6000546001600160a01b031633146112565760405162461bcd60e51b8152600401610c1190612603565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146112ab5760405162461bcd60e51b8152600401610c1190612603565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060028054610b4d90612705565b6000610bdd3384610cf5856040518060600160405280602581526020016127ad602591393360009081526006602090815260408083206001600160a01b038d1684529091529020549190611c1f565b6000546001600160a01b0316331461137d5760405162461bcd60e51b8152600401610c1190612603565b601d8054911515600160b01b0260ff60b01b19909216919091179055565b6000610cfa338484611850565b6000546001600160a01b031633146113d25760405162461bcd60e51b8152600401610c1190612603565b6012839055601382905560148190556113ef81610c3785856116cd565b601755505050565b336000908152600b602052604090205460ff1661141357600080fd5b600f8390556010829055601181905561143081610c3785856116cd565b601655505050565b336000908152600b602052604090205460ff1661145457600080fd5b6001600160a01b0381166000908152600560205260408120805484929061147c908490612695565b9091555050601d8054841515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159906114ce90851515815260200190565b60405180910390a1505050565b6000546001600160a01b031633146115055760405162461bcd60e51b8152600401610c1190612603565b601955565b6000546001600160a01b031633146115345760405162461bcd60e51b8152600401610c1190612603565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115895760405162461bcd60e51b8152600401610c1190612603565b601a55565b6000546001600160a01b031633146115b85760405162461bcd60e51b8152600401610c1190612603565b6001600160a01b03811661161d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c11565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116a25760405162461bcd60e51b8152600401610c1190612603565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000806116da8385612695565b905083811015610cfe5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c11565b6001600160a01b03831661178e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c11565b6001600160a01b0382166117ef5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c11565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166118b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c11565b6001600160a01b0383166119185760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c11565b601d54600160a01b900460ff161561193c57611935848484611c9b565b9050610cfe565b6001600160a01b03841660009081526009602052604090205460ff1615801561197e57506001600160a01b03831660009081526009602052604090205460ff16155b156119e6576019548211156119e65760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c11565b30600090815260056020526040902054601b5481108015908190611a145750601d54600160a01b900460ff16155b8015611a3957506001600160a01b0386166000908152600a602052604090205460ff16155b8015611a4e5750601d54600160a81b900460ff165b15611a7457601d54600160b01b900460ff1615611a6b57601b5491505b611a7482611d81565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260059091529190912054611ac6918690611c1f565b6001600160a01b038716600090815260056020908152604080832093909355600790529081205460ff1680611b1357506001600160a01b03861660009081526007602052604090205460ff165b611b2757611b22878787611ebc565b611b29565b845b601d54909150600160b81b900460ff168015611b5e57506001600160a01b03861660009081526008602052604090205460ff16155b15611b9457601a54611b8982610c37896001600160a01b031660009081526005602052604090205490565b1115611b9457600080fd5b6001600160a01b038616600090815260056020526040902054611bb790826116cd565b6001600160a01b0380881660008181526005602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c0b9085815260200190565b60405180910390a360019350505050610cfe565b60008184841115611c435760405162461bcd60e51b8152600401610c1191906125ae565b506000611c5084866126ee565b95945050505050565b6000610cfe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c1f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054611cec918490611c1f565b6001600160a01b038086166000908152600560205260408082209390935590851681522054611d1b90836116cd565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d6f9086815260200190565b60405180910390a35060019392505050565b601d805460ff60a01b1916600160a01b179055601754601254600091611db791600291611db19182908790611fc2565b90612041565b90506000611dc58383611c59565b9050611dd081612083565b6012544790600090611df090611de7906002612041565b60175490611c59565b90506000611e126002611db184611db160125488611fc290919063ffffffff16565b90506000611e2f83611db160145487611fc290919063ffffffff16565b90506000611e4782611e418786611c59565b90611c59565b90508015611e6a57600354611e6a9061010090046001600160a01b031682612225565b8115611e8657600454611e86906001600160a01b031683612225565b600083118015611e965750600087115b15611ea557611ea58784612260565b5050601d805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600a6020526040812054819060ff1615611f0057611ef96064611db160155486611fc290919063ffffffff16565b9050611f3e565b6001600160a01b0384166000908152600a602052604090205460ff1615611f3e57611f3b6064611db160165486611fc290919063ffffffff16565b90505b8015611fb85730600090815260056020526040902054611f5e90826116cd565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611faf9085815260200190565b60405180910390a35b611c508382611c59565b600082611fd157506000610be1565b6000611fdd83856126cf565b905082611fea85836126ad565b14610cfe5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c11565b6000610cfe83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612344565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120b8576120b8612756565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561210c57600080fd5b505afa158015612120573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214491906123a4565b8160018151811061215757612157612756565b6001600160a01b039283166020918202929092010152601c5461217d913091168461172c565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906121b6908590600090869030904290600401612659565b600060405180830381600087803b1580156121d057600080fd5b505af11580156121e4573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612219929190612638565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f1935050505015801561225b573d6000803e3d6000fd5b505050565b601c546122789030906001600160a01b03168461172c565b601c546001600160a01b031663f305d7198230856000806122a16000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561230457600080fd5b505af1158015612318573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061233d919061253c565b5050505050565b600081836123655760405162461bcd60e51b8152600401610c1191906125ae565b506000611c5084866126ad565b8035801515811461238257600080fd5b919050565b60006020828403121561239957600080fd5b8135610cfe8161276c565b6000602082840312156123b657600080fd5b8151610cfe8161276c565b600080604083850312156123d457600080fd5b82356123df8161276c565b915060208301356123ef8161276c565b809150509250929050565b60008060006060848603121561240f57600080fd5b833561241a8161276c565b9250602084013561242a8161276c565b929592945050506040919091013590565b6000806040838503121561244e57600080fd5b82356124598161276c565b915061246760208401612372565b90509250929050565b6000806040838503121561248357600080fd5b823561248e8161276c565b946020939093013593505050565b6000602082840312156124ae57600080fd5b610cfe82612372565b6000806000606084860312156124cc57600080fd5b6124d584612372565b92506020840135915060408401356124ec8161276c565b809150509250925092565b60006020828403121561250957600080fd5b5035919050565b60008060006060848603121561252557600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561255157600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b838110156125a35781516001600160a01b03168752958201959082019060010161257e565b509495945050505050565b600060208083528351808285015260005b818110156125db578581018301518582016040015282016125bf565b818111156125ed576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612651604083018461256a565b949350505050565b85815284602082015260a06040820152600061267860a083018661256a565b6001600160a01b0394909416606083015250608001529392505050565b600082198211156126a8576126a8612740565b500190565b6000826126ca57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156126e9576126e9612740565b500290565b60008282101561270057612700612740565b500390565b600181811c9082168061271957607f821691505b6020821081141561273a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461278157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122009b64222750a9864a65340734fb622e8af648e45f8253213f97b7a43972ee7e464736f6c63430008070033

Deployed Bytecode Sourcemap

13766:14629:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17581:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18875:161;;;;;;;;;;-1:-1:-1;18875:161:0;;;;;:::i;:::-;;:::i;:::-;;;5555:14:1;;5548:22;5530:41;;5518:2;5503:18;18875:161:0;5390:187:1;14063:40:0;;;;;;;;;;-1:-1:-1;14063:40:0;;;;-1:-1:-1;;;;;14063:40:0;;;;;;-1:-1:-1;;;;;4201:32:1;;;4183:51;;4171:2;4156:18;14063:40:0;4037:203:1;15377:41:0;;;;;;;;;;-1:-1:-1;15377:41:0;;;;-1:-1:-1;;;;;15377:41:0;;;17858:100;;;;;;;;;;-1:-1:-1;17938:12:0;;17858:100;;;10118:25:1;;;10106:2;10091:18;17858:100:0;9972:177:1;19809:333:0;;;;;;;;;;-1:-1:-1;19809:333:0;;;;;:::i;:::-;;:::i;:::-;;21132:135;;;;;;;;;;-1:-1:-1;21132:135:0;;;;;:::i;:::-;;:::i;23414:313::-;;;;;;;;;;-1:-1:-1;23414:313:0;;;;;:::i;:::-;;:::i;21011:113::-;;;;;;;;;;-1:-1:-1;21011:113:0;;;;;:::i;:::-;;:::i;14110:81::-;;;;;;;;;;;;;;;22187:128;;;;;;;;;;;;;:::i;21664:129::-;;;;;;;;;;-1:-1:-1;21664:129:0;;;;;:::i;:::-;;:::i;17767:83::-;;;;;;;;;;-1:-1:-1;17833:9:0;;17767:83;;17833:9;;;;11220:36:1;;11208:2;11193:18;17767:83:0;11078:184:1;18244:218:0;;;;;;;;;;-1:-1:-1;18244:218:0;;;;;:::i;:::-;;:::i;21385:124::-;;;;;;;;;;-1:-1:-1;21385:124:0;;;;;:::i;:::-;;:::i;14492:45::-;;;;;;;;;;-1:-1:-1;14492:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15492:40;;;;;;;;;;-1:-1:-1;15492:40:0;;;;-1:-1:-1;;;15492:40:0;;;;;;21517:139;;;;;;;;;;-1:-1:-1;21517:139:0;;;;;:::i;:::-;;:::i;14321:50::-;;;;;;;;;;-1:-1:-1;14321:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5843:90;;;;;;;;;;-1:-1:-1;5910:15:0;5843:90;;14845:34;;;;;;;;;;;;;;;;22461:735;;;;;;;;;;-1:-1:-1;22461:735:0;;;;;:::i;:::-;;:::i;14886:34::-;;;;;;;;;;;;;;;;17966:119;;;;;;;;;;-1:-1:-1;17966:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;18059:18:0;18032:7;18059:18;;;:9;:18;;;;;;;17966:119;15173:59;;;;;;;;;;;;;;;;15240:57;;;;;;;;;;;;;;;;15008:37;;;;;;;;;;;;;;;;19389:129;;;;;;;;;;-1:-1:-1;19389:129:0;;;;;:::i;:::-;;:::i;14719:36::-;;;;;;;;;;;;;;;;14437:48;;;;;;;;;;-1:-1:-1;14437:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5224:79;;;;;;;;;;-1:-1:-1;5262:7:0;5289:6;-1:-1:-1;;;;;5289:6:0;5224:79;;5434:145;;;;;;;;;;;;;:::i;17672:87::-;;;;;;;;;;;;;:::i;18747:120::-;;;;;;;;;;-1:-1:-1;18836:23:0;;18747:120;;15052:43;;;;;;;;;;;;;;;;18470:269;;;;;;;;;;-1:-1:-1;18470:269:0;;;;;:::i;:::-;;:::i;22050:125::-;;;;;;;;;;-1:-1:-1;22050:125:0;;;;;:::i;:::-;;:::i;14927:29::-;;;;;;;;;;;;;;;;23239:167;;;;;;;;;;-1:-1:-1;23239:167:0;;;;;:::i;:::-;;:::i;20522:358::-;;;;;;;;;;-1:-1:-1;20522:358:0;;;;;:::i;:::-;;:::i;14676:30::-;;;;;;;;;;;;;;;;14634:35;;;;;;;;;;;;;;;;15425:26;;;;;;;;;;-1:-1:-1;15425:26:0;;;;-1:-1:-1;;;;;15425:26:0;;;14762:36;;;;;;;;;;;;;;;;14378:52;;;;;;;;;;-1:-1:-1;14378:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14805:31;;;;;;;;;;;;;;;;14011:45;;;;;;;;;;-1:-1:-1;14011:45:0;;;;;;;-1:-1:-1;;;;;14011:45:0;;;15539;;;;;;;;;;-1:-1:-1;15539:45:0;;;;-1:-1:-1;;;15539:45:0;;;;;;14592:35;;;;;;;;;;;;;;;;18093:143;;;;;;;;;;-1:-1:-1;18093:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18201:18:0;;;18174:7;18201:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18093:143;20150:360;;;;;;;;;;-1:-1:-1;20150:360:0;;;;;:::i;:::-;;:::i;14544:39::-;;;;;;;;;;-1:-1:-1;14544:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21801:241;;;;;;;;;;-1:-1:-1;21801:241:0;;;;;:::i;:::-;;:::i;20892:111::-;;;;;;;;;;-1:-1:-1;20892:111:0;;;;;:::i;:::-;;:::i;19666:135::-;;;;;;;;;;-1:-1:-1;19666:135:0;;;;;:::i;:::-;;:::i;14965:36::-;;;;;;;;;;;;;;;;21275:102;;;;;;;;;;-1:-1:-1;21275:102:0;;;;;:::i;:::-;;:::i;5587:244::-;;;;;;;;;;-1:-1:-1;5587:244:0;;;;;:::i;:::-;;:::i;19526:128::-;;;;;;;;;;-1:-1:-1;19526:128:0;;;;;:::i;:::-;;:::i;15591:35::-;;;;;;;;;;-1:-1:-1;15591:35:0;;;;-1:-1:-1;;;15591:35:0;;;;;;17581:83;17618:13;17651:5;17644:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17581:83;:::o;18875:161::-;18950:4;18967:39;309:10;18990:7;18999:6;18967:8;:39::i;:::-;-1:-1:-1;19024:4:0;18875:161;;;;;:::o;19809:333::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;;;;;;;;;19932:16:::1;:34:::0;;;19977:16:::1;:34:::0;;;20022:11:::1;:24:::0;;;20079:55:::1;20036:10:::0;20079:38:::1;19951:15:::0;19996;20079:20:::1;:38::i;:::-;:42:::0;::::1;:55::i;:::-;20059:17;:75:::0;-1:-1:-1;;;19809:333:0:o;21132:135::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21223:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;21223:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21132:135::o;23414:313::-;23512:4;23529:36;23539:6;23547:9;23558:6;23529:9;:36::i;:::-;-1:-1:-1;23576:121:0;23585:6;309:10;23607:89;23645:6;23607:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23607:19:0;;;;;;:11;:19;;;;;;;;309:10;23607:33;;;;;;;;;;:37;:89::i;:::-;23576:8;:121::i;:::-;-1:-1:-1;23715:4:0;23414:313;;;;;;:::o;21011:113::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;21089:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;21089:27:0::1;-1:-1:-1::0;;;;21089:27:0;;::::1;::::0;;;::::1;::::0;;21011:113::o;22187:128::-;22294:11;-1:-1:-1;;;;;18059:18:0;22240:7;18059:18;;;:9;:18;;;;;;22267:12;;:40;;:16;:40::i;:::-;22260:47;;22187:128;:::o;21664:129::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;21746:17:::1;:39:::0;;-1:-1:-1;;;;;;21746:39:0::1;-1:-1:-1::0;;;;;21746:39:0;;;::::1;::::0;;;::::1;::::0;;21664:129::o;18244:218::-;309:10;18332:4;18381:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18381:34:0;;;;;;;;;;18332:4;;18349:83;;18372:7;;18381:50;;18420:10;18381:38;:50::i;21385:124::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;21467:23:::1;:34:::0;21385:124::o;21517:139::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;21604:22:::1;:44:::0;;-1:-1:-1;;;;;21604:44:0;;::::1;;;-1:-1:-1::0;;;;;;21604:44:0;;::::1;::::0;;;::::1;::::0;;21517:139::o;22461:735::-;22541:22;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;22578:35:::1;22635:16;22578:74;;22701:16;-1:-1:-1::0;;;;;22701:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22683:53:0::1;;22745:4;22752:16;-1:-1:-1::0;;;;;22752:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22683:93;::::0;-1:-1:-1;;;;;;22683:93:0::1;::::0;;;;;;-1:-1:-1;;;;;4699:15:1;;;22683:93:0::1;::::0;::::1;4681:34:1::0;4751:15;;4731:18;;;4724:43;4616:18;;22683:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22666:110:::0;-1:-1:-1;;;;;;22792:28:0;::::1;22789:200;;22881:16;-1:-1:-1::0;;;;;22881:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22863:74:0::1;;22946:4;22953:16;-1:-1:-1::0;;;;;22953:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22863:114;::::0;-1:-1:-1;;;;;;22863:114:0::1;::::0;;;;;;-1:-1:-1;;;;;4699:15:1;;;22863:114:0::1;::::0;::::1;4681:34:1::0;4751:15;;4731:18;;;4724:43;4616:18;;22863:114:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22846:131;;22789:200;23001:11;:28:::0;;-1:-1:-1;;;;;;23001:28:0;;::::1;-1:-1:-1::0;;;;;23001:28:0;;::::1;::::0;;::::1;::::0;;23040:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;23088:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;23088:48:0;;::::1;-1:-1:-1::0;23088:48:0;;::::1;::::0;;;23168:11;;;;::::1;23147:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;23001:28;23015:14;-1:-1:-1;22461:735:0:o;19389:129::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19478:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;19478:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19389:129::o;5434:145::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;5538:1:::1;5522:6:::0;;5501:40:::1;::::0;-1:-1:-1;;;;;5522:6:0;;::::1;::::0;5501:40:::1;::::0;5538:1;;5501:40:::1;5569:1;5552:19:::0;;-1:-1:-1;;;;;;5552:19:0::1;::::0;;5434:145::o;17672:87::-;17711:13;17744:7;17737:14;;;;;:::i;18470:269::-;18563:4;18580:129;309:10;18603:7;18612:96;18651:15;18612:96;;;;;;;;;;;;;;;;;309:10;18612:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18612:34:0;;;;;;;;;;;;:38;:96::i;22050:125::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;22131:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;22131:36:0::1;-1:-1:-1::0;;;;22131:36:0;;::::1;::::0;;;::::1;::::0;;22050:125::o;23239:167::-;23317:4;23334:42;309:10;23358:9;23369:6;23334:9;:42::i;20522:358::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;20663:15:::1;:35:::0;;;20709:15:::1;:35:::0;;;20755:10:::1;:25:::0;;;20820:52:::1;20768:12:::0;20820:36:::1;20681:17:::0;20727;20820:19:::1;:36::i;:52::-;20793:24;:79:::0;-1:-1:-1;;;20522:358:0:o;20150:360::-;309:10;20261:20;;;;:6;:20;;;;;;;;20253:29;;;;;;20293:17;:35;;;20339:17;:35;;;20385:12;:25;;;20444:58;20400:10;20444:40;20313:15;20359;20444:21;:40::i;:58::-;20423:18;:79;-1:-1:-1;;;20150:360:0:o;21801:241::-;309:10;21892:20;;;;:6;:20;;;;;;;;21884:29;;;;;;-1:-1:-1;;;;;21914:17:0;;;;;;:9;:17;;;;;:23;;21935:2;;21914:17;:23;;21935:2;;21914:23;:::i;:::-;;;;-1:-1:-1;;21948:21:0;:32;;;;;-1:-1:-1;;;21948:32:0;-1:-1:-1;;;;21948:32:0;;;;;;21996:38;;;;;;21972:8;5555:14:1;5548:22;5530:41;;5518:2;5503:18;;5390:187;21996:38:0;;;;;;;;21801:241;;;:::o;20892:111::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;20969:12:::1;:26:::0;20892:111::o;19666:135::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19756:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;19756:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19666:135::o;21275:102::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;21347:10:::1;:22:::0;21275:102::o;5587:244::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5676:22:0;::::1;5668:73;;;::::0;-1:-1:-1;;;5668:73:0;;7025:2:1;5668:73:0::1;::::0;::::1;7007:21:1::0;7064:2;7044:18;;;7037:30;7103:34;7083:18;;;7076:62;-1:-1:-1;;;7154:18:1;;;7147:36;7200:19;;5668:73:0::1;6823:402:1::0;5668:73:0::1;5778:6;::::0;;5757:38:::1;::::0;-1:-1:-1;;;;;5757:38:0;;::::1;::::0;5778:6;::::1;::::0;5757:38:::1;::::0;::::1;5806:6;:17:::0;;-1:-1:-1;;;;;;5806:17:0::1;-1:-1:-1::0;;;;;5806:17:0;;;::::1;::::0;;;::::1;::::0;;5587:244::o;19526:128::-;5349:6;;-1:-1:-1;;;;;5349:6:0;309:10;5349:22;5341:67;;;;-1:-1:-1;;;5341:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19614:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;19614:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19526:128::o;1158:181::-;1216:7;;1248:5;1252:1;1248;:5;:::i;:::-;1236:17;;1277:1;1272;:6;;1264:46;;;;-1:-1:-1;;;1264:46:0;;7835:2:1;1264:46:0;;;7817:21:1;7874:2;7854:18;;;7847:30;7913:29;7893:18;;;7886:57;7960:18;;1264:46:0;7633:351:1;19044:337:0;-1:-1:-1;;;;;19137:19:0;;19129:68;;;;-1:-1:-1;;;19129:68:0;;9769:2:1;19129:68:0;;;9751:21:1;9808:2;9788:18;;;9781:30;9847:34;9827:18;;;9820:62;-1:-1:-1;;;9898:18:1;;;9891:34;9942:19;;19129:68:0;9567:400:1;19129:68:0;-1:-1:-1;;;;;19216:21:0;;19208:68;;;;-1:-1:-1;;;19208:68:0;;7432:2:1;19208:68:0;;;7414:21:1;7471:2;7451:18;;;7444:30;7510:34;7490:18;;;7483:62;-1:-1:-1;;;7561:18:1;;;7554:32;7603:19;;19208:68:0;7230:398:1;19208:68:0;-1:-1:-1;;;;;19289:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19341:32;;10118:25:1;;;19341:32:0;;10091:18:1;19341:32:0;;;;;;;19044:337;;;:::o;23735:1707::-;23822:4;-1:-1:-1;;;;;23849:20:0;;23841:70;;;;-1:-1:-1;;;23841:70:0;;9363:2:1;23841:70:0;;;9345:21:1;9402:2;9382:18;;;9375:30;9441:34;9421:18;;;9414:62;-1:-1:-1;;;9492:18:1;;;9485:35;9537:19;;23841:70:0;9161:401:1;23841:70:0;-1:-1:-1;;;;;23930:23:0;;23922:71;;;;-1:-1:-1;;;23922:71:0;;6621:2:1;23922:71:0;;;6603:21:1;6660:2;6640:18;;;6633:30;6699:34;6679:18;;;6672:62;-1:-1:-1;;;6750:18:1;;;6743:33;6793:19;;23922:71:0;6419:399:1;23922:71:0;24009:16;;-1:-1:-1;;;24009:16:0;;;;24006:1429;;;24059:41;24074:6;24082:9;24093:6;24059:14;:41::i;:::-;24052:48;;;;24006:1429;-1:-1:-1;;;;;24156:23:0;;;;;;:15;:23;;;;;;;;24155:24;:55;;;;-1:-1:-1;;;;;;24184:26:0;;;;;;:15;:26;;;;;;;;24183:27;24155:55;24152:170;;;24249:12;;24239:6;:22;;24231:75;;;;-1:-1:-1;;;24231:75:0;;8191:2:1;24231:75:0;;;8173:21:1;8230:2;8210:18;;;8203:30;8269:34;8249:18;;;8242:62;-1:-1:-1;;;8320:18:1;;;8313:38;8368:19;;24231:75:0;7989:404:1;24231:75:0;24399:4;24350:28;18059:18;;;:9;:18;;;;;;24475:23;;24451:47;;;;;;;24531:44;;-1:-1:-1;24559:16:0;;-1:-1:-1;;;24559:16:0;;;;24558:17;24531:44;:69;;;;-1:-1:-1;;;;;;24580:20:0;;;;;;:12;:20;;;;;;;;24579:21;24531:69;:94;;;;-1:-1:-1;24604:21:0;;-1:-1:-1;;;24604:21:0;;;;24531:94;24527:305;;;24663:25;;-1:-1:-1;;;24663:25:0;;;;24660:97;;;24734:23;;24711:46;;24660:97;24776:36;24791:20;24776:14;:36::i;:::-;24868:53;;;;;;;;;;;-1:-1:-1;;;24868:53:0;;;;;;;;-1:-1:-1;;;;;24868:17:0;;-1:-1:-1;24868:17:0;;;:9;:17;;;;;;;;:53;;24890:6;;24868:21;:53::i;:::-;-1:-1:-1;;;;;24848:17:0;;;;;;:9;:17;;;;;;;;:73;;;;24961:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;24990:28:0;;;;;;:17;:28;;;;;;;;24961:57;24960:148;;25074:34;25082:6;25090:9;25101:6;25074:7;:34::i;:::-;24960:148;;;25065:6;24960:148;25128:16;;24938:170;;-1:-1:-1;;;;25128:16:0;;;;:51;;;;-1:-1:-1;;;;;;25149:30:0;;;;;;:19;:30;;;;;;;;25148:31;25128:51;25125:133;;;25247:10;;25206:37;25231:11;25206:20;25216:9;-1:-1:-1;;;;;18059:18:0;18032:7;18059:18;;;:9;:18;;;;;;;17966:119;25206:37;:51;;25198:60;;;;;;-1:-1:-1;;;;;25298:20:0;;;;;;:9;:20;;;;;;:37;;25323:11;25298:24;:37::i;:::-;-1:-1:-1;;;;;25275:20:0;;;;;;;:9;:20;;;;;;;:60;;;;25357:40;;;;;;;;;;25385:11;10118:25:1;;10106:2;10091:18;;9972:177;25357:40:0;;;;;;;;25419:4;25412:11;;;;;;;1491:192;1577:7;1613:12;1605:6;;;;1597:29;;;;-1:-1:-1;;;1597:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1637:9:0;1649:5;1653:1;1649;:5;:::i;:::-;1637:17;1491:192;-1:-1:-1;;;;;1491:192:0:o;1347:136::-;1405:7;1432:43;1436:1;1439;1432:43;;;;;;;;;;;;;;;;;:3;:43::i;25450:330::-;25580:53;;;;;;;;;;;-1:-1:-1;;;25580:53:0;;;;;;;;-1:-1:-1;;;;;25580:17:0;;25543:4;25580:17;;;:9;:17;;;;;;;:53;;25602:6;;25580:21;:53::i;:::-;-1:-1:-1;;;;;25560:17:0;;;;;;;:9;:17;;;;;;:73;;;;25667:20;;;;;;;:32;;25692:6;25667:24;:32::i;:::-;-1:-1:-1;;;;;25644:20:0;;;;;;;:9;:20;;;;;;;:55;;;;25715:35;;;;;;;;;;25743:6;10118:25:1;;10106:2;10091:18;;9972:177;25715:35:0;;;;;;;;-1:-1:-1;25768:4:0;25450:330;;;;;:::o;25788:1048::-;16049:16;:23;;-1:-1:-1;;;;16049:23:0;-1:-1:-1;;;16049:23:0;;;25925:24:::1;::::0;25904:15:::1;::::0;16049:23;;25892:65:::1;::::0;25955:1:::1;::::0;25892:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;25870:87:::0;-1:-1:-1;25968:21:0::1;25992:24;:7:::0;25870:87;25992:11:::1;:24::i;:::-;25968:48;;26029:31;26046:13;26029:16;:31::i;:::-;26181:15;::::0;26096:21:::1;::::0;26071:22:::1;::::0;26152:52:::1;::::0;26181:22:::1;::::0;26201:1:::1;26181:19;:22::i;:::-;26152:24;::::0;;:28:::1;:52::i;:::-;26130:74;;26225:26;26254:59;26311:1;26254:52;26294:11;26254:35;26273:15;;26254:14;:18;;:35;;;;:::i;:59::-;26225:88;;26324:21;26348:47;26383:11;26348:30;26367:10;;26348:14;:18;;:30;;;;:::i;:47::-;26324:71:::0;-1:-1:-1;26406:26:0::1;26435:57;26324:71:::0;26435:38:::1;:14:::0;26454:18;26435::::1;:38::i;:::-;:42:::0;::::1;:57::i;:::-;26406:86:::0;-1:-1:-1;26508:22:0;;26505:104:::1;;26566:22;::::0;26545:64:::1;::::0;26566:22:::1;::::0;::::1;-1:-1:-1::0;;;;;26566:22:0::1;26590:18:::0;26545:20:::1;:64::i;:::-;26625:17:::0;;26622:89:::1;;26678:17;::::0;26657:54:::1;::::0;-1:-1:-1;;;;;26678:17:0::1;26697:13:::0;26657:20:::1;:54::i;:::-;26748:1;26727:18;:22;:41;;;;;26767:1;26753:11;:15;26727:41;26724:104;;;26783:45;26796:11;26809:18;26783:12;:45::i;:::-;-1:-1:-1::0;;16095:16:0;:24;;-1:-1:-1;;;;16095:24:0;;;-1:-1:-1;;;;;;25788:1048:0:o;27764:622::-;-1:-1:-1;;;;;27925:20:0;;27850:7;27925:20;;;:12;:20;;;;;;27850:7;;27925:20;;27922:223;;;27974:38;28008:3;27974:29;27985:17;;27974:6;:10;;:29;;;;:::i;:38::-;27962:50;;27922:223;;;-1:-1:-1;;;;;28042:23:0;;;;;;:12;:23;;;;;;;;28039:106;;;28094:39;28129:3;28094:30;28105:18;;28094:6;:10;;:30;;;;:::i;:39::-;28082:51;;28039:106;28168:13;;28165:173;;28243:4;28225:24;;;;:9;:24;;;;;;:39;;28254:9;28225:28;:39::i;:::-;28216:4;28198:24;;;;:9;:24;;;;;;;:66;;;;28284:42;;-1:-1:-1;;;;;28284:42:0;;;;;;;28316:9;10118:25:1;;10106:2;10091:18;;9972:177;28284:42:0;;;;;;;;28165:173;28357:21;:6;28368:9;28357:10;:21::i;1689:248::-;1747:7;1771:6;1767:47;;-1:-1:-1;1801:1:0;1794:8;;1767:47;1824:9;1836:5;1840:1;1836;:5;:::i;:::-;1824:17;-1:-1:-1;1869:1:0;1860:5;1864:1;1824:17;1860:5;:::i;:::-;:10;1852:56;;;;-1:-1:-1;;;1852:56:0;;8600:2:1;1852:56:0;;;8582:21:1;8639:2;8619:18;;;8612:30;8678:34;8658:18;;;8651:62;-1:-1:-1;;;8729:18:1;;;8722:31;8770:19;;1852:56:0;8398:397:1;1945:132:0;2003:7;2030:39;2034:1;2037;2030:39;;;;;;;;;;;;;;;;;:3;:39::i;26850:537::-;26940:16;;;26954:1;26940:16;;;;;;;;26916:21;;26940:16;;;;;;;;;;-1:-1:-1;26940:16:0;26916:40;;26985:4;26967;26972:1;26967:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26967:23:0;;;:7;;;;;;;;;;:23;;;;27011:15;;:22;;;-1:-1:-1;;;27011:22:0;;;;:15;;;;;:20;;:22;;;;;26967:7;;27011:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27001:4;27006:1;27001:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27001:32:0;;;:7;;;;;;;;;:32;27078:15;;27046:62;;27063:4;;27078:15;27096:11;27046:8;:62::i;:::-;27121:15;;:197;;-1:-1:-1;;;27121:197:0;;-1:-1:-1;;;;;27121:15:0;;;;:66;;:197;;27202:11;;27121:15;;27245:4;;27272;;27292:15;;27121:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27344:35;27361:11;27374:4;27344:35;;;;;;;:::i;:::-;;;;;;;;26905:482;26850:537;:::o;22323:126::-;22415:26;;-1:-1:-1;;;;;22415:18:0;;;:26;;;;;22434:6;;22415:26;;;;22434:6;22415:18;:26;;;;;;;;;;;;;;;;;;;;;22323:126;;:::o;27395:361::-;27508:15;;27476:62;;27493:4;;-1:-1:-1;;;;;27508:15:0;27526:11;27476:8;:62::i;:::-;27549:15;;-1:-1:-1;;;;;27549:15:0;:31;27588:9;27621:4;27641:11;27549:15;;27700:7;5262;5289:6;-1:-1:-1;;;;;5289:6:0;;5224:79;27700:7;27549:199;;;;;;-1:-1:-1;;;;;;27549:199:0;;;-1:-1:-1;;;;;5137:15:1;;;27549:199:0;;;5119:34:1;5169:18;;;5162:34;;;;5212:18;;;5205:34;;;;5255:18;;;5248:34;5319:15;;;5298:19;;;5291:44;27722:15:0;5351:19:1;;;5344:35;5053:19;;27549:199:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27395:361;;:::o;2085:189::-;2171:7;2206:12;2199:5;2191:28;;;;-1:-1:-1;;;2191:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2230:9:0;2242:5;2246:1;2242;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1606:6;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:52;;;1683:1;1680;1673:12;1635:52;1722:9;1709:23;1741:31;1766:5;1741:31;:::i;:::-;1791:5;-1:-1:-1;1815:35:1;1846:2;1831:18;;1815:35;:::i;:::-;1805:45;;1541:315;;;;;:::o;1861:::-;1929:6;1937;1990:2;1978:9;1969:7;1965:23;1961:32;1958:52;;;2006:1;2003;1996:12;1958:52;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1861:315:1:o;2181:180::-;2237:6;2290:2;2278:9;2269:7;2265:23;2261:32;2258:52;;;2306:1;2303;2296:12;2258:52;2329:26;2345:9;2329:26;:::i;2366:383::-;2440:6;2448;2456;2509:2;2497:9;2488:7;2484:23;2480:32;2477:52;;;2525:1;2522;2515:12;2477:52;2548:26;2564:9;2548:26;:::i;:::-;2538:36;;2621:2;2610:9;2606:18;2593:32;2583:42;;2675:2;2664:9;2660:18;2647:32;2688:31;2713:5;2688:31;:::i;:::-;2738:5;2728:15;;;2366:383;;;;;:::o;2754:180::-;2813:6;2866:2;2854:9;2845:7;2841:23;2837:32;2834:52;;;2882:1;2879;2872:12;2834:52;-1:-1:-1;2905:23:1;;2754:180;-1:-1:-1;2754:180:1:o;2939:316::-;3016:6;3024;3032;3085:2;3073:9;3064:7;3060:23;3056:32;3053:52;;;3101:1;3098;3091:12;3053:52;-1:-1:-1;;3124:23:1;;;3194:2;3179:18;;3166:32;;-1:-1:-1;3245:2:1;3230:18;;;3217:32;;2939:316;-1:-1:-1;2939:316:1:o;3260:306::-;3348:6;3356;3364;3417:2;3405:9;3396:7;3392:23;3388:32;3385:52;;;3433:1;3430;3423:12;3385:52;3462:9;3456:16;3446:26;;3512:2;3501:9;3497:18;3491:25;3481:35;;3556:2;3545:9;3541:18;3535:25;3525:35;;3260:306;;;;;:::o;3571:461::-;3624:3;3662:5;3656:12;3689:6;3684:3;3677:19;3715:4;3744:2;3739:3;3735:12;3728:19;;3781:2;3774:5;3770:14;3802:1;3812:195;3826:6;3823:1;3820:13;3812:195;;;3891:13;;-1:-1:-1;;;;;3887:39:1;3875:52;;3947:12;;;;3982:15;;;;3923:1;3841:9;3812:195;;;-1:-1:-1;4023:3:1;;3571:461;-1:-1:-1;;;;;3571:461:1:o;5817:597::-;5929:4;5958:2;5987;5976:9;5969:21;6019:6;6013:13;6062:6;6057:2;6046:9;6042:18;6035:34;6087:1;6097:140;6111:6;6108:1;6105:13;6097:140;;;6206:14;;;6202:23;;6196:30;6172:17;;;6191:2;6168:26;6161:66;6126:10;;6097:140;;;6255:6;6252:1;6249:13;6246:91;;;6325:1;6320:2;6311:6;6300:9;6296:22;6292:31;6285:42;6246:91;-1:-1:-1;6398:2:1;6377:15;-1:-1:-1;;6373:29:1;6358:45;;;;6405:2;6354:54;;5817:597;-1:-1:-1;;;5817:597:1:o;8800:356::-;9002:2;8984:21;;;9021:18;;;9014:30;9080:34;9075:2;9060:18;;9053:62;9147:2;9132:18;;8800:356::o;10154:332::-;10361:6;10350:9;10343:25;10404:2;10399;10388:9;10384:18;10377:30;10324:4;10424:56;10476:2;10465:9;10461:18;10453:6;10424:56;:::i;:::-;10416:64;10154:332;-1:-1:-1;;;;10154:332:1:o;10491:582::-;10790:6;10779:9;10772:25;10833:6;10828:2;10817:9;10813:18;10806:34;10876:3;10871:2;10860:9;10856:18;10849:31;10753:4;10897:57;10949:3;10938:9;10934:19;10926:6;10897:57;:::i;:::-;-1:-1:-1;;;;;10990:32:1;;;;10985:2;10970:18;;10963:60;-1:-1:-1;11054:3:1;11039:19;11032:35;10889:65;10491:582;-1:-1:-1;;;10491:582:1:o;11267:128::-;11307:3;11338:1;11334:6;11331:1;11328:13;11325:39;;;11344:18;;:::i;:::-;-1:-1:-1;11380:9:1;;11267:128::o;11400:217::-;11440:1;11466;11456:132;;11510:10;11505:3;11501:20;11498:1;11491:31;11545:4;11542:1;11535:15;11573:4;11570:1;11563:15;11456:132;-1:-1:-1;11602:9:1;;11400:217::o;11622:168::-;11662:7;11728:1;11724;11720:6;11716:14;11713:1;11710:21;11705:1;11698:9;11691:17;11687:45;11684:71;;;11735:18;;:::i;:::-;-1:-1:-1;11775:9:1;;11622:168::o;11795:125::-;11835:4;11863:1;11860;11857:8;11854:34;;;11868:18;;:::i;:::-;-1:-1:-1;11905:9:1;;11795:125::o;11925:380::-;12004:1;12000:12;;;;12047;;;12068:61;;12122:4;12114:6;12110:17;12100:27;;12068:61;12175:2;12167:6;12164:14;12144:18;12141:38;12138:161;;;12221:10;12216:3;12212:20;12209:1;12202:31;12256:4;12253:1;12246:15;12284:4;12281:1;12274:15;12138:161;;11925:380;;;:::o;12310:127::-;12371:10;12366:3;12362:20;12359:1;12352:31;12402:4;12399:1;12392:15;12426:4;12423:1;12416:15;12442:127;12503:10;12498:3;12494:20;12491:1;12484:31;12534:4;12531:1;12524:15;12558:4;12555:1;12548:15;12706:131;-1:-1:-1;;;;;12781:31:1;;12771:42;;12761:70;;12827:1;12824;12817:12;12761:70;12706:131;:::o

Swarm Source

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