ETH Price: $2,924.48 (+3.86%)
 

Overview

Max Total Supply

1,000,000,000,000 0TAX

Holders

10

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
18,572,661,136.929623311175167166 0TAX

Value
$0.00
0x9f2f2e321d8cd209e461c33b6685321e15e80c40
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:
ZEROTAX

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-24
*/

/*
https://t.me/Infinity0tax
*/
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;
contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
contract ERC20Ownable 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 virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "ERC20Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "ERC20Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view 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);
}
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 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function 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 swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    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 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;
}
library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        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"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (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 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }
    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);
            }
        }
    }
}
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 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 (uint256);
    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
    event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);
    function MINIMUM_LIQUIDITY() external pure returns (uint256);
    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 (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

contract ZEROTAX is Context, IERC20, ERC20Ownable {
    using SafeMath for uint256;
    using Address for address;

    string private constant tokenName = "Infinity";
    string private constant tokenSymbol = "0TAX";
    uint8 private constant tokenDecimal = 18;
    uint256 private constant tokenSupply = 1e12 * 10**tokenDecimal;

    mapping(address => mapping(address => uint256)) private tokenAllowances;
    mapping(address => uint256) private tokenBalance;
    mapping(address => bool) private isContractsExcluded;
    mapping(address => bool) private isMaxWalletExcluded;
    mapping(address => bool) private isTaxExcluded;
    mapping(address => bool) public isSniper;
    mapping(address => bool) public isBot;

    address payable liquidityAddress;
    address payable marketingAddress;
    address payable devAddress;
    address dead = address(0xdead);
    address public uniV2Pair;
    IUniswapV2Router02 public uniV2Router;
    address public uniV3Router;
    
    uint256 private maxWallet;
    uint256 private minTaxSwap;
    uint256 private marketingTokens;
    uint256 private liquidityTokens;
	uint256 private totalBurnedTokens;

    uint256 private marketingTax;
    uint256 private liquidityTax;
    uint256 private divForSplitTax;
    uint256 private taxBuyMarketing;
    uint256 private taxBuyLiquidity;
    uint256 private taxSellMarketing;
    uint256 private taxSellTreasury;
    uint256 private taxSellLiquidity;

    uint256 public activeTradingBlock;
    uint256 public sniperPenaltyEnd;

    bool public limitsOn = false;
    bool public maxWalletOn = false;
    bool public live = false;
    bool public contractBlocker = false;
    bool inSwapAndLiquify;
    bool private swapAndLiquifyStatus = false;
    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor() payable {
        tokenBalance[address(this)] = tokenSupply;
        maxWallet = tokenSupply.mul(2).div(100);
        minTaxSwap = tokenSupply.mul(4).div(10000);

        marketingAddress = payable(0x7017396654579e331F70286643Fb5463FD907C6a);
        devAddress = payable(0x7017396654579e331F70286643Fb5463FD907C6a);

        liquidityAddress = payable(owner()); //LEAVE AS OWNER

        taxBuyMarketing = 0;
        taxBuyLiquidity = 0;
        taxSellMarketing = 0;
        taxSellLiquidity = 0;

        isContractsExcluded[address(this)] = true;
        isTaxExcluded[owner()] = true;
        isTaxExcluded[dead] = true;
        isTaxExcluded[address(this)] = true;
        isTaxExcluded[marketingAddress] = true;
        isTaxExcluded[liquidityAddress] = true;
        isMaxWalletExcluded[address(this)] = true;
        isMaxWalletExcluded[owner()] = true;
        isMaxWalletExcluded[marketingAddress] = true;
        isMaxWalletExcluded[liquidityAddress] = true;
        isMaxWalletExcluded[dead] = true;
        
        emit Transfer(address(0), address(this), tokenSupply);
    }
    receive() external payable {}
    function name() external pure override returns (string memory) {
        return tokenName;
    }
    function symbol() external pure override returns (string memory) {
        return tokenSymbol;
    }
    function decimals() external pure override returns (uint8) {
        return tokenDecimal;
    }
    function totalSupply() external pure override returns (uint256) {
        return tokenSupply;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return tokenBalance[account];
    }
    function allowance(address owner, address spender) external view override returns (uint256) {
        return tokenAllowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        require(_msgSender() != address(0), "ERC20: Can not approve from zero address");
        require(spender != address(0), "ERC20: Can not approve to zero address");
        tokenAllowances[_msgSender()][spender] = amount;
        emit Approval(_msgSender(), spender, amount);
        return true;
    }
    function internalApprove(address owner,address spender,uint256 amount) internal {
        require(owner != address(0), "ERC20: Can not approve from zero address");
        require(spender != address(0), "ERC20: Can not approve to zero address");
        tokenAllowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        internalTransfer(_msgSender(), recipient, amount);
        return true;
    }
    function transferFrom(address sender,address recipient,uint256 amount) external override returns (bool) {
        internalTransfer(sender, recipient, amount);
        internalApprove(sender,_msgSender(),
        tokenAllowances[sender][_msgSender()].sub(amount, "ERC20: Can not transfer. Amount exceeds allowance"));
        return true;
    }
    function AirDrop(address[] memory wallets, uint256[] memory percent) external onlyOwner{
        require(wallets.length < 100, "Can only airdrop 100 wallets per txn due to gas limits");
        for(uint256 i = 0; i < wallets.length; i++){
            address wallet = wallets[i];
            uint256 amount = tokenSupply.mul(percent[i]).div(100);
            internalTransfer(_msgSender(), wallet, amount);
        }
    }
    function GoLive() external onlyOwner returns (bool){
        require(!live, "ERC20: Trades already Live!");
        activeTradingBlock = block.number;
        sniperPenaltyEnd = block.timestamp.add(2 days);
        IUniswapV2Router02 _uniV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniV2Router = _uniV2Router;
        uniV3Router = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45;
        isContractsExcluded[address(uniV2Router)] = true;
        isContractsExcluded[address(uniV3Router)] = true;
        isMaxWalletExcluded[address(uniV2Router)] = true;
        internalApprove(address(this), address(uniV2Router), tokenSupply);
        uniV2Pair = IUniswapV2Factory(_uniV2Router.factory()).createPair(address(this), _uniV2Router.WETH());
        isContractsExcluded[address(uniV2Pair)] = true;
        isMaxWalletExcluded[address(uniV2Pair)] = true;
        require(address(this).balance > 0, "ERC20: Must have ETH on contract to Go Live!");
        addLiquidity(balanceOf(address(this)), address(this).balance);
        launchSetLiquidityAddress(dead);
        maxWalletOn = true;
        swapAndLiquifyStatus = true;
        limitsOn = true;
        live = true;
        return true;
    }
    function internalTransfer(address from, address to, uint256 amount) internal {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "ERC20: Transfer amount must be greater than zero");
        require(!isBot[from], "ERC20: Can not transfer from BOT");
        if(!live){
            require(isTaxExcluded[from] || isTaxExcluded[to], "ERC20: Trading Is Not Live!");
        }
        if (maxWalletOn == true && ! isMaxWalletExcluded[to]) {
            require(balanceOf(to).add(amount) <= maxWallet, "ERC20: Max amount of tokens for wallet reached");
        }
        if(limitsOn){
            if (from != owner() && to != owner() && to != address(0) && to != dead && to != uniV2Pair) {
                for (uint x = 0; x < 1; x++) {
                    if(block.number == activeTradingBlock.add(x)) {
                        isSniper[to] = true;
                    }
                }
            }
        }
        if(contractBlocker) {
            require(
                !isContract(to) && isContractsExcluded[from] ||
                !isContract(from) && isContractsExcluded[to] || 
                isContract(from) && isContractsExcluded[to] || 
                isContract(to) && isContractsExcluded[from]
                );
        }
        uint256 totalTokensToSwap = liquidityTokens.add(marketingTokens);
        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >= minTaxSwap;
        if (!inSwapAndLiquify && swapAndLiquifyStatus && balanceOf(uniV2Pair) > 0 && totalTokensToSwap > 0 && !isTaxExcluded[to] && !isTaxExcluded[from] && to == uniV2Pair && overMinimumTokenBalance) {
            taxTokenSwap();
            }
        if (isTaxExcluded[from] || isTaxExcluded[to]) {
            marketingTax = 0;
            liquidityTax = 0;
            divForSplitTax = marketingTax.add(liquidityTax);
        } else {
            if (from == uniV2Pair) {
                marketingTax = taxBuyMarketing;
                liquidityTax = taxBuyLiquidity;
                divForSplitTax = taxBuyMarketing.add(taxBuyLiquidity);
            }else if (to == uniV2Pair) {
                marketingTax = taxSellMarketing;
                liquidityTax = taxSellLiquidity;
                divForSplitTax = taxSellMarketing.add(taxSellLiquidity);
                if(isSniper[from] && sniperPenaltyEnd >= block.timestamp){
                    marketingTax = 85;
                    liquidityTax = 10;
                    divForSplitTax = marketingTax.add(liquidityTax);
                }
            }else {
                require(!isSniper[from] || sniperPenaltyEnd <= block.timestamp, "ERC20: Snipers can not transfer till penalty time is over");
                marketingTax = 0;
                liquidityTax = 0;
            }
        }
        tokenTransfer(from, to, amount);
    }
    function taxTokenSwap() internal lockTheSwap {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = marketingTokens.add(liquidityTokens);
        uint256 swapLiquidityTokens = liquidityTokens.div(2);
        uint256 amountToSwapForETH = contractBalance.sub(swapLiquidityTokens);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForETH(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForMarketing = ethBalance.mul(marketingTokens).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance.sub(ethForMarketing);
        marketingTokens = 0;
        liquidityTokens = 0;
        (bool success,) = address(marketingAddress).call{value: ethForMarketing}("");
        if(ethForLiquidity != 0 && swapLiquidityTokens != 0) {
            addLiquidity(swapLiquidityTokens, ethForLiquidity);
        }
        if(address(this).balance > 5 * 1e17){
            (success,) = address(devAddress).call{value: address(this).balance}("");
        }
    }
    function swapTokensForETH(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniV2Router.WETH();
        internalApprove(address(this), address(uniV2Router), tokenAmount);
        uniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        internalApprove(address(this), address(uniV2Router), tokenAmount);
        uniV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityAddress,
            block.timestamp
        );
    }
    function calculateTax(uint256 amount) internal view returns (uint256) {
        return amount.mul(marketingTax.add(liquidityTax)).div(100);
    }
    function splitTaxTokens(uint256 taxTokens) internal {
        marketingTokens += taxTokens.mul(marketingTax).div(divForSplitTax);
        liquidityTokens += taxTokens.mul(liquidityTax).div(divForSplitTax);
    }
    function tokenTransfer(address sender,address recipient,uint256 amount) internal {
        if(divForSplitTax != 0){
            uint256 taxTokens = calculateTax(amount);
            uint256 transferTokens = amount.sub(taxTokens);
            splitTaxTokens(taxTokens);
            tokenBalance[sender] -= amount;
            tokenBalance[recipient] += transferTokens;
            tokenBalance[address(this)] += taxTokens;
            emit Transfer(sender, recipient, transferTokens);
        }else{
            tokenBalance[sender] -= amount;
            tokenBalance[recipient] += amount;
            emit Transfer(sender, recipient, amount);
        }
    }
    function launchSetLiquidityAddress(address LPAddress) internal {
        liquidityAddress = payable(LPAddress);
        isTaxExcluded[liquidityAddress] = true;
    }
    function isContract(address account) public view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }
    function addRemoveContract(address account, bool trueORfalse) external onlyOwner {
        isContractsExcluded[account] = trueORfalse;
    }
    function isExcludedContract(address account) public view returns (bool) {
        return isContractsExcluded[account];
    }
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(owner()).call{value: address(this).balance}("");
    }
    function withdrawStuckTokens(uint256 percent) external onlyOwner {
        internalTransfer(address(this), owner(), tokenSupply*percent/100);
    }
    function manualBurnTokensFromLP(uint256 percent) external onlyOwner returns (bool){
        require(percent <= 10, "ERC20: May not nuke more than 10% of tokens in LP");
        uint256 liquidityPairBalance = this.balanceOf(uniV2Pair);
        uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10**2);
        if (amountToBurn > 0){
            internalTransfer(uniV2Pair, dead, amountToBurn);
        }
        totalBurnedTokens = balanceOf(dead);
        require(totalBurnedTokens <= tokenSupply * 50 / 10**2, "ERC20: Can not burn more then 50% of supply");
        IUniswapV2Pair pair = IUniswapV2Pair(uniV2Pair);
        pair.sync();
        return true;
    }
    function manualSwapTax() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        require(contractBalance >= tokenSupply.mul(5).div(10000), "ERC20: Can only swap back if more than 0.05% of tokens stuck on contract");
        taxTokenSwap();
    }
    function addBot(address account) external onlyOwner {
        require(!isBot[account], "ERC20: Account already added");
        isBot[account] = true;
    }
	function removeBot(address account) external onlyOwner {
        require(isBot[account], "ERC20: Account is not bot");
        isBot[account] = false;
    }
	function removeSniper(address account) external onlyOwner {
        require(isSniper[account], "ERC20: Account is not sniper");
        isSniper[account] = false;
    }
    function setExcludedContractAccount(address account, bool trueORfalse) external onlyOwner {
        isContractsExcluded[address(account)] = trueORfalse;
    }
    function setExcludedFromTax(address account, bool trueORfalse) external onlyOwner {
        isTaxExcluded[address(account)] = trueORfalse;
    }
    function setExcludedFromMaxWallet(address account, bool trueORfalse) external onlyOwner {
        isMaxWalletExcluded[address(account)] = trueORfalse;
    }
    function setMaxWalletAmount(uint256 percent, uint256 divider) external onlyOwner {
        maxWallet = tokenSupply.mul(percent).div(divider);
        require(maxWallet <=tokenSupply.mul(4).div(100), "ERC20: Can not set max wallet more than 4%");
    }
    function setStatusLimits(bool trueORfalse) external onlyOwner {
        limitsOn = trueORfalse;
    }
    function setStatusMaxWallet(bool trueORfalse) external onlyOwner {
       maxWalletOn = trueORfalse;
    }
    function setStatusContractBlocker(bool trueORfalse) external onlyOwner {
        contractBlocker = trueORfalse;
    }
    function setSwapAndLiquifyStatus(bool trueORfalse) external onlyOwner {
        swapAndLiquifyStatus = trueORfalse;
    }
    function setTaxes(uint256 buyMarketingTax, uint256 buyLiquidityTax, uint256 sellMarketingTax, uint256 sellLiquidityTax) external onlyOwner {
        taxBuyMarketing = buyMarketingTax;
        taxBuyLiquidity = buyLiquidityTax;
        taxSellMarketing = sellMarketingTax;
        taxSellLiquidity = sellLiquidityTax;
    }
    function viewTaxes() public view returns(uint256 marketingBuy, uint256 liquidityBuy, uint256 marketingSell, uint256 liquiditySell) {
        return(taxBuyMarketing,taxBuyLiquidity,taxSellMarketing,taxSellLiquidity);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"percent","type":"uint256[]"}],"name":"AirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GoLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"activeTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"addRemoveContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractBlocker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"live","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnTokensFromLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedContractAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setExcludedFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divider","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusContractBlocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setStatusMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"trueORfalse","type":"bool"}],"name":"setSwapAndLiquifyStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketingTax","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"sellMarketingTax","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityTax","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"uniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniV3Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTaxes","outputs":[{"internalType":"uint256","name":"marketingBuy","type":"uint256"},{"internalType":"uint256","name":"liquidityBuy","type":"uint256"},{"internalType":"uint256","name":"marketingSell","type":"uint256"},{"internalType":"uint256","name":"liquiditySell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"withdrawStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b80546001600160a01b03191661dead179055601e805465ff00ffffffff191690556000620000313390565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000896012600a62000404565b6200009a9064e8d4a5100062000415565b306000908152600260208190526040909120919091556200010490606490620000f090620000cb6012600a62000404565b620000dc9064e8d4a5100062000415565b620002cc60201b62001a2a1790919060201c565b620002e360201b62001a3d1790919060201c565b600f5562000122612710620000f06004620000cb6012600a62000404565b60105560098054737017396654579e331f70286643fb5463fd907c6a6001600160a01b03199182168117909255600a805490911690911790556200016e6000546001600160a01b031690565b600880546001600160a01b0319166001600160a01b039283161781556000601781905560188190556019819055601b81905530808252600360209081526040808420805460ff199081166001908117909255855488168652600584528286208054821683179055600b80548916875283872080548316841790558587528387208054831684179055600980548a168852848820805484168517905588548a1688528488208054841685179055868852600490955283872080548316841790558654891687528387208054831684179055935488168652828620805482168317905595548716855281852080548716821790559154909516835293822080549093169093179091557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002a46012600a62000404565b620002b59064e8d4a5100062000415565b60405190815260200160405180910390a36200045a565b6000620002da828462000415565b90505b92915050565b6000620002da828462000437565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003485781600019048211156200032c576200032c620002f1565b808516156200033a57918102915b93841c93908002906200030c565b509250929050565b6000826200036157506001620002dd565b816200037057506000620002dd565b81600181146200038957600281146200039457620003b4565b6001915050620002dd565b60ff841115620003a857620003a8620002f1565b50506001821b620002dd565b5060208310610133831016604e8410600b8410161715620003d9575081810a620002dd565b620003e5838362000307565b8060001904821115620003fc57620003fc620002f1565b029392505050565b6000620002da60ff84168362000350565b6000816000190483118215151615620004325762000432620002f1565b500290565b6000826200045557634e487b7160e01b600052601260045260246000fd5b500490565b612fbd806200046a6000396000f3fe6080604052600436106102765760003560e01c80637817be6c1161014f578063a73f9b58116100c1578063ee2e5a2e1161007a578063ee2e5a2e146107e0578063f0c0cf8714610800578063f2fde38b14610816578063f35900d014610836578063f5648a4f14610856578063ffecf5161461086b57600080fd5b8063a73f9b581461072f578063a9059cbb14610744578063c2ed286b14610764578063dd62ed3e14610784578063e4252ddf14610628578063ea090d97146107ca57600080fd5b8063957aa58c11610113578063957aa58c14610648578063958c2e521461066857806395d89b411461068857806396c9b442146106b5578063a12a7d61146106d6578063a20d9615146106f657600080fd5b80637817be6c146105aa5780638bcea939146105ca5780638c714f80146105ea5780638da5cb5b1461060a57806391c09d1e1461062857600080fd5b80633b4e935a116101e85780635fafa589116101ac5780635fafa589146104de5780635fecd9261461051657806370a0823114610536578063715018a614610556578063745d032f1461056b57806375d0cc431461058a57600080fd5b80633b4e935a146104395780633bbac5791461044e578063412201041461047e57806351524e5b1461049e5780635e6710de146104be57600080fd5b806318160ddd1161023a57806318160ddd1461037e578063186d260d146103a15780631c42047a146103c357806323b872dd146103dd578063313ce567146103fd57806333251a0b1461041957600080fd5b806306fdde0314610282578063095ea7b3146102c55780630f3a325f146102f557806311abf53714610325578063162790551461035e57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b50604080518082019091526008815267496e66696e69747960c01b60208201525b6040516102bc9190612884565b60405180910390f35b3480156102d157600080fd5b506102e56102e03660046128e7565b61088b565b60405190151581526020016102bc565b34801561030157600080fd5b506102e5610310366004612913565b60066020526000908152604090205460ff1681565b34801561033157600080fd5b50601754601854601954601b546040805194855260208501939093529183015260608201526080016102bc565b34801561036a57600080fd5b506102e5610379366004612913565b61093e565b34801561038a57600080fd5b5061039361097a565b6040519081526020016102bc565b3480156103ad57600080fd5b506103c16103bc366004612940565b61099c565b005b3480156103cf57600080fd5b50601e546102e59060ff1681565b3480156103e957600080fd5b506102e56103f836600461295b565b6109d9565b34801561040957600080fd5b50604051601281526020016102bc565b34801561042557600080fd5b506103c1610434366004612913565b610a42565b34801561044557600080fd5b506102e5610af5565b34801561045a57600080fd5b506102e5610469366004612913565b60076020526000908152604090205460ff1681565b34801561048a57600080fd5b506103c161049936600461299c565b610eed565b3480156104aa57600080fd5b506103c16104b9366004612aa7565b610f42565b3480156104ca57600080fd5b506103c16104d9366004612b69565b61107a565b3480156104ea57600080fd5b50600e546104fe906001600160a01b031681565b6040516001600160a01b0390911681526020016102bc565b34801561052257600080fd5b506103c1610531366004612913565b6110f4565b34801561054257600080fd5b50610393610551366004612913565b6111a7565b34801561056257600080fd5b506103c16111c2565b34801561057757600080fd5b50601e546102e590610100900460ff1681565b34801561059657600080fd5b506103c16105a5366004612940565b611236565b3480156105b657600080fd5b506102e56105c5366004612b69565b61127e565b3480156105d657600080fd5b50600c546104fe906001600160a01b031681565b3480156105f657600080fd5b506103c1610605366004612940565b6114d9565b34801561061657600080fd5b506000546001600160a01b03166104fe565b34801561063457600080fd5b506103c161064336600461299c565b61151d565b34801561065457600080fd5b50601e546102e59062010000900460ff1681565b34801561067457600080fd5b50600d546104fe906001600160a01b031681565b34801561069457600080fd5b50604080518082019091526004815263060a882b60e31b60208201526102af565b3480156106c157600080fd5b50601e546102e5906301000000900460ff1681565b3480156106e257600080fd5b506103c16106f1366004612b82565b611572565b34801561070257600080fd5b506102e5610711366004612913565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561073b57600080fd5b506103c16115b0565b34801561075057600080fd5b506102e561075f3660046128e7565b61168c565b34801561077057600080fd5b506103c161077f36600461299c565b6116a2565b34801561079057600080fd5b5061039361079f366004612bb4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107d657600080fd5b50610393601c5481565b3480156107ec57600080fd5b506103c16107fb366004612940565b6116f7565b34801561080c57600080fd5b50610393601d5481565b34801561082257600080fd5b506103c1610831366004612913565b611743565b34801561084257600080fd5b506103c1610851366004612bed565b611832565b34801561086257600080fd5b506103c16118f1565b34801561087757600080fd5b506103c1610886366004612913565b611973565b6000336108b35760405162461bcd60e51b81526004016108aa90612c0f565b60405180910390fd5b6001600160a01b0383166108d95760405162461bcd60e51b81526004016108aa90612c57565b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061097257508115155b949350505050565b60006109886012600a612d97565b6109979064e8d4a51000612da6565b905090565b6000546001600160a01b031633146109c65760405162461bcd60e51b81526004016108aa90612dc5565b601e805460ff1916911515919091179055565b60006109e6848484611a49565b610a388433610a3385604051806060016040528060318152602001612f57603191396001600160a01b038a16600090815260016020908152604080832033845290915290205491906121b7565b6121e3565b5060019392505050565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03811660009081526006602052604090205460ff16610ad45760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e74206973206e6f7420736e697065720000000060448201526064016108aa565b6001600160a01b03166000908152600660205260409020805460ff19169055565b600080546001600160a01b03163314610b205760405162461bcd60e51b81526004016108aa90612dc5565b601e5462010000900460ff1615610b795760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164657320616c7265616479204c69766521000000000060448201526064016108aa565b43601c55610b8a426202a300612291565b601d55600d80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d908117909255600e80549091167368b3465833fb72a70ecdf485e0e4c7bd8665fc451790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff1990811660019081179092557fdc51a0a44317b550a6b5ddb34687ce2bd40e4750eec27343e32b23e6867392088054821683179055600083905260046020527f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d780549091169091179055610c863082610c776012600a612d97565b610a339064e8d4a51000612da6565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce89190612e0a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d599190612e0a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dca9190612e0a565b600c80546001600160a01b0319166001600160a01b0392831690811782556000908152600360209081526040808320805460ff19908116600190811790925594549095168352600490915290208054909116909117905547610e835760405162461bcd60e51b815260206004820152602c60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526b20746f20476f204c6976652160a01b60648201526084016108aa565b610e95610e8f306111a7565b4761229d565b600b54600880546001600160a01b0319166001600160a01b0390921691821790556000908152600560205260409020805460ff191660011790555050601e805465ff0000ffffff191665010000010101179055600190565b6000546001600160a01b03163314610f175760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f6c5760405162461bcd60e51b81526004016108aa90612dc5565b6064825110610fdc5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016108aa565b60005b8251811015611075576000838281518110610ffc57610ffc612e27565b602002602001015190506000611053606461104d86868151811061102257611022612e27565b60200260200101516012600a6110389190612d97565b6110479064e8d4a51000612da6565b90611a2a565b90611a3d565b9050611060338383611a49565b5050808061106d90612e3d565b915050610fdf565b505050565b6000546001600160a01b031633146110a45760405162461bcd60e51b81526004016108aa90612dc5565b6110f1306110ba6000546001600160a01b031690565b6064846110c96012600a612d97565b6110d89064e8d4a51000612da6565b6110e29190612da6565b6110ec9190612e56565b611a49565b50565b6000546001600160a01b0316331461111e5760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03811660009081526007602052604090205460ff166111865760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016108aa565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b031633146111ec5760405162461bcd60e51b81526004016108aa90612dc5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112605760405162461bcd60e51b81526004016108aa90612dc5565b601e805491151563010000000263ff00000019909216919091179055565b600080546001600160a01b031633146112a95760405162461bcd60e51b81526004016108aa90612dc5565b600a8211156113145760405162461bcd60e51b815260206004820152603160248201527f45524332303a204d6179206e6f74206e756b65206d6f7265207468616e203130604482015270025206f6620746f6b656e7320696e204c5607c1b60648201526084016108aa565b600c546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa15801561135f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113839190612e78565b90506000611396606461104d8487611a2a565b905080156113bb57600c54600b546113bb916001600160a01b03908116911683611a49565b600b546113d0906001600160a01b03166111a7565b60135560646113e16012600a612d97565b6113f09064e8d4a51000612da6565b6113fb906032612da6565b6114059190612e56565b601354111561146a5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e206e6f74206275726e206d6f7265207468656e20353060448201526a25206f6620737570706c7960a81b60648201526084016108aa565b600c546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b1580156114b457600080fd5b505af11580156114c8573d6000803e3d6000fd5b50505050600193505050505b919050565b6000546001600160a01b031633146115035760405162461bcd60e51b81526004016108aa90612dc5565b601e80549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146115475760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461159c5760405162461bcd60e51b81526004016108aa90612dc5565b601793909355601891909155601955601b55565b6000546001600160a01b031633146115da5760405162461bcd60e51b81526004016108aa90612dc5565b60006115e5306111a7565b90506115fe61271061104d60056110386012600a612d97565b8110156116845760405162461bcd60e51b815260206004820152604860248201527f45524332303a2043616e206f6e6c792073776170206261636b206966206d6f7260448201527f65207468616e20302e303525206f6620746f6b656e7320737475636b206f6e2060648201526718dbdb9d1c9858dd60c21b608482015260a4016108aa565b6110f1612351565b6000611699338484611a49565b50600192915050565b6000546001600160a01b031633146116cc5760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117215760405162461bcd60e51b81526004016108aa90612dc5565b601e8054911515650100000000000265ff000000000019909216919091179055565b6000546001600160a01b0316331461176d5760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b0381166117d75760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016108aa565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461185c5760405162461bcd60e51b81526004016108aa90612dc5565b6118708161104d846110386012600a612d97565b600f55611889606461104d60046110386012600a612d97565b600f5411156118ed5760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20342560b01b60648201526084016108aa565b5050565b6000546001600160a01b0316331461191b5760405162461bcd60e51b81526004016108aa90612dc5565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114611968576040519150601f19603f3d011682016040523d82523d6000602084013e61196d565b606091505b50505050565b6000546001600160a01b0316331461199d5760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03811660009081526007602052604090205460ff1615611a065760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016108aa565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000611a368284612da6565b9392505050565b6000611a368284612e56565b6001600160a01b038316611aad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108aa565b6001600160a01b038216611b0f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108aa565b60008111611b785760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016108aa565b6001600160a01b03831660009081526007602052604090205460ff1615611be15760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016108aa565b601e5462010000900460ff16611c7c576001600160a01b03831660009081526005602052604090205460ff1680611c3057506001600160a01b03821660009081526005602052604090205460ff165b611c7c5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164696e67204973204e6f74204c69766521000000000060448201526064016108aa565b601e5460ff6101009091041615156001148015611cb257506001600160a01b03821660009081526004602052604090205460ff16155b15611d3257600f54611ccd82611cc7856111a7565b90612291565b1115611d325760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016108aa565b601e5460ff1615611e0d576000546001600160a01b03848116911614801590611d6957506000546001600160a01b03838116911614155b8015611d7d57506001600160a01b03821615155b8015611d975750600b546001600160a01b03838116911614155b8015611db15750600c546001600160a01b03838116911614155b15611e0d5760005b6001811015611e0b57601c54611dcf9082612291565b4303611df9576001600160a01b0383166000908152600660205260409020805460ff191660011790555b80611e0381612e3d565b915050611db9565b505b601e546301000000900460ff1615611ef057611e288261093e565b158015611e4d57506001600160a01b03831660009081526003602052604090205460ff165b80611e815750611e5c8361093e565b158015611e8157506001600160a01b03821660009081526003602052604090205460ff165b80611eb45750611e908361093e565b8015611eb457506001600160a01b03821660009081526003602052604090205460ff165b80611ee75750611ec38261093e565b8015611ee757506001600160a01b03831660009081526003602052604090205460ff165b611ef057600080fd5b6000611f0960115460125461229190919063ffffffff16565b90506000611f16306111a7565b601054601e5491925082101590640100000000900460ff16158015611f465750601e5465010000000000900460ff165b8015611f675750600c54600090611f65906001600160a01b03166111a7565b115b8015611f735750600083115b8015611f9857506001600160a01b03851660009081526005602052604090205460ff16155b8015611fbd57506001600160a01b03861660009081526005602052604090205460ff16155b8015611fd65750600c546001600160a01b038681169116145b8015611fdf5750805b15611fec57611fec612351565b6001600160a01b03861660009081526005602052604090205460ff168061202b57506001600160a01b03851660009081526005602052604090205460ff165b1561204e576000601481905560158190556120469080612291565b6016556121a4565b600c546001600160a01b039081169087160361207e57601754601481905560185460158190556120469190612291565b600c546001600160a01b03908116908616036120fd576019546014819055601b5460158190556120ae9190612291565b6016556001600160a01b03861660009081526006602052604090205460ff1680156120db575042601d5410155b156120f85760556014819055600a60158190556120469190612291565b6121a4565b6001600160a01b03861660009081526006602052604090205460ff161580612127575042601d5411155b6121995760405162461bcd60e51b815260206004820152603960248201527f45524332303a20536e69706572732063616e206e6f74207472616e736665722060448201527f74696c6c2070656e616c74792074696d65206973206f7665720000000000000060648201526084016108aa565b600060148190556015555b6121af8686866124fd565b505050505050565b600081848411156121db5760405162461bcd60e51b81526004016108aa9190612884565b505050900390565b6001600160a01b0383166122095760405162461bcd60e51b81526004016108aa90612c0f565b6001600160a01b03821661222f5760405162461bcd60e51b81526004016108aa90612c57565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611a368284612e91565b600d546122b59030906001600160a01b0316846121e3565b600d5460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612325573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061234a9190612ea4565b5050505050565b601e805464ff0000000019166401000000001790556000612371306111a7565b9050600061238c60125460115461229190919063ffffffff16565b905060006123a66002601254611a3d90919063ffffffff16565b905060006123b4848361269e565b9050476123c0826126aa565b60006123cc478361269e565b905060006123e98661104d60115485611a2a90919063ffffffff16565b905060006123f7838361269e565b60006011819055601281905560095460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114612454576040519150601f19603f3d011682016040523d82523d6000602084013e612459565b606091505b505090508160001415801561246d57508615155b1561247c5761247c878361229d565b6706f05b59d3b200004711156124e457600a546040516001600160a01b03909116904790600081818185875af1925050503d80600081146124d9576040519150601f19603f3d011682016040523d82523d6000602084013e6124de565b606091505b50909150505b5050601e805464ff000000001916905550505050505050565b601654156125fd576000612510826127fc565b9050600061251e838361269e565b905061252982612824565b6001600160a01b03851660009081526002602052604081208054859290612551908490612ed2565b90915550506001600160a01b0384166000908152600260205260408120805483929061257e908490612e91565b909155505030600090815260026020526040812080548492906125a2908490612e91565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125ee91815260200190565b60405180910390a35050505050565b6001600160a01b03831660009081526002602052604081208054839290612625908490612ed2565b90915550506001600160a01b03821660009081526002602052604081208054839290612652908490612e91565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161228491815260200190565b6000611a368284612ed2565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126df576126df612e27565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275c9190612e0a565b8160018151811061276f5761276f612e27565b6001600160a01b039283166020918202929092010152600d5461279591309116846121e3565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906127ce908590600090869030904290600401612ee5565b600060405180830381600087803b1580156127e857600080fd5b505af11580156121af573d6000803e3d6000fd5b6000610938606461104d61281d60155460145461229190919063ffffffff16565b8590611a2a565b61283f60165461104d60145484611a2a90919063ffffffff16565b601160008282546128509190612e91565b909155505060165460155461286b919061104d908490611a2a565b6012600082825461287c9190612e91565b909155505050565b600060208083528351808285015260005b818110156128b157858101830151858201604001528201612895565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146110f157600080fd5b600080604083850312156128fa57600080fd5b8235612905816128d2565b946020939093013593505050565b60006020828403121561292557600080fd5b8135611a36816128d2565b803580151581146114d457600080fd5b60006020828403121561295257600080fd5b611a3682612930565b60008060006060848603121561297057600080fd5b833561297b816128d2565b9250602084013561298b816128d2565b929592945050506040919091013590565b600080604083850312156129af57600080fd5b82356129ba816128d2565b91506129c860208401612930565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a1057612a106129d1565b604052919050565b600067ffffffffffffffff821115612a3257612a326129d1565b5060051b60200190565b600082601f830112612a4d57600080fd5b81356020612a62612a5d83612a18565b6129e7565b82815260059290921b84018101918181019086841115612a8157600080fd5b8286015b84811015612a9c5780358352918301918301612a85565b509695505050505050565b60008060408385031215612aba57600080fd5b823567ffffffffffffffff80821115612ad257600080fd5b818501915085601f830112612ae657600080fd5b81356020612af6612a5d83612a18565b82815260059290921b84018101918181019089841115612b1557600080fd5b948201945b83861015612b3c578535612b2d816128d2565b82529482019490820190612b1a565b96505086013592505080821115612b5257600080fd5b50612b5f85828601612a3c565b9150509250929050565b600060208284031215612b7b57600080fd5b5035919050565b60008060008060808587031215612b9857600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215612bc757600080fd5b8235612bd2816128d2565b91506020830135612be2816128d2565b809150509250929050565b60008060408385031215612c0057600080fd5b50508035926020909101359150565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612cee578160001904821115612cd457612cd4612c9d565b80851615612ce157918102915b93841c9390800290612cb8565b509250929050565b600082612d0557506001610938565b81612d1257506000610938565b8160018114612d285760028114612d3257612d4e565b6001915050610938565b60ff841115612d4357612d43612c9d565b50506001821b610938565b5060208310610133831016604e8410600b8410161715612d71575081810a610938565b612d7b8383612cb3565b8060001904821115612d8f57612d8f612c9d565b029392505050565b6000611a3660ff841683612cf6565b6000816000190483118215151615612dc057612dc0612c9d565b500290565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060208284031215612e1c57600080fd5b8151611a36816128d2565b634e487b7160e01b600052603260045260246000fd5b600060018201612e4f57612e4f612c9d565b5060010190565b600082612e7357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612e8a57600080fd5b5051919050565b8082018082111561093857610938612c9d565b600080600060608486031215612eb957600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561093857610938612c9d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f355784516001600160a01b031683529383019391830191600101612f10565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220273090c8669e6056f3841628f25e82e0f9b9ccbe894353434c2c73d8c9c9480464736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102765760003560e01c80637817be6c1161014f578063a73f9b58116100c1578063ee2e5a2e1161007a578063ee2e5a2e146107e0578063f0c0cf8714610800578063f2fde38b14610816578063f35900d014610836578063f5648a4f14610856578063ffecf5161461086b57600080fd5b8063a73f9b581461072f578063a9059cbb14610744578063c2ed286b14610764578063dd62ed3e14610784578063e4252ddf14610628578063ea090d97146107ca57600080fd5b8063957aa58c11610113578063957aa58c14610648578063958c2e521461066857806395d89b411461068857806396c9b442146106b5578063a12a7d61146106d6578063a20d9615146106f657600080fd5b80637817be6c146105aa5780638bcea939146105ca5780638c714f80146105ea5780638da5cb5b1461060a57806391c09d1e1461062857600080fd5b80633b4e935a116101e85780635fafa589116101ac5780635fafa589146104de5780635fecd9261461051657806370a0823114610536578063715018a614610556578063745d032f1461056b57806375d0cc431461058a57600080fd5b80633b4e935a146104395780633bbac5791461044e578063412201041461047e57806351524e5b1461049e5780635e6710de146104be57600080fd5b806318160ddd1161023a57806318160ddd1461037e578063186d260d146103a15780631c42047a146103c357806323b872dd146103dd578063313ce567146103fd57806333251a0b1461041957600080fd5b806306fdde0314610282578063095ea7b3146102c55780630f3a325f146102f557806311abf53714610325578063162790551461035e57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b50604080518082019091526008815267496e66696e69747960c01b60208201525b6040516102bc9190612884565b60405180910390f35b3480156102d157600080fd5b506102e56102e03660046128e7565b61088b565b60405190151581526020016102bc565b34801561030157600080fd5b506102e5610310366004612913565b60066020526000908152604090205460ff1681565b34801561033157600080fd5b50601754601854601954601b546040805194855260208501939093529183015260608201526080016102bc565b34801561036a57600080fd5b506102e5610379366004612913565b61093e565b34801561038a57600080fd5b5061039361097a565b6040519081526020016102bc565b3480156103ad57600080fd5b506103c16103bc366004612940565b61099c565b005b3480156103cf57600080fd5b50601e546102e59060ff1681565b3480156103e957600080fd5b506102e56103f836600461295b565b6109d9565b34801561040957600080fd5b50604051601281526020016102bc565b34801561042557600080fd5b506103c1610434366004612913565b610a42565b34801561044557600080fd5b506102e5610af5565b34801561045a57600080fd5b506102e5610469366004612913565b60076020526000908152604090205460ff1681565b34801561048a57600080fd5b506103c161049936600461299c565b610eed565b3480156104aa57600080fd5b506103c16104b9366004612aa7565b610f42565b3480156104ca57600080fd5b506103c16104d9366004612b69565b61107a565b3480156104ea57600080fd5b50600e546104fe906001600160a01b031681565b6040516001600160a01b0390911681526020016102bc565b34801561052257600080fd5b506103c1610531366004612913565b6110f4565b34801561054257600080fd5b50610393610551366004612913565b6111a7565b34801561056257600080fd5b506103c16111c2565b34801561057757600080fd5b50601e546102e590610100900460ff1681565b34801561059657600080fd5b506103c16105a5366004612940565b611236565b3480156105b657600080fd5b506102e56105c5366004612b69565b61127e565b3480156105d657600080fd5b50600c546104fe906001600160a01b031681565b3480156105f657600080fd5b506103c1610605366004612940565b6114d9565b34801561061657600080fd5b506000546001600160a01b03166104fe565b34801561063457600080fd5b506103c161064336600461299c565b61151d565b34801561065457600080fd5b50601e546102e59062010000900460ff1681565b34801561067457600080fd5b50600d546104fe906001600160a01b031681565b34801561069457600080fd5b50604080518082019091526004815263060a882b60e31b60208201526102af565b3480156106c157600080fd5b50601e546102e5906301000000900460ff1681565b3480156106e257600080fd5b506103c16106f1366004612b82565b611572565b34801561070257600080fd5b506102e5610711366004612913565b6001600160a01b031660009081526003602052604090205460ff1690565b34801561073b57600080fd5b506103c16115b0565b34801561075057600080fd5b506102e561075f3660046128e7565b61168c565b34801561077057600080fd5b506103c161077f36600461299c565b6116a2565b34801561079057600080fd5b5061039361079f366004612bb4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107d657600080fd5b50610393601c5481565b3480156107ec57600080fd5b506103c16107fb366004612940565b6116f7565b34801561080c57600080fd5b50610393601d5481565b34801561082257600080fd5b506103c1610831366004612913565b611743565b34801561084257600080fd5b506103c1610851366004612bed565b611832565b34801561086257600080fd5b506103c16118f1565b34801561087757600080fd5b506103c1610886366004612913565b611973565b6000336108b35760405162461bcd60e51b81526004016108aa90612c0f565b60405180910390fd5b6001600160a01b0383166108d95760405162461bcd60e51b81526004016108aa90612c57565b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061097257508115155b949350505050565b60006109886012600a612d97565b6109979064e8d4a51000612da6565b905090565b6000546001600160a01b031633146109c65760405162461bcd60e51b81526004016108aa90612dc5565b601e805460ff1916911515919091179055565b60006109e6848484611a49565b610a388433610a3385604051806060016040528060318152602001612f57603191396001600160a01b038a16600090815260016020908152604080832033845290915290205491906121b7565b6121e3565b5060019392505050565b6000546001600160a01b03163314610a6c5760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03811660009081526006602052604090205460ff16610ad45760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e74206973206e6f7420736e697065720000000060448201526064016108aa565b6001600160a01b03166000908152600660205260409020805460ff19169055565b600080546001600160a01b03163314610b205760405162461bcd60e51b81526004016108aa90612dc5565b601e5462010000900460ff1615610b795760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164657320616c7265616479204c69766521000000000060448201526064016108aa565b43601c55610b8a426202a300612291565b601d55600d80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d908117909255600e80549091167368b3465833fb72a70ecdf485e0e4c7bd8665fc451790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805460ff1990811660019081179092557fdc51a0a44317b550a6b5ddb34687ce2bd40e4750eec27343e32b23e6867392088054821683179055600083905260046020527f1fc5acd025f7cc5cf2691b667dba808b5a149bf27192c208fc66f1f0ec4222d780549091169091179055610c863082610c776012600a612d97565b610a339064e8d4a51000612da6565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce89190612e0a565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d599190612e0a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dca9190612e0a565b600c80546001600160a01b0319166001600160a01b0392831690811782556000908152600360209081526040808320805460ff19908116600190811790925594549095168352600490915290208054909116909117905547610e835760405162461bcd60e51b815260206004820152602c60248201527f45524332303a204d757374206861766520455448206f6e20636f6e747261637460448201526b20746f20476f204c6976652160a01b60648201526084016108aa565b610e95610e8f306111a7565b4761229d565b600b54600880546001600160a01b0319166001600160a01b0390921691821790556000908152600560205260409020805460ff191660011790555050601e805465ff0000ffffff191665010000010101179055600190565b6000546001600160a01b03163314610f175760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f6c5760405162461bcd60e51b81526004016108aa90612dc5565b6064825110610fdc5760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203130302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b60648201526084016108aa565b60005b8251811015611075576000838281518110610ffc57610ffc612e27565b602002602001015190506000611053606461104d86868151811061102257611022612e27565b60200260200101516012600a6110389190612d97565b6110479064e8d4a51000612da6565b90611a2a565b90611a3d565b9050611060338383611a49565b5050808061106d90612e3d565b915050610fdf565b505050565b6000546001600160a01b031633146110a45760405162461bcd60e51b81526004016108aa90612dc5565b6110f1306110ba6000546001600160a01b031690565b6064846110c96012600a612d97565b6110d89064e8d4a51000612da6565b6110e29190612da6565b6110ec9190612e56565b611a49565b50565b6000546001600160a01b0316331461111e5760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03811660009081526007602052604090205460ff166111865760405162461bcd60e51b815260206004820152601960248201527f45524332303a204163636f756e74206973206e6f7420626f740000000000000060448201526064016108aa565b6001600160a01b03166000908152600760205260409020805460ff19169055565b6001600160a01b031660009081526002602052604090205490565b6000546001600160a01b031633146111ec5760405162461bcd60e51b81526004016108aa90612dc5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112605760405162461bcd60e51b81526004016108aa90612dc5565b601e805491151563010000000263ff00000019909216919091179055565b600080546001600160a01b031633146112a95760405162461bcd60e51b81526004016108aa90612dc5565b600a8211156113145760405162461bcd60e51b815260206004820152603160248201527f45524332303a204d6179206e6f74206e756b65206d6f7265207468616e203130604482015270025206f6620746f6b656e7320696e204c5607c1b60648201526084016108aa565b600c546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa15801561135f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113839190612e78565b90506000611396606461104d8487611a2a565b905080156113bb57600c54600b546113bb916001600160a01b03908116911683611a49565b600b546113d0906001600160a01b03166111a7565b60135560646113e16012600a612d97565b6113f09064e8d4a51000612da6565b6113fb906032612da6565b6114059190612e56565b601354111561146a5760405162461bcd60e51b815260206004820152602b60248201527f45524332303a2043616e206e6f74206275726e206d6f7265207468656e20353060448201526a25206f6620737570706c7960a81b60648201526084016108aa565b600c546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b1580156114b457600080fd5b505af11580156114c8573d6000803e3d6000fd5b50505050600193505050505b919050565b6000546001600160a01b031633146115035760405162461bcd60e51b81526004016108aa90612dc5565b601e80549115156101000261ff0019909216919091179055565b6000546001600160a01b031633146115475760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461159c5760405162461bcd60e51b81526004016108aa90612dc5565b601793909355601891909155601955601b55565b6000546001600160a01b031633146115da5760405162461bcd60e51b81526004016108aa90612dc5565b60006115e5306111a7565b90506115fe61271061104d60056110386012600a612d97565b8110156116845760405162461bcd60e51b815260206004820152604860248201527f45524332303a2043616e206f6e6c792073776170206261636b206966206d6f7260448201527f65207468616e20302e303525206f6620746f6b656e7320737475636b206f6e2060648201526718dbdb9d1c9858dd60c21b608482015260a4016108aa565b6110f1612351565b6000611699338484611a49565b50600192915050565b6000546001600160a01b031633146116cc5760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117215760405162461bcd60e51b81526004016108aa90612dc5565b601e8054911515650100000000000265ff000000000019909216919091179055565b6000546001600160a01b0316331461176d5760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b0381166117d75760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016108aa565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461185c5760405162461bcd60e51b81526004016108aa90612dc5565b6118708161104d846110386012600a612d97565b600f55611889606461104d60046110386012600a612d97565b600f5411156118ed5760405162461bcd60e51b815260206004820152602a60248201527f45524332303a2043616e206e6f7420736574206d61782077616c6c6574206d6f6044820152697265207468616e20342560b01b60648201526084016108aa565b5050565b6000546001600160a01b0316331461191b5760405162461bcd60e51b81526004016108aa90612dc5565b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114611968576040519150601f19603f3d011682016040523d82523d6000602084013e61196d565b606091505b50505050565b6000546001600160a01b0316331461199d5760405162461bcd60e51b81526004016108aa90612dc5565b6001600160a01b03811660009081526007602052604090205460ff1615611a065760405162461bcd60e51b815260206004820152601c60248201527f45524332303a204163636f756e7420616c72656164792061646465640000000060448201526064016108aa565b6001600160a01b03166000908152600760205260409020805460ff19166001179055565b6000611a368284612da6565b9392505050565b6000611a368284612e56565b6001600160a01b038316611aad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108aa565b6001600160a01b038216611b0f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108aa565b60008111611b785760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016108aa565b6001600160a01b03831660009081526007602052604090205460ff1615611be15760405162461bcd60e51b815260206004820181905260248201527f45524332303a2043616e206e6f74207472616e736665722066726f6d20424f5460448201526064016108aa565b601e5462010000900460ff16611c7c576001600160a01b03831660009081526005602052604090205460ff1680611c3057506001600160a01b03821660009081526005602052604090205460ff165b611c7c5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2054726164696e67204973204e6f74204c69766521000000000060448201526064016108aa565b601e5460ff6101009091041615156001148015611cb257506001600160a01b03821660009081526004602052604090205460ff16155b15611d3257600f54611ccd82611cc7856111a7565b90612291565b1115611d325760405162461bcd60e51b815260206004820152602e60248201527f45524332303a204d617820616d6f756e74206f6620746f6b656e7320666f722060448201526d1dd85b1b195d081c995858da195960921b60648201526084016108aa565b601e5460ff1615611e0d576000546001600160a01b03848116911614801590611d6957506000546001600160a01b03838116911614155b8015611d7d57506001600160a01b03821615155b8015611d975750600b546001600160a01b03838116911614155b8015611db15750600c546001600160a01b03838116911614155b15611e0d5760005b6001811015611e0b57601c54611dcf9082612291565b4303611df9576001600160a01b0383166000908152600660205260409020805460ff191660011790555b80611e0381612e3d565b915050611db9565b505b601e546301000000900460ff1615611ef057611e288261093e565b158015611e4d57506001600160a01b03831660009081526003602052604090205460ff165b80611e815750611e5c8361093e565b158015611e8157506001600160a01b03821660009081526003602052604090205460ff165b80611eb45750611e908361093e565b8015611eb457506001600160a01b03821660009081526003602052604090205460ff165b80611ee75750611ec38261093e565b8015611ee757506001600160a01b03831660009081526003602052604090205460ff165b611ef057600080fd5b6000611f0960115460125461229190919063ffffffff16565b90506000611f16306111a7565b601054601e5491925082101590640100000000900460ff16158015611f465750601e5465010000000000900460ff165b8015611f675750600c54600090611f65906001600160a01b03166111a7565b115b8015611f735750600083115b8015611f9857506001600160a01b03851660009081526005602052604090205460ff16155b8015611fbd57506001600160a01b03861660009081526005602052604090205460ff16155b8015611fd65750600c546001600160a01b038681169116145b8015611fdf5750805b15611fec57611fec612351565b6001600160a01b03861660009081526005602052604090205460ff168061202b57506001600160a01b03851660009081526005602052604090205460ff165b1561204e576000601481905560158190556120469080612291565b6016556121a4565b600c546001600160a01b039081169087160361207e57601754601481905560185460158190556120469190612291565b600c546001600160a01b03908116908616036120fd576019546014819055601b5460158190556120ae9190612291565b6016556001600160a01b03861660009081526006602052604090205460ff1680156120db575042601d5410155b156120f85760556014819055600a60158190556120469190612291565b6121a4565b6001600160a01b03861660009081526006602052604090205460ff161580612127575042601d5411155b6121995760405162461bcd60e51b815260206004820152603960248201527f45524332303a20536e69706572732063616e206e6f74207472616e736665722060448201527f74696c6c2070656e616c74792074696d65206973206f7665720000000000000060648201526084016108aa565b600060148190556015555b6121af8686866124fd565b505050505050565b600081848411156121db5760405162461bcd60e51b81526004016108aa9190612884565b505050900390565b6001600160a01b0383166122095760405162461bcd60e51b81526004016108aa90612c0f565b6001600160a01b03821661222f5760405162461bcd60e51b81526004016108aa90612c57565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611a368284612e91565b600d546122b59030906001600160a01b0316846121e3565b600d5460085460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612325573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061234a9190612ea4565b5050505050565b601e805464ff0000000019166401000000001790556000612371306111a7565b9050600061238c60125460115461229190919063ffffffff16565b905060006123a66002601254611a3d90919063ffffffff16565b905060006123b4848361269e565b9050476123c0826126aa565b60006123cc478361269e565b905060006123e98661104d60115485611a2a90919063ffffffff16565b905060006123f7838361269e565b60006011819055601281905560095460405192935090916001600160a01b039091169084908381818185875af1925050503d8060008114612454576040519150601f19603f3d011682016040523d82523d6000602084013e612459565b606091505b505090508160001415801561246d57508615155b1561247c5761247c878361229d565b6706f05b59d3b200004711156124e457600a546040516001600160a01b03909116904790600081818185875af1925050503d80600081146124d9576040519150601f19603f3d011682016040523d82523d6000602084013e6124de565b606091505b50909150505b5050601e805464ff000000001916905550505050505050565b601654156125fd576000612510826127fc565b9050600061251e838361269e565b905061252982612824565b6001600160a01b03851660009081526002602052604081208054859290612551908490612ed2565b90915550506001600160a01b0384166000908152600260205260408120805483929061257e908490612e91565b909155505030600090815260026020526040812080548492906125a2908490612e91565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125ee91815260200190565b60405180910390a35050505050565b6001600160a01b03831660009081526002602052604081208054839290612625908490612ed2565b90915550506001600160a01b03821660009081526002602052604081208054839290612652908490612e91565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161228491815260200190565b6000611a368284612ed2565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106126df576126df612e27565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275c9190612e0a565b8160018151811061276f5761276f612e27565b6001600160a01b039283166020918202929092010152600d5461279591309116846121e3565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906127ce908590600090869030904290600401612ee5565b600060405180830381600087803b1580156127e857600080fd5b505af11580156121af573d6000803e3d6000fd5b6000610938606461104d61281d60155460145461229190919063ffffffff16565b8590611a2a565b61283f60165461104d60145484611a2a90919063ffffffff16565b601160008282546128509190612e91565b909155505060165460155461286b919061104d908490611a2a565b6012600082825461287c9190612e91565b909155505050565b600060208083528351808285015260005b818110156128b157858101830151858201604001528201612895565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146110f157600080fd5b600080604083850312156128fa57600080fd5b8235612905816128d2565b946020939093013593505050565b60006020828403121561292557600080fd5b8135611a36816128d2565b803580151581146114d457600080fd5b60006020828403121561295257600080fd5b611a3682612930565b60008060006060848603121561297057600080fd5b833561297b816128d2565b9250602084013561298b816128d2565b929592945050506040919091013590565b600080604083850312156129af57600080fd5b82356129ba816128d2565b91506129c860208401612930565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612a1057612a106129d1565b604052919050565b600067ffffffffffffffff821115612a3257612a326129d1565b5060051b60200190565b600082601f830112612a4d57600080fd5b81356020612a62612a5d83612a18565b6129e7565b82815260059290921b84018101918181019086841115612a8157600080fd5b8286015b84811015612a9c5780358352918301918301612a85565b509695505050505050565b60008060408385031215612aba57600080fd5b823567ffffffffffffffff80821115612ad257600080fd5b818501915085601f830112612ae657600080fd5b81356020612af6612a5d83612a18565b82815260059290921b84018101918181019089841115612b1557600080fd5b948201945b83861015612b3c578535612b2d816128d2565b82529482019490820190612b1a565b96505086013592505080821115612b5257600080fd5b50612b5f85828601612a3c565b9150509250929050565b600060208284031215612b7b57600080fd5b5035919050565b60008060008060808587031215612b9857600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215612bc757600080fd5b8235612bd2816128d2565b91506020830135612be2816128d2565b809150509250929050565b60008060408385031215612c0057600080fd5b50508035926020909101359150565b60208082526028908201527f45524332303a2043616e206e6f7420617070726f76652066726f6d207a65726f604082015267206164647265737360c01b606082015260800190565b60208082526026908201527f45524332303a2043616e206e6f7420617070726f766520746f207a65726f206160408201526564647265737360d01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612cee578160001904821115612cd457612cd4612c9d565b80851615612ce157918102915b93841c9390800290612cb8565b509250929050565b600082612d0557506001610938565b81612d1257506000610938565b8160018114612d285760028114612d3257612d4e565b6001915050610938565b60ff841115612d4357612d43612c9d565b50506001821b610938565b5060208310610133831016604e8410600b8410161715612d71575081810a610938565b612d7b8383612cb3565b8060001904821115612d8f57612d8f612c9d565b029392505050565b6000611a3660ff841683612cf6565b6000816000190483118215151615612dc057612dc0612c9d565b500290565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060208284031215612e1c57600080fd5b8151611a36816128d2565b634e487b7160e01b600052603260045260246000fd5b600060018201612e4f57612e4f612c9d565b5060010190565b600082612e7357634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612e8a57600080fd5b5051919050565b8082018082111561093857610938612c9d565b600080600060608486031215612eb957600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561093857610938612c9d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612f355784516001600160a01b031683529383019391830191600101612f10565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a2043616e206e6f74207472616e736665722e20416d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220273090c8669e6056f3841628f25e82e0f9b9ccbe894353434c2c73d8c9c9480464736f6c63430008100033

Deployed Bytecode Sourcemap

18150:17202:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21229:98;;;;;;;;;;-1:-1:-1;21310:9:0;;;;;;;;;;;;-1:-1:-1;;;21310:9:0;;;;21229:98;;;;;;;:::i;:::-;;;;;;;;21934:397;;;;;;;;;;-1:-1:-1;21934:397:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;21934:397:0;1023:187:1;18800:40:0;;;;;;;;;;-1:-1:-1;18800:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;35126:223;;;;;;;;;;-1:-1:-1;35275:15:0;;35291;;35307:16;;35324;;35126:223;;;1698:25:1;;;1754:2;1739:18;;1732:34;;;;1782:18;;;1775:34;1840:2;1825:18;;1818:34;1685:3;1670:19;35126:223:0;1467:391:1;31152:337:0;;;;;;;;;;-1:-1:-1;31152:337:0;;;;;:::i;:::-;;:::i;21544:101::-;;;;;;;;;;;;;:::i;:::-;;;2009:25:1;;;1997:2;1982:18;21544:101:0;1863:177:1;34316:103:0;;;;;;;;;;-1:-1:-1;34316:103:0;;;;;:::i;:::-;;:::i;:::-;;19716:28;;;;;;;;;;-1:-1:-1;19716:28:0;;;;;;;;22878:348;;;;;;;;;;-1:-1:-1;22878:348:0;;;;;:::i;:::-;;:::i;21441:97::-;;;;;;;;;;-1:-1:-1;21441:97:0;;18416:2;2998:36:1;;2986:2;2971:18;21441:97:0;2856:184:1;33397:171:0;;;;;;;;;;-1:-1:-1;33397:171:0;;;;;:::i;:::-;;:::i;23667:1249::-;;;;;;;;;;;;;:::i;18847:37::-;;;;;;;;;;-1:-1:-1;18847:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;33892:158;;;;;;;;;;-1:-1:-1;33892:158:0;;;;;:::i;:::-;;:::i;23232:429::-;;;;;;;;;;-1:-1:-1;23232:429:0;;;;;:::i;:::-;;:::i;31938:149::-;;;;;;;;;;-1:-1:-1;31938:149:0;;;;;:::i;:::-;;:::i;19116:26::-;;;;;;;;;;-1:-1:-1;19116:26:0;;;;-1:-1:-1;;;;;19116:26:0;;;;;;-1:-1:-1;;;;;6201:32:1;;;6183:51;;6171:2;6156:18;19116:26:0;6037:203:1;33235:159:0;;;;;;;;;;-1:-1:-1;33235:159:0;;;;;:::i;:::-;;:::i;21651:122::-;;;;;;;;;;-1:-1:-1;21651:122:0;;;;;:::i;:::-;;:::i;764:148::-;;;;;;;;;;;;;:::i;19751:31::-;;;;;;;;;;-1:-1:-1;19751:31:0;;;;;;;;;;;34539:119;;;;;;;;;;-1:-1:-1;34539:119:0;;;;;:::i;:::-;;:::i;32093:686::-;;;;;;;;;;-1:-1:-1;32093:686:0;;;;;:::i;:::-;;:::i;19041:24::-;;;;;;;;;;-1:-1:-1;19041:24:0;;;;-1:-1:-1;;;;;19041:24:0;;;34425:108;;;;;;;;;;-1:-1:-1;34425:108:0;;;;;:::i;:::-;;:::i;540:87::-;;;;;;;;;;-1:-1:-1;586:7:0;613:6;-1:-1:-1;;;;;613:6:0;540:87;;33574:160;;;;;;;;;;-1:-1:-1;33574:160:0;;;;;:::i;:::-;;:::i;19789:24::-;;;;;;;;;;-1:-1:-1;19789:24:0;;;;;;;;;;;19072:37;;;;;;;;;;-1:-1:-1;19072:37:0;;;;-1:-1:-1;;;;;19072:37:0;;;21333:102;;;;;;;;;;-1:-1:-1;21416:11:0;;;;;;;;;;;;-1:-1:-1;;;21416:11:0;;;;21333:102;;19820:35;;;;;;;;;;-1:-1:-1;19820:35:0;;;;;;;;;;;34793:327;;;;;;;;;;-1:-1:-1;34793:327:0;;;;;:::i;:::-;;:::i;31643:126::-;;;;;;;;;;-1:-1:-1;31643:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;31733:28:0;31709:4;31733:28;;;:19;:28;;;;;;;;;31643:126;32785:282;;;;;;;;;;;;;:::i;22696:176::-;;;;;;;;;;-1:-1:-1;22696:176:0;;;;;:::i;:::-;;:::i;33740:146::-;;;;;;;;;;-1:-1:-1;33740:146:0;;;;;:::i;:::-;;:::i;21779:149::-;;;;;;;;;;-1:-1:-1;21779:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;21889:22:0;;;21862:7;21889:22;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;21779:149;19636:33;;;;;;;;;;;;;;;;34664:123;;;;;;;;;;-1:-1:-1;34664:123:0;;;;;:::i;:::-;;:::i;19676:31::-;;;;;;;;;;;;;;;;918:249;;;;;;;;;;-1:-1:-1;918:249:0;;;;;:::i;:::-;;:::i;34056:254::-;;;;;;;;;;-1:-1:-1;34056:254:0;;;;;:::i;:::-;;:::i;31775:157::-;;;;;;;;;;;;;:::i;33073:159::-;;;;;;;;;;-1:-1:-1;33073:159:0;;;;;:::i;:::-;;:::i;21934:397::-;22009:4;199:10;22026:79;;;;-1:-1:-1;;;22026:79:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;22124:21:0;;22116:72;;;;-1:-1:-1;;;22116:72:0;;;;;;;:::i;:::-;199:10;22199:29;;;;:15;:29;;;;;;;;-1:-1:-1;;;;;22199:38:0;;;;;;;;;;;;:47;;;22262:39;2009:25:1;;;22199:38:0;;199:10;22262:39;;1982:18:1;22262:39:0;;;;;;;-1:-1:-1;22319:4:0;21934:397;;;;;:::o;31152:337::-;31210:4;31389:20;;31276:66;31438:23;;;;;;:42;;-1:-1:-1;31465:15:0;;;31438:42;31430:51;31152:337;-1:-1:-1;;;;31152:337:0:o;21544:101::-;21599:7;18471:16;18416:2;18471;:16;:::i;:::-;18464:23;;:4;:23;:::i;:::-;21619:18;;21544:101;:::o;34316:103::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;34389:8:::1;:22:::0;;-1:-1:-1;;34389:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34316:103::o;22878:348::-;22976:4;22993:43;23010:6;23018:9;23029:6;22993:16;:43::i;:::-;23047:149;23063:6;199:10;23093:102;23135:6;23093:102;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23093:23:0;;;;;;:15;:23;;;;;;;;199:10;23093:37;;;;;;;;;;:41;:102::i;:::-;23047:15;:149::i;:::-;-1:-1:-1;23214:4:0;22878:348;;;;;:::o;33397:171::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33474:17:0;::::1;;::::0;;;:8:::1;:17;::::0;;;;;::::1;;33466:58;;;::::0;-1:-1:-1;;;33466:58:0;;10628:2:1;33466:58:0::1;::::0;::::1;10610:21:1::0;10667:2;10647:18;;;10640:30;10706;10686:18;;;10679:58;10754:18;;33466:58:0::1;10426:352:1::0;33466:58:0::1;-1:-1:-1::0;;;;;33535:17:0::1;33555:5;33535:17:::0;;;:8:::1;:17;::::0;;;;:25;;-1:-1:-1;;33535:25:0::1;::::0;;33397:171::o;23667:1249::-;23713:4;613:6;;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;23738:4:::1;::::0;;;::::1;;;23737:5;23729:45;;;::::0;-1:-1:-1;;;23729:45:0;;10985:2:1;23729:45:0::1;::::0;::::1;10967:21:1::0;11024:2;11004:18;;;10997:30;11063:29;11043:18;;;11036:57;11110:18;;23729:45:0::1;10783:351:1::0;23729:45:0::1;23806:12;23785:18;:33:::0;23848:27:::1;:15;23868:6;23848:19;:27::i;:::-;23829:16;:46:::0;23993:11:::1;:26:::0;;-1:-1:-1;;;;;;23993:26:0;;::::1;23939:42;23993:26:::0;;::::1;::::0;;;24030:11:::1;:56:::0;;;;::::1;24044:42;24030:56;::::0;;24097:41;:48;;-1:-1:-1;;24097:48:0;;::::1;23993:26:::0;24097:48;;::::1;::::0;;;24156:41;:48;;;::::1;::::0;::::1;::::0;;23886:31:::1;24215:41:::0;;;:19:::1;24097:41;24215::::0;;:48;;;;::::1;::::0;;::::1;::::0;;24274:65:::1;24298:4;23939:42:::0;18471:16:::1;18416:2;18471;:16;:::i;:::-;18464:23;::::0;:4:::1;:23;:::i;24274:65::-;24380:12;-1:-1:-1::0;;;;;24380:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24362:52:0::1;;24423:4;24430:12;-1:-1:-1::0;;;;;24430:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24362:88;::::0;-1:-1:-1;;;;;;24362:88:0::1;::::0;;;;;;-1:-1:-1;;;;;11625:15:1;;;24362:88:0::1;::::0;::::1;11607:34:1::0;11677:15;;11657:18;;;11650:43;11542:18;;24362:88:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24350:9;:100:::0;;-1:-1:-1;;;;;;24350:100:0::1;-1:-1:-1::0;;;;;24350:100:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;24461:39:0;;;:19:::1;:39;::::0;;;;;;;:46;;-1:-1:-1;;24461:46:0;;::::1;-1:-1:-1::0;24461:46:0;;::::1;::::0;;;24546:9;;;;::::1;24518:39:::0;;:19:::1;:39:::0;;;;;:46;;;;::::1;::::0;;::::1;::::0;;24583:21:::1;24575:82;;;::::0;-1:-1:-1;;;24575:82:0;;11906:2:1;24575:82:0::1;::::0;::::1;11888:21:1::0;11945:2;11925:18;;;11918:30;11984:34;11964:18;;;11957:62;-1:-1:-1;;;12035:18:1;;;12028:42;12087:19;;24575:82:0::1;11704:408:1::0;24575:82:0::1;24668:61;24681:24;24699:4;24681:9;:24::i;:::-;24707:21;24668:12;:61::i;:::-;24766:4;::::0;31052:16;:37;;-1:-1:-1;;;;;;31052:37:0;-1:-1:-1;;;;;24766:4:0;;::::1;31052:37:::0;;;;;-1:-1:-1;31100:31:0;;;:13;:31;;;;;:38;;-1:-1:-1;;31100:38:0;-1:-1:-1;31100:38:0;;;-1:-1:-1;;24782:11:0::1;:18:::0;;-1:-1:-1;;24875:11:0;;;;;-1:-1:-1;;23667:1249:0:o;33892:158::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33991:37:0;;;::::1;;::::0;;;:19:::1;:37;::::0;;;;:51;;-1:-1:-1;;33991:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33892:158::o;23232:429::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;23355:3:::1;23338:7;:14;:20;23330:87;;;::::0;-1:-1:-1;;;23330:87:0;;12319:2:1;23330:87:0::1;::::0;::::1;12301:21:1::0;12358:2;12338:18;;;12331:30;12397:34;12377:18;;;12370:62;-1:-1:-1;;;12448:18:1;;;12441:52;12510:19;;23330:87:0::1;12117:418:1::0;23330:87:0::1;23432:9;23428:226;23451:7;:14;23447:1;:18;23428:226;;;23486:14;23503:7;23511:1;23503:10;;;;;;;;:::i;:::-;;;;;;;23486:27;;23528:14;23545:36;23577:3;23545:27;23561:7;23569:1;23561:10;;;;;;;;:::i;:::-;;;;;;;18416:2;18471;:16;;;;:::i;:::-;18464:23;::::0;:4:::1;:23;:::i;:::-;23545:15:::0;::::1;:27::i;:::-;:31:::0;::::1;:36::i;:::-;23528:53:::0;-1:-1:-1;23596:46:0::1;199:10:::0;23627:6:::1;23635;23596:16;:46::i;:::-;23471:183;;23467:3;;;;;:::i;:::-;;;;23428:226;;;;23232:429:::0;;:::o;31938:149::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;32014:65:::1;32039:4;32046:7;586::::0;613:6;-1:-1:-1;;;;;613:6:0;;540:87;32046:7:::1;32075:3;32067:7:::0;18471:16:::1;18416:2;18471;:16;:::i;:::-;18464:23;::::0;:4:::1;:23;:::i;:::-;32055:19;;;;:::i;:::-;:23;;;;:::i;:::-;32014:16;:65::i;:::-;31938:149:::0;:::o;33235:159::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33309:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;33301:52;;;::::0;-1:-1:-1;;;33301:52:0;;13236:2:1;33301:52:0::1;::::0;::::1;13218:21:1::0;13275:2;13255:18;;;13248:30;13314:27;13294:18;;;13287:55;13359:18;;33301:52:0::1;13034:349:1::0;33301:52:0::1;-1:-1:-1::0;;;;;33364:14:0::1;33381:5;33364:14:::0;;;:5:::1;:14;::::0;;;;:22;;-1:-1:-1;;33364:22:0::1;::::0;;33235:159::o;21651:122::-;-1:-1:-1;;;;;21744:21:0;21717:7;21744:21;;;:12;:21;;;;;;;21651:122::o;764:148::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;871:1:::1;855:6:::0;;834:40:::1;::::0;-1:-1:-1;;;;;855:6:0;;::::1;::::0;834:40:::1;::::0;871:1;;834:40:::1;902:1;885:19:::0;;-1:-1:-1;;;;;;885:19:0::1;::::0;;764:148::o;34539:119::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;34621:15:::1;:29:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;34621:29:0;;::::1;::::0;;;::::1;::::0;;34539:119::o;32093:686::-;32170:4;613:6;;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;32205:2:::1;32194:7;:13;;32186:75;;;::::0;-1:-1:-1;;;32186:75:0;;13590:2:1;32186:75:0::1;::::0;::::1;13572:21:1::0;13629:2;13609:18;;;13602:30;13668:34;13648:18;;;13641:62;-1:-1:-1;;;13719:18:1;;;13712:47;13776:19;;32186:75:0::1;13388:413:1::0;32186:75:0::1;32318:9;::::0;32303:25:::1;::::0;-1:-1:-1;;;32303:25:0;;-1:-1:-1;;;;;32318:9:0;;::::1;32303:25;::::0;::::1;6183:51:1::0;32272:28:0::1;::::0;32303:4:::1;::::0;:14:::1;::::0;6156:18:1;;32303:25:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32272:56:::0;-1:-1:-1;32339:20:0::1;32362:44;32400:5;32362:33;32272:56:::0;32387:7;32362:24:::1;:33::i;:44::-;32339:67:::0;-1:-1:-1;32421:16:0;;32417:95:::1;;32470:9;::::0;32481:4:::1;::::0;32453:47:::1;::::0;-1:-1:-1;;;;;32470:9:0;;::::1;::::0;32481:4:::1;32487:12:::0;32453:16:::1;:47::i;:::-;32552:4;::::0;32542:15:::1;::::0;-1:-1:-1;;;;;32552:4:0::1;32542:9;:15::i;:::-;32522:17;:35:::0;32616:5:::1;18471:16;18416:2;18471;:16;:::i;:::-;18464:23;::::0;:4:::1;:23;:::i;:::-;32597:16;::::0;32611:2:::1;32597:16;:::i;:::-;:24;;;;:::i;:::-;32576:17;;:45;;32568:101;;;::::0;-1:-1:-1;;;32568:101:0;;14197:2:1;32568:101:0::1;::::0;::::1;14179:21:1::0;14236:2;14216:18;;;14209:30;14275:34;14255:18;;;14248:62;-1:-1:-1;;;14326:18:1;;;14319:41;14377:19;;32568:101:0::1;13995:407:1::0;32568:101:0::1;32717:9;::::0;32738:11:::1;::::0;;-1:-1:-1;;;;;;32738:11:0;;;;-1:-1:-1;;;;;32717:9:0;;::::1;::::0;;;32738::::1;::::0;:11:::1;::::0;;::::1;::::0;32680:19:::1;::::0;32738:11;;;;;;;32680:19;32717:9;32738:11;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;32767:4;32760:11;;;;;749:1;32093:686:::0;;;:::o;34425:108::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;34500:11:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;34500:25:0;;::::1;::::0;;;::::1;::::0;;34425:108::o;33574:160::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33675:37:0;;;::::1;;::::0;;;:19:::1;:37;::::0;;;;:51;;-1:-1:-1;;33675:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33574:160::o;34793:327::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;34943:15:::1;:33:::0;;;;34987:15:::1;:33:::0;;;;35031:16:::1;:35:::0;35077:16:::1;:35:::0;34793:327::o;32785:282::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;32840:23:::1;32866:24;32884:4;32866:9;:24::i;:::-;32840:50:::0;-1:-1:-1;32928:29:0::1;32951:5;32928:18;32944:1;18471:16;18416:2;18471;:16;:::i;32928:29::-;32909:15;:48;;32901:133;;;::::0;-1:-1:-1;;;32901:133:0;;14609:2:1;32901:133:0::1;::::0;::::1;14591:21:1::0;14648:2;14628:18;;;14621:30;14687:34;14667:18;;;14660:62;14758:34;14738:18;;;14731:62;-1:-1:-1;;;14809:19:1;;;14802:39;14858:19;;32901:133:0::1;14407:476:1::0;32901:133:0::1;33045:14;:12;:14::i;22696:176::-:0;22776:4;22793:49;199:10;22824:9;22835:6;22793:16;:49::i;:::-;-1:-1:-1;22860:4:0;22696:176;;;;:::o;33740:146::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33833:31:0;;;::::1;;::::0;;;:13:::1;:31;::::0;;;;:45;;-1:-1:-1;;33833:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33740:146::o;34664:123::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;34745:20:::1;:34:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;34745:34:0;;::::1;::::0;;;::::1;::::0;;34664:123::o;918:249::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1007:22:0;::::1;999:78;;;::::0;-1:-1:-1;;;999:78:0;;15090:2:1;999:78:0::1;::::0;::::1;15072:21:1::0;15129:2;15109:18;;;15102:30;15168:34;15148:18;;;15141:62;-1:-1:-1;;;15219:18:1;;;15212:41;15270:19;;999:78:0::1;14888:407:1::0;999:78:0::1;1114:6;::::0;;1093:38:::1;::::0;-1:-1:-1;;;;;1093:38:0;;::::1;::::0;1114:6;::::1;::::0;1093:38:::1;::::0;::::1;1142:6;:17:::0;;-1:-1:-1;;;;;;1142:17:0::1;-1:-1:-1::0;;;;;1142:17:0;;;::::1;::::0;;;::::1;::::0;;918:249::o;34056:254::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;34160:37:::1;34189:7:::0;34160:24:::1;34176:7:::0;18471:16:::1;18416:2;18471;:16;:::i;34160:37::-;34148:9;:49:::0;34228:27:::1;34251:3;34228:18;34244:1;18471:16;18416:2;18471;:16;:::i;34228:27::-;34216:9;;:39;;34208:94;;;::::0;-1:-1:-1;;;34208:94:0;;15502:2:1;34208:94:0::1;::::0;::::1;15484:21:1::0;15541:2;15521:18;;;15514:30;15580:34;15560:18;;;15553:62;-1:-1:-1;;;15631:18:1;;;15624:40;15681:19;;34208:94:0::1;15300:406:1::0;34208:94:0::1;34056:254:::0;;:::o;31775:157::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;31833:12:::1;613:6:::0;;31869:55:::1;::::0;-1:-1:-1;;;;;613:6:0;;;;31898:21:::1;::::0;31833:12;31869:55;31833:12;31869:55;31898:21;613:6;31869:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;31775:157:0:o;33073:159::-;586:7;613:6;-1:-1:-1;;;;;613:6:0;199:10;673:23;665:73;;;;-1:-1:-1;;;665:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;33145:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;;::::1;;33144:15;33136:56;;;::::0;-1:-1:-1;;;33136:56:0;;16123:2:1;33136:56:0::1;::::0;::::1;16105:21:1::0;16162:2;16142:18;;;16135:30;16201;16181:18;;;16174:58;16249:18;;33136:56:0::1;15921:352:1::0;33136:56:0::1;-1:-1:-1::0;;;;;33203:14:0::1;;::::0;;;:5:::1;:14;::::0;;;;:21;;-1:-1:-1;;33203:21:0::1;33220:4;33203:21;::::0;;33073:159::o;2743:98::-;2801:7;2828:5;2832:1;2828;:5;:::i;:::-;2821:12;2743:98;-1:-1:-1;;;2743:98:0:o;2847:::-;2905:7;2932:5;2936:1;2932;:5;:::i;24922:3038::-;-1:-1:-1;;;;;25018:18:0;;25010:68;;;;-1:-1:-1;;;25010:68:0;;16480:2:1;25010:68:0;;;16462:21:1;16519:2;16499:18;;;16492:30;16558:34;16538:18;;;16531:62;-1:-1:-1;;;16609:18:1;;;16602:35;16654:19;;25010:68:0;16278:401:1;25010:68:0;-1:-1:-1;;;;;25097:16:0;;25089:64;;;;-1:-1:-1;;;25089:64:0;;16886:2:1;25089:64:0;;;16868:21:1;16925:2;16905:18;;;16898:30;16964:34;16944:18;;;16937:62;-1:-1:-1;;;17015:18:1;;;17008:33;17058:19;;25089:64:0;16684:399:1;25089:64:0;25181:1;25172:6;:10;25164:71;;;;-1:-1:-1;;;25164:71:0;;17290:2:1;25164:71:0;;;17272:21:1;17329:2;17309:18;;;17302:30;17368:34;17348:18;;;17341:62;-1:-1:-1;;;17419:18:1;;;17412:46;17475:19;;25164:71:0;17088:412:1;25164:71:0;-1:-1:-1;;;;;25255:11:0;;;;;;:5;:11;;;;;;;;25254:12;25246:57;;;;-1:-1:-1;;;25246:57:0;;17707:2:1;25246:57:0;;;17689:21:1;;;17726:18;;;17719:30;17785:34;17765:18;;;17758:62;17837:18;;25246:57:0;17505:356:1;25246:57:0;25318:4;;;;;;;25314:116;;-1:-1:-1;;;;;25346:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;25369:17:0;;;;;;:13;:17;;;;;;;;25346:40;25338:80;;;;-1:-1:-1;;;25338:80:0;;18068:2:1;25338:80:0;;;18050:21:1;18107:2;18087:18;;;18080:30;18146:29;18126:18;;;18119:57;18193:18;;25338:80:0;17866:351:1;25338:80:0;25444:11;;;;;;;;:19;;:11;:19;:48;;;;-1:-1:-1;;;;;;25469:23:0;;;;;;:19;:23;;;;;;;;25467:25;25444:48;25440:178;;;25546:9;;25517:25;25535:6;25517:13;25527:2;25517:9;:13::i;:::-;:17;;:25::i;:::-;:38;;25509:97;;;;-1:-1:-1;;;25509:97:0;;18424:2:1;25509:97:0;;;18406:21:1;18463:2;18443:18;;;18436:30;18502:34;18482:18;;;18475:62;-1:-1:-1;;;18553:18:1;;;18546:44;18607:19;;25509:97:0;18222:410:1;25509:97:0;25631:8;;;;25628:350;;;586:7;613:6;-1:-1:-1;;;;;25659:15:0;;;613:6;;25659:15;;;;:32;;-1:-1:-1;586:7:0;613:6;-1:-1:-1;;;;;25678:13:0;;;613:6;;25678:13;;25659:32;:52;;;;-1:-1:-1;;;;;;25695:16:0;;;;25659:52;:66;;;;-1:-1:-1;25721:4:0;;-1:-1:-1;;;;;25715:10:0;;;25721:4;;25715:10;;25659:66;:85;;;;-1:-1:-1;25735:9:0;;-1:-1:-1;;;;;25729:15:0;;;25735:9;;25729:15;;25659:85;25655:312;;;25770:6;25765:187;25786:1;25782;:5;25765:187;;;25836:18;;:25;;25859:1;25836:22;:25::i;:::-;25820:12;:41;25817:116;;-1:-1:-1;;;;;25890:12:0;;;;;;:8;:12;;;;;:19;;-1:-1:-1;;25890:19:0;25905:4;25890:19;;;25817:116;25789:3;;;;:::i;:::-;;;;25765:187;;;;25655:312;25991:15;;;;;;;25988:331;;;26050:14;26061:2;26050:10;:14::i;:::-;26049:15;:44;;;;-1:-1:-1;;;;;;26068:25:0;;;;;;:19;:25;;;;;;;;26049:44;:109;;;;26115:16;26126:4;26115:10;:16::i;:::-;26114:17;:44;;;;-1:-1:-1;;;;;;26135:23:0;;;;;;:19;:23;;;;;;;;26114:44;26049:174;;;;26180:16;26191:4;26180:10;:16::i;:::-;:43;;;;-1:-1:-1;;;;;;26200:23:0;;;;;;:19;:23;;;;;;;;26180:43;26049:239;;;;26245:14;26256:2;26245:10;:14::i;:::-;:43;;;;-1:-1:-1;;;;;;26263:25:0;;;;;;:19;:25;;;;;;;;26245:43;26023:284;;;;;;26329:25;26357:36;26377:15;;26357;;:19;;:36;;;;:::i;:::-;26329:64;;26404:28;26435:24;26453:4;26435:9;:24::i;:::-;26525:10;;26551:16;;26404:55;;-1:-1:-1;26501:34:0;;;;26551:16;;;;;26550:17;:41;;;;-1:-1:-1;26571:20:0;;;;;;;26550:41;:69;;;;-1:-1:-1;26605:9:0;;26618:1;;26595:20;;-1:-1:-1;;;;;26605:9:0;26595;:20::i;:::-;:24;26550:69;:94;;;;;26643:1;26623:17;:21;26550:94;:116;;;;-1:-1:-1;;;;;;26649:17:0;;;;;;:13;:17;;;;;;;;26648:18;26550:116;:140;;;;-1:-1:-1;;;;;;26671:19:0;;;;;;:13;:19;;;;;;;;26670:20;26550:140;:159;;;;-1:-1:-1;26700:9:0;;-1:-1:-1;;;;;26694:15:0;;;26700:9;;26694:15;26550:159;:186;;;;;26713:23;26550:186;26546:237;;;26753:14;:12;:14::i;:::-;-1:-1:-1;;;;;26797:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;26820:17:0;;;;;;:13;:17;;;;;;;;26797:40;26793:1118;;;26869:1;26854:12;:16;;;26885:12;:16;;;26933:30;;26869:1;26933:16;:30::i;:::-;26916:14;:47;26793:1118;;;27008:9;;-1:-1:-1;;;;;27008:9:0;;;27000:17;;;;26996:904;;27053:15;;27038:12;:30;;;27102:15;;27087:12;:30;;;27153:36;;27053:15;27153:19;:36::i;26996:904::-;27220:9;;-1:-1:-1;;;;;27220:9:0;;;27214:15;;;;27210:690;;27265:16;;27250:12;:31;;;27315:16;;27300:12;:31;;;27367:38;;27265:16;27367:20;:38::i;:::-;27350:14;:55;-1:-1:-1;;;;;27427:14:0;;;;;;:8;:14;;;;;;;;:53;;;;;27465:15;27445:16;;:35;;27427:53;27424:227;;;27519:2;27504:12;:17;;;27559:2;27544:12;:17;;;27601:30;;27519:2;27601:16;:30::i;27424:227::-;27210:690;;;-1:-1:-1;;;;;27699:14:0;;;;;;:8;:14;;;;;;;;27698:15;;:54;;;27737:15;27717:16;;:35;;27698:54;27690:124;;;;-1:-1:-1;;;27690:124:0;;18839:2:1;27690:124:0;;;18821:21:1;18878:2;18858:18;;;18851:30;18917:34;18897:18;;;18890:62;18988:27;18968:18;;;18961:55;19033:19;;27690:124:0;18637:421:1;27690:124:0;27848:1;27833:12;:16;;;27868:12;:16;27210:690;27921:31;27935:4;27941:2;27945:6;27921:13;:31::i;:::-;24999:2961;;;24922:3038;;;:::o;3055:206::-;3141:7;3202:12;3194:6;;;;3186:29;;;;-1:-1:-1;;;3186:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3237:5:0;;;3055:206::o;22337:353::-;-1:-1:-1;;;;;22436:19:0;;22428:72;;;;-1:-1:-1;;;22428:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22519:21:0;;22511:72;;;;-1:-1:-1;;;22511:72:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22594:22:0;;;;;;;:15;:22;;;;;;;;:31;;;;;;;;;;;;;:40;;;22650:32;;2009:25:1;;;22650:32:0;;1982:18:1;22650:32:0;;;;;;;;22337:353;;;:::o;2535:98::-;2593:7;2620:5;2624:1;2620;:5;:::i;29551:369::-;29672:11;;29633:65;;29657:4;;-1:-1:-1;;;;;29672:11:0;29686;29633:15;:65::i;:::-;29709:11;;29855:16;;29709:203;;-1:-1:-1;;;29709:203:0;;29777:4;29709:203;;;19542:34:1;19592:18;;;19585:34;;;29709:11:0;19635:18:1;;;19628:34;;;19678:18;;;19671:34;-1:-1:-1;;;;;29855:16:0;;;19721:19:1;;;19714:44;29886:15:0;19774:19:1;;;19767:35;29709:11:0;;;:27;;29744:9;;19476:19:1;;29709:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29551:369;;:::o;27966:1106::-;19972:16;:23;;-1:-1:-1;;19972:23:0;;;;;;28048:24:::1;28066:4;28048:9;:24::i;:::-;28022:50;;28083:25;28111:36;28131:15;;28111;;:19;;:36;;;;:::i;:::-;28083:64;;28158:27;28188:22;28208:1;28188:15;;:19;;:22;;;;:::i;:::-;28158:52:::0;-1:-1:-1;28221:26:0::1;28250:40;:15:::0;28158:52;28250:19:::1;:40::i;:::-;28221:69:::0;-1:-1:-1;28329:21:0::1;28361:36;28221:69:::0;28361:16:::1;:36::i;:::-;28409:18;28430:44;:21;28456:17:::0;28430:25:::1;:44::i;:::-;28409:65;;28485:23;28511:54;28547:17;28511:31;28526:15;;28511:10;:14;;:31;;;;:::i;:54::-;28485:80:::0;-1:-1:-1;28576:23:0::1;28602:31;:10:::0;28485:80;28602:14:::1;:31::i;:::-;28662:1;28644:15;:19:::0;;;28674:15:::1;:19:::0;;;28730:16:::1;::::0;28722:58:::1;::::0;28576:57;;-1:-1:-1;28662:1:0;;-1:-1:-1;;;;;28730:16:0;;::::1;::::0;28760:15;;28662:1;28722:58;28662:1;28722:58;28760:15;28730:16;28722:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28704:76;;;28794:15;28813:1;28794:20;;:48;;;;-1:-1:-1::0;28818:24:0;;::::1;28794:48;28791:130;;;28859:50;28872:19;28893:15;28859:12;:50::i;:::-;28958:8;28934:21;:32;28931:134;;;29003:10;::::0;28995:58:::1;::::0;-1:-1:-1;;;;;29003:10:0;;::::1;::::0;29027:21:::1;::::0;28995:58:::1;::::0;;;29027:21;29003:10;28995:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;28982:71:0;;-1:-1:-1;;28931:134:0::1;-1:-1:-1::0;;20018:16:0;:24;;-1:-1:-1;;20018:24:0;;;-1:-1:-1;;;;;;;27966:1106:0:o;30299:673::-;30394:14;;:19;30391:574;;30429:17;30449:20;30462:6;30449:12;:20::i;:::-;30429:40;-1:-1:-1;30484:22:0;30509:21;:6;30429:40;30509:10;:21::i;:::-;30484:46;;30545:25;30560:9;30545:14;:25::i;:::-;-1:-1:-1;;;;;30585:20:0;;;;;;:12;:20;;;;;:30;;30609:6;;30585:20;:30;;30609:6;;30585:30;:::i;:::-;;;;-1:-1:-1;;;;;;;30630:23:0;;;;;;:12;:23;;;;;:41;;30657:14;;30630:23;:41;;30657:14;;30630:41;:::i;:::-;;;;-1:-1:-1;;30707:4:0;30686:27;;;;:12;:27;;;;;:40;;30717:9;;30686:27;:40;;30717:9;;30686:40;:::i;:::-;;;;;;;;30763:9;-1:-1:-1;;;;;30746:43:0;30755:6;-1:-1:-1;;;;;30746:43:0;;30774:14;30746:43;;;;2009:25:1;;1997:2;1982:18;;1863:177;30746:43:0;;;;;;;;30414:387;;23428:226:::1;23232:429:::0;;:::o;30391:574::-;-1:-1:-1;;;;;30820:20:0;;;;;;:12;:20;;;;;:30;;30844:6;;30820:20;:30;;30844:6;;30820:30;:::i;:::-;;;;-1:-1:-1;;;;;;;30865:23:0;;;;;;:12;:23;;;;;:33;;30892:6;;30865:23;:33;;30892:6;;30865:33;:::i;:::-;;;;;;;;30935:9;-1:-1:-1;;;;;30918:35:0;30927:6;-1:-1:-1;;;;;30918:35:0;;30946:6;30918:35;;;;2009:25:1;;1997:2;1982:18;;1863:177;2639:98:0;2697:7;2724:5;2728:1;2724;:5;:::i;29078:467::-;29169:16;;;29183:1;29169:16;;;;;;;;29145:21;;29169:16;;;;;;;;;;-1:-1:-1;29169:16:0;29145:40;;29214:4;29196;29201:1;29196:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29196:23:0;;;:7;;;;;;;;;;:23;;;;29240:11;;:18;;;-1:-1:-1;;;29240:18:0;;;;:11;;;;;:16;;:18;;;;;29196:7;;29240:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29230:4;29235:1;29230:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29230:28:0;;;:7;;;;;;;;;:28;29308:11;;29269:65;;29293:4;;29308:11;29322;29269:15;:65::i;:::-;29345:11;;:192;;-1:-1:-1;;;29345:192:0;;-1:-1:-1;;;;;29345:11:0;;;;:62;;:192;;29422:11;;29345;;29464:4;;29491;;29511:15;;29345:192;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29926:147;29987:7;30014:51;30061:3;30014:42;30025:30;30042:12;;30025;;:16;;:30;;;;:::i;:::-;30014:6;;:10;:42::i;30079:214::-;30161:47;30193:14;;30161:27;30175:12;;30161:9;:13;;:27;;;;:::i;:47::-;30142:15;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;30270:14:0;;30252:12;;30238:47;;30270:14;30238:27;;:9;;:13;:27::i;:47::-;30219:15;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;;;30079:214:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;2045:160::-;2110:20;;2166:13;;2159:21;2149:32;;2139:60;;2195:1;2192;2185:12;2210:180;2266:6;2319:2;2307:9;2298:7;2294:23;2290:32;2287:52;;;2335:1;2332;2325:12;2287:52;2358:26;2374:9;2358:26;:::i;2395:456::-;2472:6;2480;2488;2541:2;2529:9;2520:7;2516:23;2512:32;2509:52;;;2557:1;2554;2547:12;2509:52;2596:9;2583:23;2615:31;2640:5;2615:31;:::i;:::-;2665:5;-1:-1:-1;2722:2:1;2707:18;;2694:32;2735:33;2694:32;2735:33;:::i;:::-;2395:456;;2787:7;;-1:-1:-1;;;2841:2:1;2826:18;;;;2813:32;;2395:456::o;3045:315::-;3110:6;3118;3171:2;3159:9;3150:7;3146:23;3142:32;3139:52;;;3187:1;3184;3177:12;3139:52;3226:9;3213:23;3245:31;3270:5;3245:31;:::i;:::-;3295:5;-1:-1:-1;3319:35:1;3350:2;3335:18;;3319:35;:::i;:::-;3309:45;;3045:315;;;;;:::o;3365:127::-;3426:10;3421:3;3417:20;3414:1;3407:31;3457:4;3454:1;3447:15;3481:4;3478:1;3471:15;3497:275;3568:2;3562:9;3633:2;3614:13;;-1:-1:-1;;3610:27:1;3598:40;;3668:18;3653:34;;3689:22;;;3650:62;3647:88;;;3715:18;;:::i;:::-;3751:2;3744:22;3497:275;;-1:-1:-1;3497:275:1:o;3777:183::-;3837:4;3870:18;3862:6;3859:30;3856:56;;;3892:18;;:::i;:::-;-1:-1:-1;3937:1:1;3933:14;3949:4;3929:25;;3777:183::o;3965:662::-;4019:5;4072:3;4065:4;4057:6;4053:17;4049:27;4039:55;;4090:1;4087;4080:12;4039:55;4126:6;4113:20;4152:4;4176:60;4192:43;4232:2;4192:43;:::i;:::-;4176:60;:::i;:::-;4270:15;;;4356:1;4352:10;;;;4340:23;;4336:32;;;4301:12;;;;4380:15;;;4377:35;;;4408:1;4405;4398:12;4377:35;4444:2;4436:6;4432:15;4456:142;4472:6;4467:3;4464:15;4456:142;;;4538:17;;4526:30;;4576:12;;;;4489;;4456:142;;;-1:-1:-1;4616:5:1;3965:662;-1:-1:-1;;;;;;3965:662:1:o;4632:1215::-;4750:6;4758;4811:2;4799:9;4790:7;4786:23;4782:32;4779:52;;;4827:1;4824;4817:12;4779:52;4867:9;4854:23;4896:18;4937:2;4929:6;4926:14;4923:34;;;4953:1;4950;4943:12;4923:34;4991:6;4980:9;4976:22;4966:32;;5036:7;5029:4;5025:2;5021:13;5017:27;5007:55;;5058:1;5055;5048:12;5007:55;5094:2;5081:16;5116:4;5140:60;5156:43;5196:2;5156:43;:::i;5140:60::-;5234:15;;;5316:1;5312:10;;;;5304:19;;5300:28;;;5265:12;;;;5340:19;;;5337:39;;;5372:1;5369;5362:12;5337:39;5396:11;;;;5416:217;5432:6;5427:3;5424:15;5416:217;;;5512:3;5499:17;5529:31;5554:5;5529:31;:::i;:::-;5573:18;;5449:12;;;;5611;;;;5416:217;;;5652:5;-1:-1:-1;;5695:18:1;;5682:32;;-1:-1:-1;;5726:16:1;;;5723:36;;;5755:1;5752;5745:12;5723:36;;5778:63;5833:7;5822:8;5811:9;5807:24;5778:63;:::i;:::-;5768:73;;;4632:1215;;;;;:::o;5852:180::-;5911:6;5964:2;5952:9;5943:7;5939:23;5935:32;5932:52;;;5980:1;5977;5970:12;5932:52;-1:-1:-1;6003:23:1;;5852:180;-1:-1:-1;5852:180:1:o;6480:385::-;6566:6;6574;6582;6590;6643:3;6631:9;6622:7;6618:23;6614:33;6611:53;;;6660:1;6657;6650:12;6611:53;-1:-1:-1;;6683:23:1;;;6753:2;6738:18;;6725:32;;-1:-1:-1;6804:2:1;6789:18;;6776:32;;6855:2;6840:18;6827:32;;-1:-1:-1;6480:385:1;-1:-1:-1;6480:385:1:o;6870:388::-;6938:6;6946;6999:2;6987:9;6978:7;6974:23;6970:32;6967:52;;;7015:1;7012;7005:12;6967:52;7054:9;7041:23;7073:31;7098:5;7073:31;:::i;:::-;7123:5;-1:-1:-1;7180:2:1;7165:18;;7152:32;7193:33;7152:32;7193:33;:::i;:::-;7245:7;7235:17;;;6870:388;;;;;:::o;7263:248::-;7331:6;7339;7392:2;7380:9;7371:7;7367:23;7363:32;7360:52;;;7408:1;7405;7398:12;7360:52;-1:-1:-1;;7431:23:1;;;7501:2;7486:18;;;7473:32;;-1:-1:-1;7263:248:1:o;7516:404::-;7718:2;7700:21;;;7757:2;7737:18;;;7730:30;7796:34;7791:2;7776:18;;7769:62;-1:-1:-1;;;7862:2:1;7847:18;;7840:38;7910:3;7895:19;;7516:404::o;7925:402::-;8127:2;8109:21;;;8166:2;8146:18;;;8139:30;8205:34;8200:2;8185:18;;8178:62;-1:-1:-1;;;8271:2:1;8256:18;;8249:36;8317:3;8302:19;;7925:402::o;8332:127::-;8393:10;8388:3;8384:20;8381:1;8374:31;8424:4;8421:1;8414:15;8448:4;8445:1;8438:15;8464:422;8553:1;8596:5;8553:1;8610:270;8631:7;8621:8;8618:21;8610:270;;;8690:4;8686:1;8682:6;8678:17;8672:4;8669:27;8666:53;;;8699:18;;:::i;:::-;8749:7;8739:8;8735:22;8732:55;;;8769:16;;;;8732:55;8848:22;;;;8808:15;;;;8610:270;;;8614:3;8464:422;;;;;:::o;8891:806::-;8940:5;8970:8;8960:80;;-1:-1:-1;9011:1:1;9025:5;;8960:80;9059:4;9049:76;;-1:-1:-1;9096:1:1;9110:5;;9049:76;9141:4;9159:1;9154:59;;;;9227:1;9222:130;;;;9134:218;;9154:59;9184:1;9175:10;;9198:5;;;9222:130;9259:3;9249:8;9246:17;9243:43;;;9266:18;;:::i;:::-;-1:-1:-1;;9322:1:1;9308:16;;9337:5;;9134:218;;9436:2;9426:8;9423:16;9417:3;9411:4;9408:13;9404:36;9398:2;9388:8;9385:16;9380:2;9374:4;9371:12;9367:35;9364:77;9361:159;;;-1:-1:-1;9473:19:1;;;9505:5;;9361:159;9552:34;9577:8;9571:4;9552:34;:::i;:::-;9622:6;9618:1;9614:6;9610:19;9601:7;9598:32;9595:58;;;9633:18;;:::i;:::-;9671:20;;8891:806;-1:-1:-1;;;8891:806:1:o;9702:140::-;9760:5;9789:47;9830:4;9820:8;9816:19;9810:4;9789:47;:::i;9847:168::-;9887:7;9953:1;9949;9945:6;9941:14;9938:1;9935:21;9930:1;9923:9;9916:17;9912:45;9909:71;;;9960:18;;:::i;:::-;-1:-1:-1;10000:9:1;;9847:168::o;10020:401::-;10222:2;10204:21;;;10261:2;10241:18;;;10234:30;10300:34;10295:2;10280:18;;10273:62;-1:-1:-1;;;10366:2:1;10351:18;;10344:35;10411:3;10396:19;;10020:401::o;11139:251::-;11209:6;11262:2;11250:9;11241:7;11237:23;11233:32;11230:52;;;11278:1;11275;11268:12;11230:52;11310:9;11304:16;11329:31;11354:5;11329:31;:::i;12540:127::-;12601:10;12596:3;12592:20;12589:1;12582:31;12632:4;12629:1;12622:15;12656:4;12653:1;12646:15;12672:135;12711:3;12732:17;;;12729:43;;12752:18;;:::i;:::-;-1:-1:-1;12799:1:1;12788:13;;12672:135::o;12812:217::-;12852:1;12878;12868:132;;12922:10;12917:3;12913:20;12910:1;12903:31;12957:4;12954:1;12947:15;12985:4;12982:1;12975:15;12868:132;-1:-1:-1;13014:9:1;;12812:217::o;13806:184::-;13876:6;13929:2;13917:9;13908:7;13904:23;13900:32;13897:52;;;13945:1;13942;13935:12;13897:52;-1:-1:-1;13968:16:1;;13806:184;-1:-1:-1;13806:184:1:o;19063:125::-;19128:9;;;19149:10;;;19146:36;;;19162:18;;:::i;19813:306::-;19901:6;19909;19917;19970:2;19958:9;19949:7;19945:23;19941:32;19938:52;;;19986:1;19983;19976:12;19938:52;20015:9;20009:16;19999:26;;20065:2;20054:9;20050:18;20044:25;20034:35;;20109:2;20098:9;20094:18;20088:25;20078:35;;19813:306;;;;;:::o;20124:128::-;20191:9;;;20212:11;;;20209:37;;;20226:18;;:::i;20257:980::-;20519:4;20567:3;20556:9;20552:19;20598:6;20587:9;20580:25;20624:2;20662:6;20657:2;20646:9;20642:18;20635:34;20705:3;20700:2;20689:9;20685:18;20678:31;20729:6;20764;20758:13;20795:6;20787;20780:22;20833:3;20822:9;20818:19;20811:26;;20872:2;20864:6;20860:15;20846:29;;20893:1;20903:195;20917:6;20914:1;20911:13;20903:195;;;20982:13;;-1:-1:-1;;;;;20978:39:1;20966:52;;21073:15;;;;21038:12;;;;21014:1;20932:9;20903:195;;;-1:-1:-1;;;;;;;21154:32:1;;;;21149:2;21134:18;;21127:60;-1:-1:-1;;;21218:3:1;21203:19;21196:35;21115:3;20257:980;-1:-1:-1;;;20257:980:1:o

Swarm Source

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